aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/merge/resource/MergeResourceBLFactory.java
blob: cdfeded356860799815fdac7ffa2bd0bbfa8002b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package org.openecomp.sdc.be.components.merge.resource;


import fj.data.Either;
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;

@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;
    }

}