1 package org.eclipse.winery.repository.resources.servicetemplates.boundarydefinitions;
4 import java.util.ArrayList;
5 import java.util.Collection;
7 import java.util.SortedSet;
9 import javax.xml.namespace.QName;
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;
27 public class BoundaryDefinitionsJSPData {
29 private final TServiceTemplate ste;
30 private final TBoundaryDefinitions defs;
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
41 public BoundaryDefinitionsJSPData(TServiceTemplate ste, URI baseURI) {
43 this.defs = ste.getBoundaryDefinitions();
44 this.baseURI = baseURI;
47 private String getDefinedProperties() {
48 Properties p = ModelUtilities.getProperties(this.defs);
49 Object o = p.getAny();
51 // nothing stored -> return empty string
54 // something stored --> return that
55 return Utils.getXMLAsString(p.getAny());
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
64 public String getDefinedPropertiesAsEscapedHTML() {
65 String s = this.getDefinedProperties();
66 s = StringEscapeUtils.escapeHtml4(s);
70 public String getDefinedPropertiesAsJSONString() {
71 String s = this.getDefinedProperties();
72 s = StringEscapeUtils.escapeEcmaScript(s);
76 public TBoundaryDefinitions getDefs() {
80 public String getBoundaryDefinitionsAsXMLStringEncoded() {
81 String res = Utils.getXMLAsString(this.defs);
82 return Functions.escapeXml(res);
85 public Collection<TypeWithShortName> getConstraintTypes() {
86 return ConstraintTypesManager.INSTANCE.getTypes();
89 public Collection<QName> getAllPolicyTypes() {
90 SortedSet<PolicyTypeId> allTOSCAComponentIds = Repository.INSTANCE.getAllTOSCAComponentIds(PolicyTypeId.class);
91 return BackendUtils.convertTOSCAComponentIdCollectionToQNameCollection(allTOSCAComponentIds);
94 public String getRepositoryURL() {
95 return this.baseURI.toString();
98 public List<Select2DataItem> getlistOfAllPlans() {
99 TPlans plans = this.ste.getPlans();
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);