Containerization feature of SO
[so.git] / common / src / main / java / org / onap / so / client / aai / entities / uri / AAIUriFactory.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 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
21 package org.onap.so.client.aai.entities.uri;
22
23 import java.net.URI;
24
25 import org.onap.so.client.aai.AAIObjectPlurals;
26 import org.onap.so.client.aai.AAIObjectType;
27 import org.onap.so.client.graphinventory.entities.uri.SimpleUri;
28
29
30 public class AAIUriFactory {
31         
32         /**
33          * values are filled into the URI template specified in {@link AAIObjectType} in order
34          * 
35          * @param type
36          * @param values
37          * @return
38          */
39         public static AAIResourceUri createResourceUri(AAIObjectType type, Object... values) {
40                 if (AAIObjectType.SERVICE_INSTANCE.equals(type)) {
41                         return new ServiceInstanceUri(values);
42                 } else {
43                         return new AAISimpleUri(type, values);
44                 }
45         }
46         
47         public static AAIResourceUri createNodesUri(AAIObjectType type, Object... values) {
48                 return new NodesUri(type, values);
49                 
50         }
51         
52         /**
53          * This method should only be used to wrap a URI retrieved from A&AI contained within an object response
54          * 
55          * @param type
56          * @param uri
57          * @return
58          */
59         public static AAIResourceUri createResourceFromExistingURI(AAIObjectType type, URI uri) {
60                 return new AAISimpleUri(type, uri);
61         }
62         
63         /**
64          * Creates a uri for a plural type e.g. /cloud-infrastructure/pservers
65          * 
66          * @param type
67          * @return
68          */
69         public static AAIResourceUri createResourceUri(AAIObjectPlurals type) {
70                 
71                 return new AAISimpleUri(type);
72         
73         }
74         
75         /**
76          * Creates a uri for a plural type with values e.g. /cloud-infrastructure/pservers
77          * 
78          * @param type
79          * @return
80          */
81         public static AAIResourceUri createResourceUri(AAIObjectPlurals type, Object... values) {
82                 
83                 return new AAISimpleUri(type, values);
84         
85         }
86 }