Add dependent child service to service
[sdc.git] / catalog-model / src / main / java / org / openecomp / sdc / be / model / ComponentParametersView.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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.openecomp.sdc.be.model;
22
23 import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
24 import org.openecomp.sdc.be.datatypes.enums.ComponentFieldsEnum;
25 import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
26
27 import java.util.List;
28
29 public class ComponentParametersView {
30
31     private boolean ignoreUsers = false;
32     private boolean ignoreGroups = false;
33     private boolean ignoreComponentInstances = false;
34     private boolean ignoreComponentInstancesProperties = false;
35     private boolean ignoreProperties = false;
36     private boolean ignoreCapabilities = false;
37     private boolean ignoreRequirements = false;
38     private boolean ignoreCategories = false;
39     private boolean ignoreAllVersions = false;
40     private boolean ignoreAdditionalInformation = false;
41     private boolean ignoreArtifacts = false;
42     private boolean ignoreInterfaces = false;
43     private boolean ignoreDerivedFrom = false;
44     private boolean ignoreAttributesFrom = false;
45     private boolean ignoreComponentInstancesAttributesFrom = false;
46     private boolean ignoreInputs = false;
47     private boolean ignoreComponentInstancesInputs = false;
48     private boolean ignoreCapabiltyProperties = true;
49     private boolean ignoreServicePath = true;
50     private boolean ignorePolicies = false;
51     private boolean ignoreNodeFilter = false;
52
53     public ComponentParametersView() {
54     }
55
56     public ComponentParametersView(boolean setAllToIgnore) {
57         this();
58         if (setAllToIgnore) {
59             this.disableAll();
60         }
61     }
62
63     public ComponentParametersView(List<String> filters) {
64         this(true);
65
66         for (String fieldName : filters) {
67             switch (ComponentFieldsEnum.findByValue(fieldName)) {
68                 case PROPERTIES:
69                     this.setIgnoreProperties(false);
70                     break;
71                 case INPUTS:
72                     this.setIgnoreInputs(false);
73                     break;
74                 case USERS:
75                     this.setIgnoreUsers(false);
76                     break;
77                 case CATEGORIES:
78                     this.setIgnoreCategories(false);
79                     break;
80                 case METADATA:
81                     this.setIgnoreUsers(false);
82                     this.setIgnoreCategories(false);
83                     this.setIgnoreAllVersions(false);
84                     this.setIgnoreDerivedFrom(false);
85                     break;
86                 case GROUPS:
87                 case NON_EXCLUDED_GROUPS:
88                     this.setIgnoreGroups(false);
89                     break;
90                 case COMPONENT_INSTANCES:
91                     this.setIgnoreComponentInstances(false);
92                     this.setIgnoreCapabilities(false);
93                     this.setIgnoreRequirements(false);
94                     this.setIgnoreNodeFilter(false);
95                     break;
96                 case COMPONENT_INSTANCES_PROPERTIES:
97                     this.setIgnoreComponentInstances(false); //we need this in order to get the calculate capabilities requirements
98                     this.setIgnoreComponentInstancesProperties(false);
99                     break;
100                 case CAPABILITIES:
101                     this.setIgnoreComponentInstances(false);//we need this in order to get the calculate capabilities requirements
102                     this.setIgnoreCapabilities(false);
103                     break;
104                 case REQUIREMENTS:
105                     this.setIgnoreComponentInstances(false);
106                     this.setIgnoreRequirements(false);
107                     break;
108                 case ALL_VERSIONS:
109                     this.setIgnoreAllVersions(false);
110                     break;
111                 case ADDITIONAL_INFORMATION:
112                     this.setIgnoreAdditionalInformation(false);
113                     break;
114                 case ARTIFACTS:
115                 case DEPLOYMENT_ARTIFACTS:
116                 case TOSCA_ARTIFACTS:
117                 case SERVICE_API_ARTIFACTS:
118                     this.setIgnoreArtifacts(false);
119                     break;
120                 case INTERFACES:
121                     this.setIgnoreInterfaces(false);
122                     break;
123                 case DERIVED_FROM:
124                     this.setIgnoreDerivedFrom(false);
125                     break;
126                 case ATTRIBUTES:
127                     this.setIgnoreAttributesFrom(false);
128                     break;
129                 case COMPONENT_INSTANCES_ATTRIBUTES:
130                     this.setIgnoreComponentInstances(false);
131                     this.setIgnoreComponentInstancesAttributesFrom(false);
132                     break;
133                 case COMPONENT_INSTANCE_INPUTS:
134                     this.setIgnoreComponentInstances(false);
135                     this.setIgnoreComponentInstancesInputs(false);
136                     break;
137                 case INSTANCE_CAPABILTY_PROPERTIES:
138                     this.setIgnoreCapabiltyProperties(false);
139                     break;
140                 case FORWARDING_PATHS:
141                     this.setIgnoreForwardingPath(false);
142                     break;
143                 case POLICIES:
144                 case NON_EXCLUDED_POLICIES:
145                     this.setIgnorePolicies(false);
146                     break;
147                 case NODE_FILTER:
148                     this.setIgnoreNodeFilter(false);
149                     break;
150                 default:
151                     break;
152             }
153
154         }
155     }
156
157     ///////////////////////////////////////////////////////////////
158     // When adding new member, please update the filter method.
159     ///////////////////////////////////////////////////////////////
160
161     public Component filter(Component component, ComponentTypeEnum componentType) {
162
163         if (ignoreUsers) {
164             component.setCreatorUserId(null);
165             component.setCreatorFullName(null);
166             component.setLastUpdaterUserId(null);
167             component.setLastUpdaterFullName(null);
168         }
169         if (ignoreGroups) {
170             component.setGroups(null);
171         }
172         if (ignoreComponentInstances) {
173             component.setComponentInstances(null);
174             component.setComponentInstancesRelations(null);
175         }
176         if (ignoreComponentInstancesProperties) {
177             component.setComponentInstancesProperties(null);
178         }
179         if (ignoreProperties && componentType == ComponentTypeEnum.RESOURCE) {
180             ((Resource) component).setProperties(null);
181         }
182         if (ignoreCapabilities) {
183             component.setCapabilities(null);
184         }
185         if (ignoreRequirements) {
186             component.setRequirements(null);
187         }
188         if (ignoreCategories) {
189             component.setCategories(null);
190         }
191         if (ignoreAllVersions) {
192             component.setAllVersions(null);
193         }
194         if (ignoreAdditionalInformation && componentType == ComponentTypeEnum.RESOURCE) {
195             ((Resource) component).setAdditionalInformation(null);
196         }
197         if (ignoreArtifacts) {
198             component.setArtifacts(null);
199             component.setSpecificComponetTypeArtifacts(null);
200             component.setDeploymentArtifacts(null);
201             component.setToscaArtifacts(null);
202         }
203         if (ignoreInterfaces && componentType == ComponentTypeEnum.RESOURCE) {
204             ((Resource) component).setInterfaces(null);
205         }
206         if (ignoreDerivedFrom && componentType == ComponentTypeEnum.RESOURCE) {
207             ((Resource) component).setDerivedFrom(null);
208         }
209         if (ignoreAttributesFrom && componentType == ComponentTypeEnum.RESOURCE) {
210             ((Resource) component).setAttributes(null);
211         }
212         if (ignoreComponentInstancesAttributesFrom) {
213             component.setComponentInstancesAttributes(null);
214         }
215         if (ignoreInputs) {
216             component.setInputs(null);
217         }
218         if (ignoreComponentInstancesInputs) {
219             component.setComponentInstancesInputs(null);
220         }
221         if (ignoreServicePath && componentType == ComponentTypeEnum.SERVICE) {
222             ((Service) component).setForwardingPaths(null);
223         }
224         if (ignoreNodeFilter){
225             component.setNodeFilterComponents(null);
226         }
227         return component;
228     }
229
230     public void disableAll() {
231         ignoreUsers = true;
232         ignoreGroups = true;
233         ignorePolicies = true;
234         ignoreComponentInstances = true;
235         ignoreComponentInstancesProperties = true;
236         ignoreProperties = true;
237         ignoreCapabilities = true;
238         ignoreRequirements = true;
239         ignoreCategories = true;
240         ignoreAllVersions = true;
241         ignoreAdditionalInformation = true;
242         ignoreArtifacts = true;
243         ignoreInterfaces = true;
244         ignoreDerivedFrom = true;
245         ignoreAttributesFrom = true;
246         ignoreInputs = true;
247         ignoreComponentInstancesAttributesFrom = true;
248         ignoreComponentInstancesInputs = true;
249         ignoreCapabiltyProperties = true;
250         ignoreServicePath = true;
251         ignoreNodeFilter = true;
252     }
253
254     public boolean isIgnoreGroups() {
255         return ignoreGroups;
256     }
257
258     public void setIgnoreGroups(boolean ignoreGroups) {
259         this.ignoreGroups = ignoreGroups;
260         if (!ignoreGroups) {
261             this.ignoreCapabiltyProperties = ignoreGroups;
262             this.ignoreCapabilities = ignoreGroups;
263         }
264     }
265
266     public boolean isIgnoreComponentInstances() {
267         return ignoreComponentInstances;
268     }
269
270     public void setIgnoreComponentInstances(boolean ignoreComponentInstances) {
271         this.ignoreComponentInstances = ignoreComponentInstances;
272     }
273
274     public boolean isIgnoreProperties() {
275         return ignoreProperties;
276     }
277
278     public void setIgnoreProperties(boolean ignoreProperties) {
279         this.ignoreProperties = ignoreProperties;
280     }
281
282     public boolean isIgnoreCapabilities() {
283         return ignoreCapabilities;
284     }
285
286     public void setIgnoreCapabilities(boolean ignoreCapabilities) {
287         this.ignoreCapabilities = ignoreCapabilities;
288     }
289
290     public boolean isIgnoreRequirements() {
291         return ignoreRequirements;
292     }
293
294     public void setIgnoreRequirements(boolean ignoreRequirements) {
295         this.ignoreRequirements = ignoreRequirements;
296     }
297
298     public boolean isIgnoreCategories() {
299         return ignoreCategories;
300     }
301
302     public void setIgnoreCategories(boolean ignoreCategories) {
303         this.ignoreCategories = ignoreCategories;
304     }
305
306     public boolean isIgnoreAllVersions() {
307         return ignoreAllVersions;
308     }
309
310     public void setIgnoreAllVersions(boolean ignoreAllVersions) {
311         this.ignoreAllVersions = ignoreAllVersions;
312     }
313
314     public boolean isIgnoreAdditionalInformation() {
315         return ignoreAdditionalInformation;
316     }
317
318     private void setIgnoreAdditionalInformation(boolean ignoreAdditionalInformation) {
319         this.ignoreAdditionalInformation = ignoreAdditionalInformation;
320     }
321
322     public boolean isIgnoreArtifacts() {
323         return ignoreArtifacts;
324     }
325
326     public void setIgnoreArtifacts(boolean ignoreArtifacts) {
327         this.ignoreArtifacts = ignoreArtifacts;
328     }
329
330     public boolean isIgnoreComponentInstancesProperties() {
331         return ignoreComponentInstancesProperties;
332     }
333
334     public void setIgnoreComponentInstancesProperties(boolean ignoreComponentInstancesProperties) {
335         this.ignoreComponentInstancesProperties = ignoreComponentInstancesProperties;
336     }
337
338     public boolean isIgnoreComponentInstancesInputs() {
339         return ignoreComponentInstancesInputs;
340     }
341
342     public void setIgnoreComponentInstancesInputs(boolean ignoreComponentInstancesInputs) {
343         this.ignoreComponentInstancesInputs = ignoreComponentInstancesInputs;
344     }
345
346     public boolean isIgnoreInterfaces() {
347         return ignoreInterfaces;
348     }
349
350     public void setIgnoreInterfaces(boolean ignoreInterfaces) {
351         this.ignoreInterfaces = ignoreInterfaces;
352     }
353
354     public boolean isIgnoreAttributesFrom() {
355         return ignoreAttributesFrom;
356     }
357
358     public void setIgnoreAttributesFrom(boolean ignoreAttributesFrom) {
359         this.ignoreAttributesFrom = ignoreAttributesFrom;
360     }
361
362     public boolean isIgnoreComponentInstancesAttributesFrom() {
363         return ignoreComponentInstancesAttributesFrom;
364     }
365
366     private void setIgnoreComponentInstancesAttributesFrom(boolean ignoreComponentInstancesAttributesFrom) {
367         this.ignoreComponentInstancesAttributesFrom = ignoreComponentInstancesAttributesFrom;
368     }
369
370     public boolean isIgnoreDerivedFrom() {
371         return ignoreDerivedFrom;
372     }
373
374     private void setIgnoreDerivedFrom(boolean ignoreDerivedFrom) {
375         this.ignoreDerivedFrom = ignoreDerivedFrom;
376     }
377
378     public boolean isIgnoreUsers() {
379         return ignoreUsers;
380     }
381
382     public void setIgnoreUsers(boolean ignoreUsers) {
383         this.ignoreUsers = ignoreUsers;
384     }
385
386     public boolean isIgnoreInputs() {
387         return ignoreInputs;
388     }
389
390     public void setIgnoreInputs(boolean ignoreInputs) {
391         this.ignoreInputs = ignoreInputs;
392     }
393
394     public boolean isIgnoreCapabiltyProperties() {
395         return ignoreCapabiltyProperties;
396     }
397
398     public void setIgnoreCapabiltyProperties(boolean ignoreCapabiltyProperties) {
399         this.ignoreCapabiltyProperties = ignoreCapabiltyProperties;
400     }
401
402     public boolean isIgnoreForwardingPath() {
403         return ignoreServicePath;
404     }
405
406     public void setIgnoreForwardingPath(boolean ignoreServicePath) {
407         this.ignoreServicePath = ignoreServicePath;
408     }
409
410     public boolean isIgnorePolicies() {
411         return ignorePolicies;
412     }
413
414     public void setIgnorePolicies(boolean ignorePolicies) {
415         this.ignorePolicies = ignorePolicies;
416     }
417
418     public boolean isIgnoreNodeFilter() {
419         return ignoreNodeFilter;
420     }
421
422     public void setIgnoreNodeFilter(boolean ignoreNodeFilter) {
423         this.ignoreNodeFilter = ignoreNodeFilter;
424     }
425
426     public JsonParseFlagEnum detectParseFlag() {
427         JsonParseFlagEnum parseFlag;
428         if (isIgnoreComponentInstances()) {
429             parseFlag = JsonParseFlagEnum.ParseMetadata;
430         } else {
431             parseFlag = JsonParseFlagEnum.ParseAll;
432         }
433         return parseFlag;
434     }
435 }