AAI-1523 Batch reformat aai-core
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / serialization / db / EdgePropertyMap.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *    http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.aai.serialization.db;
22
23 import java.util.HashMap;
24 import java.util.regex.Matcher;
25 import java.util.regex.Pattern;
26
27 import org.apache.tinkerpop.gremlin.structure.Direction;
28
29 public class EdgePropertyMap<K, V> extends HashMap<K, V> {
30
31     private static final long serialVersionUID = -8298355506617458683L;
32
33     private static final Pattern variablePattern = Pattern.compile("(!)?\\$\\{(\\w+)\\}");
34
35     @Override
36     public V get(Object arg0) {
37
38         V value = super.get(arg0);
39
40         Matcher m = variablePattern.matcher(value.toString());
41         if (m.find()) {
42             if (m.groupCount() == 2) {
43                 if (m.group(1) == null) {
44                     value = super.get(m.group(2));
45                 } else {
46                     value = reverse(super.get(m.group(2)));
47                 }
48             }
49         }
50
51         return value;
52     }
53
54     protected V reverse(V value) {
55
56         return (V) Direction.valueOf(value.toString()).opposite().toString();
57     }
58 }