Search in sources :

Example 1 with RassSubObjectDefinition

use of edu.cornell.kfs.rass.batch.RassSubObjectDefinition in project cu-kfs by CU-CommunityApps.

the class RassUpdateServiceImpl method addFillerSubObjectsToListOnOldBusinessObjectIfNeeded.

protected <R extends PersistableBusinessObject> void addFillerSubObjectsToListOnOldBusinessObjectIfNeeded(R oldBusinessObject, R newBusinessObject, RassListPropertyDefinition listPropertyDefinition) {
    String listPropertyName = listPropertyDefinition.getBoPropertyName();
    List<Object> oldList = ObjectPropertyUtils.getPropertyValue(oldBusinessObject, listPropertyName);
    List<Object> newList = ObjectPropertyUtils.getPropertyValue(newBusinessObject, listPropertyName);
    if (oldList.size() < newList.size()) {
        RassSubObjectDefinition subObjectDefinition = listPropertyDefinition.getSubObjectDefinition();
        Class<? extends PersistableBusinessObject> subObjectClass = subObjectDefinition.getSubObjectClass();
        for (int i = oldList.size(); i < newList.size(); i++) {
            PersistableBusinessObject minimalSubObject = createMinimalObject(subObjectClass);
            oldList.add(minimalSubObject);
        }
    }
}
Also used : PersistableBusinessObject(org.kuali.kfs.krad.bo.PersistableBusinessObject) RassSubObjectDefinition(edu.cornell.kfs.rass.batch.RassSubObjectDefinition) RassXmlObject(edu.cornell.kfs.rass.batch.xml.RassXmlObject) PersistableBusinessObject(org.kuali.kfs.krad.bo.PersistableBusinessObject)

Example 2 with RassSubObjectDefinition

use of edu.cornell.kfs.rass.batch.RassSubObjectDefinition in project cu-kfs by CU-CommunityApps.

the class RassUpdateServiceImpl method mergeBusinessObjectListProperty.

protected void mergeBusinessObjectListProperty(Object businessObject, RassListPropertyDefinition listPropertyMapping, List<?> newSubObjects) {
    RassSubObjectDefinition subObjectDefinition = listPropertyMapping.getSubObjectDefinition();
    List<Object> existingList = ObjectPropertyUtils.getPropertyValue(businessObject, listPropertyMapping.getBoPropertyName());
    Set<Integer> indexesOfSubObjectsToInactivate = IntStream.range(0, existingList.size()).mapToObj(Integer::valueOf).collect(Collectors.toCollection(HashSet::new));
    for (Object newSubObject : newSubObjects) {
        int i = 0;
        while (i < existingList.size() && !subObjectPrimaryKeysMatch(subObjectDefinition, existingList.get(i), newSubObject)) {
            i++;
        }
        if (i < existingList.size()) {
            mergeNonPrimaryKeyUpdatesIntoExistingSubObject(subObjectDefinition, existingList.get(i), newSubObject);
            indexesOfSubObjectsToInactivate.remove(i);
        } else {
            existingList.add(newSubObject);
        }
    }
    for (Integer indexOfObjectToInactivate : indexesOfSubObjectsToInactivate) {
        Object existingSubObject = existingList.get(indexOfObjectToInactivate);
        if (existingSubObject instanceof MutableInactivatable) {
            ((MutableInactivatable) existingSubObject).setActive(false);
        }
        if (existingSubObject instanceof Primaryable && StringUtils.isNotBlank(subObjectDefinition.getPrimaryIndicatorPropertyName())) {
            ObjectPropertyUtils.setPropertyValue(existingSubObject, subObjectDefinition.getPrimaryIndicatorPropertyName(), Boolean.FALSE);
        }
    }
}
Also used : RassSubObjectDefinition(edu.cornell.kfs.rass.batch.RassSubObjectDefinition) Primaryable(org.kuali.kfs.module.cg.businessobject.Primaryable) RassXmlObject(edu.cornell.kfs.rass.batch.xml.RassXmlObject) PersistableBusinessObject(org.kuali.kfs.krad.bo.PersistableBusinessObject) MutableInactivatable(org.kuali.kfs.core.api.mo.common.active.MutableInactivatable)

Aggregations

RassSubObjectDefinition (edu.cornell.kfs.rass.batch.RassSubObjectDefinition)2 RassXmlObject (edu.cornell.kfs.rass.batch.xml.RassXmlObject)2 PersistableBusinessObject (org.kuali.kfs.krad.bo.PersistableBusinessObject)2 MutableInactivatable (org.kuali.kfs.core.api.mo.common.active.MutableInactivatable)1 Primaryable (org.kuali.kfs.module.cg.businessobject.Primaryable)1