/* * Copyright 2013 Cloud4SOA, www.cloud4soa.eu * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package eu.cloud4soa.api.datamodel.governance; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; @XmlRootElement() @XmlType(name = "guaranteeTerm", namespace="eu.cloud4soa.api.datamodel.governance") public class GuaranteeTerm { /* * ServiceLevelObjective */ private String guaranteeTermName; private String serviceScopeServiceName; private String kpiName; private String customServiceLevel; /* * BusinessValueList - Penalty */ private String penaltyAssessmentInterval; private String penaltyValueUnit; private String penaltyValueExpression; /* * BusinessValueList - Reward */ private String rewardAssessmentInterval; private String rewardValueUnit; private String rewardValueExpression; public GuaranteeTerm() { } public GuaranteeTerm(String guaranteeTermName, String serviceScopeServiceName, String kpiName, String customServiceLevel, String penaltyAssessmentInterval, String penaltyValueUnit, String penaltyValueExpression, String rewardAssessmentInterval, String rewardValueUnit, String rewardValueExpression) { super(); this.guaranteeTermName = guaranteeTermName; this.serviceScopeServiceName = serviceScopeServiceName; this.kpiName = kpiName; this.customServiceLevel = customServiceLevel; this.penaltyAssessmentInterval = penaltyAssessmentInterval; this.penaltyValueUnit = penaltyValueUnit; this.penaltyValueExpression = penaltyValueExpression; this.rewardAssessmentInterval = rewardAssessmentInterval; this.rewardValueUnit = rewardValueUnit; this.rewardValueExpression = rewardValueExpression; } // Old constructor, not used anymore, will keep for a while for backwards compatibility /** * Constructs a GuaranteeTerm from a GuaranteeTerm XML element in a WS-Agreement offer * * @param element */ public GuaranteeTerm(Element element){ this.guaranteeTermName = element.getAttribute("wsag:Name"); Element serviceScope = (Element)element.getElementsByTagName("wsag:ServiceScope").item(0); this.serviceScopeServiceName = serviceScope.getAttribute("wsag:ServiceName"); /* * Parse serviceLevelObjective */ Element serviceLevelObjective = (Element)element.getElementsByTagName("wsag:ServiceLevelObjective").item(0); Element kpiTarget = (Element)serviceLevelObjective.getElementsByTagName("wsag:KPITarget").item(0); this.kpiName = getTagValue("wsag:KPIName", kpiTarget); this.customServiceLevel = getTagValue("wsag:CustomServiceLevel", kpiTarget); Element businessValueList = (Element)element.getElementsByTagName("wsag:BusinessValueList").item(0); /* * Parse penalty */ Element penalty = (Element)businessValueList.getElementsByTagName("wsag:Penalty").item(0); Element assessmentInterval = (Element)penalty.getElementsByTagName("wsag:AssessmentInterval").item(0); this.penaltyAssessmentInterval = getTagValue("wsag:TimeInterval", assessmentInterval); this.penaltyValueUnit = getTagValue("wsag:ValueUnit", penalty); this.penaltyValueExpression = getTagValue("wsag:ValueExpression", penalty); /* * Parse reward */ Element reward = (Element)businessValueList.getElementsByTagName("wsag:Reward").item(0); Element rewardAssessmentInterval = (Element)reward.getElementsByTagName("wsag:AssessmentInterval").item(0); this.rewardAssessmentInterval = getTagValue("wsag:TimeInterval", rewardAssessmentInterval); this.rewardValueUnit = getTagValue("wsag:ValueUnit", reward); this.rewardValueExpression = getTagValue("wsag:ValueExpression", reward); } private String getTagValue(String sTag, Element eElement) { NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes(); Node nValue = (Node) nlList.item(0); return nValue.getNodeValue(); } public String getGuaranteeTermName() { return guaranteeTermName; } public String getServiceScopeServiceName() { return serviceScopeServiceName; } public String getKpiName() { return kpiName; } public String getCustomServiceLevel() { return customServiceLevel; } public String getPenaltyAssessmentInterval() { return penaltyAssessmentInterval; } public String getPenaltyValueUnit() { return penaltyValueUnit; } public String getPenaltyValueExpression() { return penaltyValueExpression; } public String getRewardAssessmentInterval() { return rewardAssessmentInterval; } public String getRewardValueUnit() { return rewardValueUnit; } public String getRewardValueExpression() { return rewardValueExpression; } }