12cbe4f1fa968214fcd429aea187fa6e525abfe8
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk features
4  * ================================================================================
5  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *     http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  *
21  */
22 package org.onap.ccsdk.features.sdnr.wt.dataprovider.setup.data;
23
24 import org.onap.ccsdk.features.sdnr.wt.common.database.data.AliasesEntry;
25 import org.onap.ccsdk.features.sdnr.wt.common.database.data.DatabaseVersion;
26 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.SdnrDbType;
27
28
29 public enum Release {
30
31     EL_ALTO("el alto", "_v1", new DatabaseVersion(2, 2, 0), new DatabaseVersion(2, 2, 0)),
32     FRANKFURT_R1("frankfurt-R1", "-v2", new DatabaseVersion(6, 4, 3), new DatabaseVersion(6, 8, 6)),
33     FRANKFURT_R2("frankfurt-R2", "-v3", new DatabaseVersion(7, 0, 1), new DatabaseVersion(7, 6, 1)),
34     GUILIN_R1("guilin-R1", "-v4", new DatabaseVersion(7,1,1), new DatabaseVersion(7,6,1)),
35         HONOLULU_R1("honolulu-R1", "-v5", new DatabaseVersion(7,1,1), new DatabaseVersion(8,0,0), false),
36         ISTANBUL_R1("istanbul-R1", "-v6", new DatabaseVersion(7,1,1), new DatabaseVersion(8,0,0), false,
37             new DatabaseVersion(10,2,7), new DatabaseVersion(10,6,0), false),
38     JAKARTA_R1("jakarta-R1", "-v7", new DatabaseVersion(7,1,1), new DatabaseVersion(8,0,0), false,
39             new DatabaseVersion(10,2,7), new DatabaseVersion(10,6,0), false);
40
41
42     public static final Release CURRENT_RELEASE = Release.JAKARTA_R1;
43
44     private final String value;
45     private final String dbSuffix;
46     private final DatabaseVersion minDbVersion;
47     private final DatabaseVersion maxDbVersion;
48     private final DatabaseVersion minMariaDbVersion;
49     private final DatabaseVersion maxMariaDbVersion;
50     private final boolean includeEndVersion;
51     private final boolean mariaDbIncludeEndVersion;
52
53     private Release(String s, String dbsuffix, DatabaseVersion minDbVersion, DatabaseVersion maxDbVersion) {
54         this(s, dbsuffix, minDbVersion, maxDbVersion, true, null, null, false);
55     }
56
57     private Release(String s, String dbsuffix, DatabaseVersion minDbVersion, DatabaseVersion maxDbVersion,
58             boolean includeEnd) {
59         this(s, dbsuffix, minDbVersion, maxDbVersion, includeEnd, null, null, false);
60     }
61
62     private Release(String s, String dbsuffix, DatabaseVersion minDbVersion, DatabaseVersion maxDbVersion,
63             boolean includeEnd, DatabaseVersion minMariaDbVersion, DatabaseVersion maxMariaDbVersion,
64             boolean mariaDbIncludeEnd) {
65         this.value = s;
66         this.dbSuffix = dbsuffix;
67         this.minDbVersion = minDbVersion;
68         this.maxDbVersion = maxDbVersion;
69         this.includeEndVersion = includeEnd;
70         this.minMariaDbVersion = minMariaDbVersion;
71         this.maxMariaDbVersion = maxMariaDbVersion;
72         this.mariaDbIncludeEndVersion = mariaDbIncludeEnd;
73     }
74
75     @Override
76     public String toString() {
77         return this.value;
78     }
79
80     public String getValue() {
81         return value;
82     }
83
84     public static Release getValueOf(String s) throws Exception {
85         //s = s.toLowerCase();
86         for (Release p : Release.values()) {
87             if (p.value.equals(s)) {
88                 return p;
89             }
90         }
91         throw new Exception("value not found");
92     }
93
94     public static Release getValueBySuffix(String suffix) {
95         if (!suffix.startsWith("-")) {
96             suffix = "-" + suffix;
97         }
98         for (Release r : Release.values()) {
99             if (r.dbSuffix.equals(suffix))
100                 return r;
101         }
102         return null;
103     }
104
105     public static String getDbSuffix(AliasesEntry entry) throws Exception {
106         ComponentName comp = ComponentName.getValueOf(entry.getAlias());
107         if (comp != null) {
108             return entry.getIndex().substring(entry.getAlias().length());
109         }
110         return null;
111     }
112
113     public String getDBSuffix() {
114         return this.dbSuffix;
115     }
116
117     public DatabaseVersion getDBVersion() {
118         return this.minDbVersion;
119     }
120
121     public boolean isDbInRange(DatabaseVersion dbVersion, SdnrDbType type) {
122         if (type == SdnrDbType.ELASTICSEARCH) {
123             if (this.includeEndVersion) {
124                 return dbVersion.isNewerOrEqualThan(minDbVersion) && dbVersion.isOlderOrEqualThan(maxDbVersion);
125             } else {
126                 return dbVersion.isNewerOrEqualThan(minDbVersion) && dbVersion.isOlderThan(maxDbVersion);
127             }
128         } else {
129             if (this.mariaDbIncludeEndVersion) {
130                 return dbVersion.isNewerOrEqualThan(minMariaDbVersion)
131                         && dbVersion.isOlderOrEqualThan(maxMariaDbVersion);
132             } else {
133                 return dbVersion.isNewerOrEqualThan(minMariaDbVersion) && dbVersion.isOlderThan(maxMariaDbVersion);
134             }
135         }
136     }
137 }