Refactoring Consolidation Service
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / merge / resource / MergeResourceBLFactory.java
1 package org.openecomp.sdc.be.components.merge.resource;
2
3
4 import org.openecomp.sdc.be.components.merge.GlobalTypesMergeBusinessLogic;
5 import org.openecomp.sdc.be.components.merge.TopologyComparator;
6 import org.openecomp.sdc.be.dao.api.ActionStatus;
7 import org.openecomp.sdc.be.model.Resource;
8 import org.springframework.stereotype.Component;
9
10 import fj.data.Either;
11
12 @Component
13 public class MergeResourceBLFactory {
14
15     @javax.annotation.Resource
16     private ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic;
17
18     @javax.annotation.Resource
19     private GlobalTypesMergeBusinessLogic globalTypesMergeBusinessLogic;
20
21     @javax.annotation.Resource
22     private TopologyComparator topologyComparator;
23
24     public Either<MergeResourceBusinessLogic, ActionStatus> getInstance(Resource oldResource, Resource newResource) {
25         Either<Boolean, ActionStatus> isTopologyChangeEither = topologyComparator.isTopologyChanged(oldResource, newResource);
26         return isTopologyChangeEither.bimap(this::getInstance, actionStatus -> actionStatus);
27     }
28
29     private MergeResourceBusinessLogic getInstance(boolean topologyChanged) {
30         return topologyChanged ? globalTypesMergeBusinessLogic : resourceDataMergeBusinessLogic;
31     }
32
33 }