re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / merge / resource / MergeCommandsFactory.java
1 package org.openecomp.sdc.be.components.merge.resource;
2
3 import fj.data.Either;
4 import org.openecomp.sdc.be.components.merge.ComponentsGlobalMergeCommand;
5 import org.openecomp.sdc.be.components.merge.ComponentsMergeCommand;
6 import org.openecomp.sdc.be.components.merge.TopologyComparator;
7 import org.openecomp.sdc.be.components.merge.VspComponentsMergeCommand;
8 import org.openecomp.sdc.be.dao.api.ActionStatus;
9 import org.openecomp.sdc.be.model.Resource;
10 import org.springframework.stereotype.Component;
11
12 import java.util.List;
13
14 @Component
15 public class MergeCommandsFactory {
16
17     private final List<ComponentsGlobalMergeCommand> globalMergeCommands;
18     private final List<VspComponentsMergeCommand> mergeCommands;
19     private final TopologyComparator topologyComparator;
20
21     public MergeCommandsFactory(List<ComponentsGlobalMergeCommand> globalMergeCommands, List<VspComponentsMergeCommand> mergeCommands, TopologyComparator topologyComparator) {
22         this.globalMergeCommands = globalMergeCommands;
23         this.mergeCommands = mergeCommands;
24         this.topologyComparator = topologyComparator;
25     }
26
27     public Either<List<? extends ComponentsMergeCommand>, ActionStatus> getMergeCommands(Resource prevResource, Resource currResource) {
28         return topologyComparator.isTopologyChanged(prevResource, currResource)
29                 .left()
30                 .map(topologyChanged -> topologyChanged ? globalMergeCommands : mergeCommands);
31
32     }
33 }