Update the license for 2017-2018 license
[aai/aai-common.git] / aai-core / src / main / java / org / onap / aai / introspection / tools / CreateUUID.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.introspection.tools;
21
22 import org.onap.aai.introspection.Introspector;
23 import org.onap.aai.schema.enums.PropertyMetadata;
24
25 import java.util.Map;
26 import java.util.UUID;
27
28 /**
29  * <b>CreateUUID</b> is an issue resolver that is responsible
30  * for looking to check if the property that is missing has
31  * the metadata autoGenerateUuid associated to it in the oxm
32  * As if that is found, then it will automatically resolve the
33  * issue by generating a uuid and setting that value to that property
34  *
35  * If this is needed for a specific property that you need
36  * then you need to add the following xml code in the oxm
37  *
38  * <pre>
39  *     {@code
40  *      <xml-element java-attribute="myElementProp" name="my-element-prop" type="java.lang.String">
41  *      <xml-properties>
42  *          <xml-property name="autoGenerateUuid" value="true" />
43  *      </xml-properties>
44  *     }
45  * </pre>
46  */
47 public class CreateUUID implements IssueResolver {
48
49         /**
50          * Resolves the issue by checking if the issue type is missing key prop
51          * and if it is it will retrieve the introspector associated with the issue
52          * then gets the metadata associated to that specific property
53          * and if it contains the auto generate meta property and if it does
54          * then it will fix it by setting that property value to generated uuid
55          *
56          * @param issue the issue with the details associated to the problem
57          * @return true if the issue has been successfully resolved
58          *          false otherwise
59          */
60         @Override
61         public boolean resolveIssue(Issue issue) {
62
63                 Introspector obj = issue.getIntrospector();
64                 if (issue.getType().equals(IssueType.MISSING_KEY_PROP)) {
65                         Map<PropertyMetadata, String> metadata = obj.getPropertyMetadata(issue.getPropName());
66                         if (metadata.containsKey(PropertyMetadata.AUTO_GENERATE_UUID) && metadata.get(PropertyMetadata.AUTO_GENERATE_UUID).equals("true")) {
67                                 obj.setValue(issue.getPropName(), UUID.randomUUID().toString());
68                                 return true;
69                         }
70                 }
71                 
72                 return false;
73         }
74
75 }