Add collaboration feature
[sdc.git] / openecomp-be / tools / zusammen-tools / src / main / java / org / openecomp / core / tools / store / HealingHandler.java
1 package org.openecomp.core.tools.store;
2
3 import com.datastax.driver.core.ResultSet;
4 import com.datastax.driver.mapping.annotations.Accessor;
5 import com.datastax.driver.mapping.annotations.Query;
6 import org.openecomp.core.nosqldb.api.NoSqlDb;
7 import org.openecomp.core.nosqldb.factory.NoSqlDbFactory;
8 import org.openecomp.core.tools.store.zusammen.datatypes.HealingEntity;
9
10 import java.util.ArrayList;
11
12 /**
13  * Created by ayalaben on 10/15/2017
14  */
15 public class HealingHandler {
16
17   private static NoSqlDb nnoSqlDb = NoSqlDbFactory.getInstance().createInterface();
18   private static HealingAccessor accessor =
19       nnoSqlDb.getMappingManager().createAccessor(HealingAccessor.class);
20
21
22   public void populateHealingTable(ArrayList<HealingEntity> healingEntities) {
23     healingEntities.forEach(healingEntity -> {
24       if (isHealingRecordExist(healingEntity)) {
25         accessor.updateFlag(healingEntity.getHealingFlag(), healingEntity.getSpace(),
26             healingEntity.getItemId(), healingEntity.getVersionId());
27       } else {
28         accessor.create(healingEntity.getSpace(), healingEntity.getItemId(),
29             healingEntity.getVersionId(), healingEntity.getHealingFlag(),
30             healingEntity.getOldVersion());
31       }
32     });
33   }
34
35   private boolean isHealingRecordExist(HealingEntity healingEntity) {
36     return accessor.getFlag(healingEntity.getSpace(), healingEntity.getItemId(),
37         healingEntity.getVersionId()).getAvailableWithoutFetching() == 1;
38   }
39
40   @Accessor
41   interface HealingAccessor {
42
43     @Query("SELECT healing_needed FROM healing WHERE space=? AND item_id=? AND version_id=?")
44     ResultSet getFlag(String space, String itemId, String versionId);
45
46     @Query("Insert into healing (space, item_id, version_id, healing_needed, old_version) " +
47         "values (?,?,?,?,?)")
48     void create(String space, String itemId, String versionId, boolean flag, String oldVersion);
49
50     @Query("UPDATE healing SET healing_needed=? WHERE space=? AND item_id=? AND version_id=?")
51     void updateFlag(boolean flag, String space, String itemId, String versionId);
52   }
53
54 }