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