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);
}
}
}
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());
}
}
Aggregations