Update the license for 2017-2018 license
[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 package org.onap.aai.serialization.db;
21
22 import org.apache.tinkerpop.gremlin.structure.Direction;
23
24 import java.util.HashMap;
25 import java.util.regex.Matcher;
26 import java.util.regex.Pattern;
27
28 public class EdgePropertyMap<K, V> extends HashMap<K, V> {
29
30         private static final long serialVersionUID = -8298355506617458683L;
31         
32         private static final Pattern variablePattern = Pattern.compile("(!)?\\$\\{(\\w+)\\}");
33         
34         @Override
35         public V get(Object arg0) {
36                 
37                 V value = super.get(arg0);
38                 
39                 Matcher m = variablePattern.matcher(value.toString());
40                 if (m.find()) {
41                         if (m.groupCount() == 2) {
42                                 if (m.group(1) == null) {
43                                         value = super.get(m.group(2));
44                                 } else {
45                                         value = reverse(super.get(m.group(2)));
46                                 }
47                         }
48                 }
49                 
50                 return value;
51         }
52
53         
54         protected V reverse(V value) {
55                 
56                 return (V)Direction.valueOf(value.toString()).opposite().toString();
57         }
58 }