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