0d4b141cbf7ac307593d3955702e0b680a26ddf9
[vfc/nfvo/wfengine.git] / winery / org.eclipse.winery.repository / src / main / java / org / eclipse / winery / repository / resources / servicetemplates / boundarydefinitions / BoundaryDefinitionsJSPData.java
1 package org.eclipse.winery.repository.resources.servicetemplates.boundarydefinitions;
2
3 import java.net.URI;
4 import java.util.ArrayList;
5 import java.util.Collection;
6 import java.util.List;
7 import java.util.SortedSet;
8
9 import javax.xml.namespace.QName;
10
11 import org.apache.commons.lang3.StringEscapeUtils;
12 import org.apache.taglibs.standard.functions.Functions;
13 import org.eclipse.winery.common.ModelUtilities;
14 import org.eclipse.winery.common.ids.definitions.PolicyTypeId;
15 import org.eclipse.winery.model.tosca.TBoundaryDefinitions;
16 import org.eclipse.winery.model.tosca.TBoundaryDefinitions.Properties;
17 import org.eclipse.winery.model.tosca.TPlan;
18 import org.eclipse.winery.model.tosca.TPlans;
19 import org.eclipse.winery.model.tosca.TServiceTemplate;
20 import org.eclipse.winery.repository.Utils;
21 import org.eclipse.winery.repository.backend.BackendUtils;
22 import org.eclipse.winery.repository.backend.Repository;
23 import org.eclipse.winery.repository.datatypes.TypeWithShortName;
24 import org.eclipse.winery.repository.datatypes.select2.Select2DataItem;
25 import org.eclipse.winery.repository.resources.admin.types.ConstraintTypesManager;
26
27 public class BoundaryDefinitionsJSPData {
28         
29         private final TServiceTemplate ste;
30         private final TBoundaryDefinitions defs;
31         private URI baseURI;
32         
33         
34         /**
35          * 
36          * @param ste the service template of the boundary definitions. Required to
37          *            get a list of all plans
38          * @param baseURI the base URI of the service. Requried for rendering the
39          *            topology template for the selections
40          */
41         public BoundaryDefinitionsJSPData(TServiceTemplate ste, URI baseURI) {
42                 this.ste = ste;
43                 this.defs = ste.getBoundaryDefinitions();
44                 this.baseURI = baseURI;
45         }
46         
47         private String getDefinedProperties() {
48                 Properties p = ModelUtilities.getProperties(this.defs);
49                 Object o = p.getAny();
50                 if (o == null) {
51                         // nothing stored -> return empty string
52                         return "";
53                 } else {
54                         // something stored --> return that
55                         return Utils.getXMLAsString(p.getAny());
56                 }
57         }
58         
59         /**
60          * Helper method to return an initialized properties object only containing
61          * the user-defined properties. The TOSCA properties-element is not returned
62          * as the TOSCA XSD allows a single element only
63          */
64         public String getDefinedPropertiesAsEscapedHTML() {
65                 String s = this.getDefinedProperties();
66                 s = StringEscapeUtils.escapeHtml4(s);
67                 return s;
68         }
69         
70         public String getDefinedPropertiesAsJSONString() {
71                 String s = this.getDefinedProperties();
72                 s = StringEscapeUtils.escapeEcmaScript(s);
73                 return s;
74         }
75         
76         public TBoundaryDefinitions getDefs() {
77                 return this.defs;
78         }
79         
80         public String getBoundaryDefinitionsAsXMLStringEncoded() {
81                 String res = Utils.getXMLAsString(this.defs);
82                 return Functions.escapeXml(res);
83         }
84         
85         public Collection<TypeWithShortName> getConstraintTypes() {
86                 return ConstraintTypesManager.INSTANCE.getTypes();
87         }
88         
89         public Collection<QName> getAllPolicyTypes() {
90                 SortedSet<PolicyTypeId> allTOSCAComponentIds = Repository.INSTANCE.getAllTOSCAComponentIds(PolicyTypeId.class);
91                 return BackendUtils.convertTOSCAComponentIdCollectionToQNameCollection(allTOSCAComponentIds);
92         }
93         
94         public String getRepositoryURL() {
95                 return this.baseURI.toString();
96         }
97         
98         public List<Select2DataItem> getlistOfAllPlans() {
99                 TPlans plans = this.ste.getPlans();
100                 if (plans == null) {
101                         return null;
102                 } else {
103                         List<Select2DataItem> res = new ArrayList<>(plans.getPlan().size());
104                         for (TPlan plan : plans.getPlan()) {
105                                 String id = plan.getId();
106                                 String name = ModelUtilities.getNameWithIdFallBack(plan);
107                                 Select2DataItem di = new Select2DataItem(id, name);
108                                 res.add(di);
109                         }
110                         return res;
111                 }
112         }
113 }