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.ContentBundle;
|
||||||
import com.arsdigita.cms.ContentItem;
|
import com.arsdigita.cms.ContentItem;
|
||||||
|
import com.arsdigita.cms.CustomCopy;
|
||||||
|
import com.arsdigita.cms.ItemCopier;
|
||||||
import com.arsdigita.domain.DataObjectNotFoundException;
|
import com.arsdigita.domain.DataObjectNotFoundException;
|
||||||
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.DataObject;
|
import com.arsdigita.persistence.DataObject;
|
||||||
import com.arsdigita.persistence.OID;
|
import com.arsdigita.persistence.OID;
|
||||||
|
import com.arsdigita.persistence.metadata.Property;
|
||||||
import com.arsdigita.util.Assert;
|
import com.arsdigita.util.Assert;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
|
|
@ -106,4 +110,79 @@ public class GenericOrganizationalUnitBundle extends ContentBundle {
|
||||||
public boolean hasContacts() {
|
public boolean hasContacts() {
|
||||||
return !this.getContacts().isEmpty();
|
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);
|
createContactAssoc(contacts);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} else if ("organizationalunit".equals(attribute)) {
|
||||||
|
final DataCollection orgaunits = (DataCollection) personBundle.
|
||||||
|
get("organizationalunit");
|
||||||
|
|
||||||
|
while (orgaunits.next()) {
|
||||||
|
createOrgaUnitAssoc(orgaunits);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return super.copyProperty(source, property, copier);
|
return super.copyProperty(source, property, copier);
|
||||||
|
|
@ -127,4 +136,25 @@ public class GenericPersonBundle
|
||||||
link.save();
|
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