diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/resource/MergeResourceBLFactory.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/resource/MergeResourceBLFactory.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/resource/MergeResourceBLFactory.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/resource/MergeResourceBLFactory.java new file mode 100644 index 0000000000..9d11eb9aaf --- /dev/null +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/resource/MergeResourceBLFactory.java @@ -0,0 +1,33 @@ +package org.openecomp.sdc.be.components.merge.resource; + + +import org.openecomp.sdc.be.components.merge.GlobalTypesMergeBusinessLogic; +import org.openecomp.sdc.be.components.merge.TopologyComparator; +import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.model.Resource; +import org.springframework.stereotype.Component; + +import fj.data.Either; + +@Component +public class MergeResourceBLFactory { + + @javax.annotation.Resource + private ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic; + + @javax.annotation.Resource + private GlobalTypesMergeBusinessLogic globalTypesMergeBusinessLogic; + + @javax.annotation.Resource + private TopologyComparator topologyComparator; + + public Either<MergeResourceBusinessLogic, ActionStatus> getInstance(Resource oldResource, Resource newResource) { + Either<Boolean, ActionStatus> isTopologyChangeEither = topologyComparator.isTopologyChanged(oldResource, newResource); + return isTopologyChangeEither.bimap(this::getInstance, actionStatus -> actionStatus); + } + + private MergeResourceBusinessLogic getInstance(boolean topologyChanged) { + return topologyChanged ? globalTypesMergeBusinessLogic : resourceDataMergeBusinessLogic; + } + +} |