Search in sources :

Example 1 with Primaryable

use of org.kuali.kfs.module.cg.businessobject.Primaryable 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)

Example 2 with Primaryable

use of org.kuali.kfs.module.cg.businessobject.Primaryable in project cu-kfs by CU-CommunityApps.

the class RassServiceImplTest method assertProjectDirectorsWereUpdatedAsExpected.

private void assertProjectDirectorsWereUpdatedAsExpected(RassXmlAwardEntryFixture expectedAwardOrProposal, List<? extends CGProjectDirector> actualDirectors, int i) {
    List<RassXMLAwardPiCoPiEntryFixture> expectedDirectors = expectedAwardOrProposal.piFixtures;
    assertEquals("Wrong number of directors at index " + i, expectedDirectors.size(), actualDirectors.size());
    for (int j = 0; j < expectedDirectors.size(); j++) {
        String multiIndex = i + KFSConstants.COMMA + j;
        RassXMLAwardPiCoPiEntryFixture expectedDirector = expectedDirectors.get(j);
        CGProjectDirector actualDirector = actualDirectors.get(j);
        assertEquals("Wrong proposal number for director at index " + multiIndex, expectedAwardOrProposal.proposalNumber, actualDirector.getProposalNumber());
        assertEquals("Wrong principal ID/name for director at index " + multiIndex + " in spite of principalId/principalName equivalency for this test scenario", expectedDirector.projectDirectorPrincipalName, actualDirector.getPrincipalId());
        assertTrue("A primary director indicator should have been supported for director at index " + multiIndex, actualDirector instanceof Primaryable);
        assertEquals("Wrong primary director indicator for director at index " + multiIndex, expectedDirector.getNullSafePrimary(), ((Primaryable) actualDirector).isPrimary());
        assertTrue("An active-object indicator should have been supported for director at index " + multiIndex, actualDirector instanceof MutableInactivatable);
        assertEquals("Wrong active indicator for director at index " + multiIndex, expectedDirector.getNullSafeActive(), ((MutableInactivatable) actualDirector).isActive());
    }
}
Also used : CGProjectDirector(org.kuali.kfs.module.cg.businessobject.CGProjectDirector) Primaryable(org.kuali.kfs.module.cg.businessobject.Primaryable) MutableInactivatable(org.kuali.kfs.core.api.mo.common.active.MutableInactivatable) RassXMLAwardPiCoPiEntryFixture(edu.cornell.kfs.rass.batch.xml.fixture.RassXMLAwardPiCoPiEntryFixture)

Aggregations

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