import nl.strohalm.cyclos.entities.customization.documents.DynamicDocument; //导入方法依赖的package包/类
@Override
public DynamicDocument saveDynamic(DynamicDocument document) {
validate(document, false);
// Store the pages
final DocumentPage formPage = document.getFormPage();
final DocumentPage documentPage = document.getDocumentPage();
final boolean isInsert = document.isTransient();
if (isInsert) {
// Save the document without pages
document.setFormPage(null);
document.setDocumentPage(null);
AdminGroup group = (AdminGroup) groupService.load(LoggedUser.group().getId(), SystemGroup.Relationships.DOCUMENTS);
document.addGroup(group);
document = documentDao.insert(document);
// Add the document to the group
group.getDocuments().add(document);
// Ensure the group have the adminMemberDocuments.details permission
if (!group.getPermissions().contains(AdminMemberPermission.DOCUMENTS_DETAILS)) {
group.getPermissions().add(AdminMemberPermission.DOCUMENTS_DETAILS);
}
// Update the group
group = groupService.update(group, false);
} else {
// Update collections of groups and broker groups
final Document loadedDocument = documentDao.load(document.getId(), Document.Relationships.GROUPS, Document.Relationships.BROKER_GROUPS);
final Collection loadedGroups = loadedDocument.getGroups();
final Collection loadedBrokerGroups = loadedDocument.getBrokerGroups();
document.setGroups(loadedGroups);
document.setBrokerGroups(loadedBrokerGroups);
// Update document
document = documentDao.update(document);
}
// Save the pages
if (formPage != null) {
formPage.setDocument(document);
formPage.setName("Form page of " + document.getName());
document.setFormPage(save(formPage));
}
documentPage.setDocument(document);
documentPage.setName("Document page of " + document.getName());
document.setDocumentPage(save(documentPage));
// Update the document with the pages
if (isInsert) {
document = documentDao.update(document);
}
return document;
}