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