use of com.khartec.waltz.model.application.AssetCodeRelationshipKind in project waltz by khartec.
the class ApplicationService method findRelated.
public Map<AssetCodeRelationshipKind, List<Application>> findRelated(long appId) {
List<Application> related = applicationDao.findRelatedByApplicationId(appId);
Optional<Application> foundApp = related.stream().filter(app -> app.id().equals(Optional.of(appId))).findFirst();
if (foundApp.isPresent()) {
Application app = foundApp.get();
Function<Application, AssetCodeRelationshipKind> classifier = relatedApp -> {
boolean sameParent = relatedApp.parentAssetCode().equals(app.parentAssetCode());
boolean sameCode = relatedApp.assetCode().equals(app.assetCode());
boolean isParent = relatedApp.assetCode().equals(app.parentAssetCode());
boolean isChild = relatedApp.parentAssetCode().equals(app.assetCode());
if (sameCode) {
return AssetCodeRelationshipKind.SHARING;
} else if (isParent) {
return AssetCodeRelationshipKind.PARENT;
} else if (isChild) {
return AssetCodeRelationshipKind.CHILD;
} else if (sameParent && app.parentAssetCode().isPresent()) {
return AssetCodeRelationshipKind.SIBLING;
} else {
return AssetCodeRelationshipKind.NONE;
}
};
Map<AssetCodeRelationshipKind, List<Application>> grouped = related.stream().filter(// can do simple ref check here
relatedApp -> relatedApp != app).collect(Collectors.groupingBy(classifier));
return grouped;
} else {
return emptyMap();
}
}
Aggregations