// Copyright 2011 Google Inc. All Rights Reseved. // // 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 com.google.testing.testify.risk.frontend.model; import java.io.Serializable; import javax.jdo.annotations.Extension; import javax.jdo.annotations.IdGeneratorStrategy; import javax.jdo.annotations.PersistenceCapable; import javax.jdo.annotations.Persistent; import javax.jdo.annotations.PrimaryKey; /** * JDO object for a Label. Labels can be assigned to any part of an ACC model. * A label is stored as a two-state label (essentially, a name and value pair). This can * represent things like: * "Priority-P4" where P4 is the value to the name Priority. * * For labels where there is not a name/value structure, the label is simply stored as the name. * "Security", for example, would have an empty value and the entire label text in name. * * The entire label is not stored as one text field, but can be generated by this class using * the function getLabelText(). This function should be used instead of doing this manually. * * @author jimr@google.com (Jim Reardon) */ @PersistenceCapable(detachable = "true") public class AccLabel implements Serializable { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) @Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true") private String id; @Persistent private Long projectId; @Persistent private AccElementType elementType; @Persistent private Long elementId; @Persistent private String name; @Persistent private String value; public String getId() { return id; } public void setId(String id) { this.id = id; } public Long getProjectId() { return projectId; } public void setProjectId(Long projectId) { this.projectId = projectId; } public AccElementType getElementType() { return elementType; } public void setElementType(AccElementType elementType) { this.elementType = elementType; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } /** * Will attempt to split a label into its name / value pair, or set it all as name if it is not * a two-state label. */ public void setLabelText(String labelText) { if (labelText == null) { name = null; value = null; } else { String[] split = labelText.split("-", 2); if (split.length > 0) { name = split[0]; if (split.length > 1) { value = split[1]; } } } } /** * Returns a combined label with the name and value in one string. Eg: * name=Priority value=P4 would become "Priority-P4". * name=Security value=null would become "Security". * @return the combined label. */ public String getLabelText() { String labelText = name; if (value != null) { labelText += "-" + value; } return labelText; } public void setElementId(Long elementId) { this.elementId = elementId; } public Long getElementId() { return elementId; } }