re base code
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / impl / ComponentLocker.java
1 package org.openecomp.sdc.be.components.impl;
2
3 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
4 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
5 import org.openecomp.sdc.be.model.Component;
6 import org.openecomp.sdc.be.model.operations.StorageException;
7 import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
8 import org.openecomp.sdc.be.model.operations.impl.GraphLockOperation;
9 import org.openecomp.sdc.common.log.wrappers.Logger;
10
11
12 @org.springframework.stereotype.Component
13 public class ComponentLocker  {
14
15     private static final Logger log = Logger.getLogger(ComponentLocker.class.getName());
16     private final GraphLockOperation graphLockOperation;
17
18     public ComponentLocker(GraphLockOperation graphLockOperation) {
19         this.graphLockOperation = graphLockOperation;
20     }
21
22     public void lock(String id, ComponentTypeEnum componentType) {
23         lock(id, componentType.getNodeType());
24     }
25
26     public void lock(Component component) {
27         doLockComponent(component.getUniqueId(), component.getComponentType().getNodeType());
28     }
29
30     public void lock(String id, NodeTypeEnum nodeTypeEnum) {
31         doLockComponent(id, nodeTypeEnum);
32     }
33
34     private void doLockComponent(String id, NodeTypeEnum nodeTypeEnum) {
35         log.debug("#doLockComponent - locking component {} of type {}", id, nodeTypeEnum);
36         StorageOperationStatus storageOperationStatus = graphLockOperation.lockComponent(id, nodeTypeEnum);
37         if (storageOperationStatus != StorageOperationStatus.OK) {
38                 log.debug("#doLockComponent - failed to lock component {} with status {}", id, storageOperationStatus);
39             throw new StorageException(storageOperationStatus);
40         }
41     }
42
43     public void unlock(String id, ComponentTypeEnum componentType) {
44         unlock(id, componentType.getNodeType());
45     }
46
47     public void unlock(String id, NodeTypeEnum nodeTypeEnum) {
48         log.debug("#unlock - unlocking component {} of type {}", id, nodeTypeEnum);
49         StorageOperationStatus storageOperationStatus = graphLockOperation.unlockComponent(id, nodeTypeEnum);
50         if (storageOperationStatus != StorageOperationStatus.OK) {
51             log.debug("#unlock - failed to unlock component {} with status {}", id, storageOperationStatus);
52             throw new StorageException(storageOperationStatus, id);
53         }
54     }
55 }