Publizieren Assoziation GenericOrganizationalUnit <-> GenericPerson
git-svn-id: https://svn.libreccm.org/ccm/trunk@1563 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
66eddde804
commit
ac746fde45
|
|
@ -2,10 +2,14 @@ package com.arsdigita.cms.contenttypes;
|
|||
|
||||
import com.arsdigita.cms.ContentBundle;
|
||||
import com.arsdigita.cms.ContentItem;
|
||||
import com.arsdigita.cms.CustomCopy;
|
||||
import com.arsdigita.cms.ItemCopier;
|
||||
import com.arsdigita.domain.DataObjectNotFoundException;
|
||||
import com.arsdigita.domain.DomainObjectFactory;
|
||||
import com.arsdigita.persistence.DataCollection;
|
||||
import com.arsdigita.persistence.DataObject;
|
||||
import com.arsdigita.persistence.OID;
|
||||
import com.arsdigita.persistence.metadata.Property;
|
||||
import com.arsdigita.util.Assert;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
|
|
@ -106,4 +110,79 @@ public class GenericOrganizationalUnitBundle extends ContentBundle {
|
|||
public boolean hasContacts() {
|
||||
return !this.getContacts().isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean copyProperty(final CustomCopy source,
|
||||
final Property property,
|
||||
final ItemCopier copier) {
|
||||
final String attribute = property.getName();
|
||||
if (copier.getCopyType() == ItemCopier.VERSION_COPY) {
|
||||
final GenericOrganizationalUnitBundle orgaBundle = (GenericOrganizationalUnitBundle) source;
|
||||
|
||||
if (CONTACTS.equals(attribute)) {
|
||||
final DataCollection contacts = (DataCollection) orgaBundle.get(
|
||||
CONTACTS);
|
||||
|
||||
while (contacts.next()) {
|
||||
createContactAssoc(contacts);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else if (PERSONS.equals(attribute)) {
|
||||
final DataCollection persons = (DataCollection) orgaBundle.get(
|
||||
PERSONS);
|
||||
|
||||
while (persons.next()) {
|
||||
createPersonAssoc(persons);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return super.copyProperty(source, property, copier);
|
||||
}
|
||||
} else {
|
||||
return super.copyProperty(source, property, copier);
|
||||
}
|
||||
}
|
||||
|
||||
private void createContactAssoc(final DataCollection contacts) {
|
||||
final GenericContactBundle draftContact = (GenericContactBundle) DomainObjectFactory.
|
||||
newInstance(contacts.getDataObject());
|
||||
final GenericContactBundle liveContact = (GenericContactBundle) draftContact.
|
||||
getLiveVersion();
|
||||
|
||||
if (liveContact != null) {
|
||||
final DataObject link = add(CONTACTS, liveContact);
|
||||
|
||||
link.set(GenericOrganizationalUnitContactCollection.CONTACT_TYPE,
|
||||
contacts.get(
|
||||
GenericOrganizationalUnitContactCollection.LINK_CONTACT_TYPE));
|
||||
link.set(GenericOrganizationalUnitContactCollection.CONTACT_ORDER,
|
||||
contacts.get(
|
||||
GenericOrganizationalUnitContactCollection.LINK_CONTACT_ORDER));
|
||||
|
||||
link.save();
|
||||
}
|
||||
}
|
||||
|
||||
private void createPersonAssoc(final DataCollection persons) {
|
||||
final GenericPersonBundle draftPerson = (GenericPersonBundle) DomainObjectFactory.
|
||||
newInstance(persons.getDataObject());
|
||||
final GenericPersonBundle livePerson = (GenericPersonBundle) draftPerson.
|
||||
getLiveVersion();
|
||||
|
||||
if (livePerson != null) {
|
||||
final DataObject link = add(PERSONS, livePerson);
|
||||
|
||||
link.set(GenericOrganizationalUnitPersonCollection.PERSON_ROLE,
|
||||
persons.get(
|
||||
GenericOrganizationalUnitPersonCollection.LINK_PERSON_ROLE));
|
||||
link.set(GenericOrganizationalUnitPersonCollection.STATUS,
|
||||
persons.get(
|
||||
GenericOrganizationalUnitPersonCollection.LINK_STATUS));
|
||||
|
||||
link.save();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,6 +99,15 @@ public class GenericPersonBundle
|
|||
createContactAssoc(contacts);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else if ("organizationalunit".equals(attribute)) {
|
||||
final DataCollection orgaunits = (DataCollection) personBundle.
|
||||
get("organizationalunit");
|
||||
|
||||
while (orgaunits.next()) {
|
||||
createOrgaUnitAssoc(orgaunits);
|
||||
}
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return super.copyProperty(source, property, copier);
|
||||
|
|
@ -127,4 +136,25 @@ public class GenericPersonBundle
|
|||
link.save();
|
||||
}
|
||||
}
|
||||
|
||||
private void createOrgaUnitAssoc(final DataCollection orgaunits) {
|
||||
final GenericOrganizationalUnitBundle draftOrga = (GenericOrganizationalUnitBundle) DomainObjectFactory.
|
||||
newInstance(orgaunits.getDataObject());
|
||||
final GenericOrganizationalUnitBundle liveOrga = (GenericOrganizationalUnitBundle) draftOrga.
|
||||
getLiveVersion();
|
||||
|
||||
if (liveOrga != null) {
|
||||
final DataObject link = add("organizatialunit", liveOrga);
|
||||
|
||||
link.set(GenericOrganizationalUnitPersonCollection.PERSON_ROLE,
|
||||
orgaunits.get(
|
||||
GenericOrganizationalUnitPersonCollection.LINK_PERSON_ROLE));
|
||||
link.set(GenericOrganizationalUnitPersonCollection.STATUS,
|
||||
orgaunits.get(
|
||||
GenericOrganizationalUnitPersonCollection.LINK_STATUS));
|
||||
|
||||
link.save();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue