e69a2824df913c707a6e4e5d349e89878d33ecba
[vfc/nfvo/wfengine.git] / winery / org.eclipse.winery.repository / src / main / java / org / eclipse / winery / repository / resources / entitytemplates / policytemplates / PolicyTemplateResource.java
1 /*******************************************************************************
2  * Copyright (c) 2012-2013 University of Stuttgart.
3  * All rights reserved. This program and the accompanying materials
4  * are made available under the terms of the Eclipse Public License v1.0
5  * and the Apache License 2.0 which both accompany this distribution,
6  * and are available at http://www.eclipse.org/legal/epl-v10.html
7  * and http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Contributors:
10  *     Oliver Kopp - initial API and implementation
11  *******************************************************************************/
12 package org.eclipse.winery.repository.resources.entitytemplates.policytemplates;
13
14 import javax.ws.rs.core.Response;
15 import javax.xml.namespace.QName;
16
17 import org.eclipse.winery.common.ids.definitions.PolicyTemplateId;
18 import org.eclipse.winery.model.tosca.TExtensibleElements;
19 import org.eclipse.winery.model.tosca.TPolicyTemplate;
20 import org.eclipse.winery.repository.backend.BackendUtils;
21 import org.eclipse.winery.repository.resources.AbstractComponentInstanceResource;
22 import org.eclipse.winery.repository.resources.IHasName;
23 import org.eclipse.winery.repository.resources.entitytemplates.IEntityTemplateResource;
24 import org.eclipse.winery.repository.resources.entitytemplates.PropertiesResource;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28 public final class PolicyTemplateResource extends AbstractComponentInstanceResource implements IEntityTemplateResource<TPolicyTemplate>, IHasName {
29         
30         private static final Logger logger = LoggerFactory.getLogger(PolicyTemplateResource.class);
31         
32         
33         /**
34          * Constructor has to be public because of test cases
35          */
36         public PolicyTemplateResource(PolicyTemplateId id) {
37                 super(id);
38         }
39         
40         /**
41          * Convenience method to avoid casting at the caller's side.
42          */
43         public TPolicyTemplate getPolicyTemplate() {
44                 return (TPolicyTemplate) this.getElement();
45         }
46         
47         @Override
48         protected TExtensibleElements createNewElement() {
49                 return new TPolicyTemplate();
50         }
51         
52         @Override
53         public QName getType() {
54                 return this.getPolicyTemplate().getType();
55         }
56         
57         @Override
58         public Response setType(QName type) {
59                 this.getPolicyTemplate().setType(type);
60                 return BackendUtils.persist(this);
61         }
62         
63         @Override
64         public Response setType(String typeStr) {
65                 this.getPolicyTemplate().setType(QName.valueOf(typeStr));
66                 return BackendUtils.persist(this);
67         }
68         
69         @Override
70         public PropertiesResource getPropertiesResource() {
71                 return new PropertiesResource(this.getPolicyTemplate(), this);
72         }
73         
74         @Override
75         protected void copyIdToFields() {
76                 this.getPolicyTemplate().setId(this.getId().getXmlId().getDecoded());
77         }
78         
79         @Override
80         public String getName() {
81                 String name = this.getPolicyTemplate().getName();
82                 if (name == null) {
83                         return this.getPolicyTemplate().getId();
84                 } else {
85                         return name;
86                 }
87         }
88         
89         @Override
90         public Response setName(String name) {
91                 this.getPolicyTemplate().setName(name);
92                 return BackendUtils.persist(this);
93         }
94         
95 }