Sync Integ to Master
[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 fj.data.Either;
5 import org.openecomp.sdc.be.components.merge.GlobalTypesMergeBusinessLogic;
6 import org.openecomp.sdc.be.components.merge.TopologyComparator;
7 import org.openecomp.sdc.be.dao.api.ActionStatus;
8 import org.openecomp.sdc.be.model.Resource;
9 import org.springframework.stereotype.Component;
10
11 @Component
12 public class MergeResourceBLFactory {
13
14     @javax.annotation.Resource
15     private ResourceDataMergeBusinessLogic resourceDataMergeBusinessLogic;
16
17     @javax.annotation.Resource
18     private GlobalTypesMergeBusinessLogic globalTypesMergeBusinessLogic;
19
20     @javax.annotation.Resource
21     private TopologyComparator topologyComparator;
22
23     public Either<MergeResourceBusinessLogic, ActionStatus> getInstance(Resource oldResource, Resource newResource) {
24         Either<Boolean, ActionStatus> isTopologyChangeEither = topologyComparator.isTopologyChanged(oldResource, newResource);
25         return isTopologyChangeEither.bimap(this::getInstance, actionStatus -> actionStatus);
26     }
27
28     private MergeResourceBusinessLogic getInstance(boolean topologyChanged) {
29         return topologyChanged ? globalTypesMergeBusinessLogic : resourceDataMergeBusinessLogic;
30     }
31
32 }