re base code
[sdc.git] / catalog-dao / src / main / java / org / openecomp / sdc / be / dao / cassandra / schema / tables / DistribBaseEventTableDesc.java
1 package org.openecomp.sdc.be.dao.cassandra.schema.tables;
2
3 import com.datastax.driver.core.DataType;
4 import org.apache.commons.lang3.tuple.ImmutablePair;
5 import org.openecomp.sdc.be.dao.cassandra.schema.ITableDescription;
6 import org.openecomp.sdc.be.resources.data.auditing.AuditingTypesConstants;
7
8 import java.util.ArrayList;
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 public abstract class DistribBaseEventTableDesc implements ITableDescription {
14     @Override
15     public List<ImmutablePair<String, DataType>> primaryKeys() {
16         List<ImmutablePair<String, DataType>> keys = new ArrayList<>();
17         keys.add(new ImmutablePair<>(TIMEBASED_UUID_FIELD, DataType.timeuuid()));
18         return keys;
19     }
20
21     @Override
22     public List<ImmutablePair<String, DataType>> clusteringKeys() {
23         List<ImmutablePair<String, DataType>> keys = new ArrayList<>();
24         keys.add(new ImmutablePair<>(TIMESTAMP_FIELD, DataType.timestamp()));
25         return keys;
26     }
27
28     @Override
29     public String getKeyspace() {
30         return AuditingTypesConstants.AUDIT_KEYSPACE;
31     }
32
33     @Override
34     public Map<String, ImmutablePair<DataType, Boolean>> getColumnDescription() {
35         Map<String, ImmutablePair<DataType, Boolean>> columns = new HashMap<>();
36
37         for (DistFieldsDescription field : DistFieldsDescription.values()) {
38             columns.put(field.getName(), new ImmutablePair<>(field.type, field.indexed));
39         }
40         updateColumnDistribDescription(columns);
41         return columns;
42     }
43
44     protected abstract void updateColumnDistribDescription(final Map<String, ImmutablePair<DataType, Boolean>> columns);
45
46
47     enum DistFieldsDescription {
48         ACTION("action", DataType.varchar(), true),
49         STATUS("status", DataType.varchar(), false),
50         DESCRIPTION("description", DataType.varchar(), false),
51         REQUEST_ID("request_id", DataType.varchar(), false),
52         SERVICE_INST_ID("service_instance_id", DataType.varchar(), false);
53
54         private String name;
55         private DataType type;
56         private boolean indexed;
57
58         DistFieldsDescription(String name, DataType type, boolean indexed) {
59             this.name = name;
60             this.type = type;
61             this.indexed = indexed;
62         }
63
64         public String getName() {
65             return name;
66         }
67
68         public DataType getType() {
69             return type;
70         }
71
72         public boolean isIndexed() {
73             return indexed;
74         }
75     }
76 }