001/** 002 * Copyright 2005-2015 The Kuali Foundation 003 * 004 * Licensed under the Educational Community License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.opensource.org/licenses/ecl2.php 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.kuali.rice.ken.api.notification; 017 018import java.io.Serializable; 019import java.util.Collection; 020import javax.xml.bind.annotation.XmlAccessType; 021import javax.xml.bind.annotation.XmlAccessorType; 022import javax.xml.bind.annotation.XmlAnyElement; 023import javax.xml.bind.annotation.XmlElement; 024import javax.xml.bind.annotation.XmlRootElement; 025import javax.xml.bind.annotation.XmlType; 026import org.kuali.rice.core.api.CoreConstants; 027import org.kuali.rice.core.api.mo.AbstractDataTransferObject; 028import org.kuali.rice.core.api.mo.ModelBuilder; 029import org.w3c.dom.Element; 030 031@XmlRootElement(name = NotificationPriority.Constants.ROOT_ELEMENT_NAME) 032@XmlAccessorType(XmlAccessType.NONE) 033@XmlType(name = NotificationPriority.Constants.TYPE_NAME, propOrder = { 034 NotificationPriority.Elements.NAME, 035 NotificationPriority.Elements.DESCRIPTION, 036 NotificationPriority.Elements.ORDER, 037 NotificationPriority.Elements.ID, 038 CoreConstants.CommonElements.VERSION_NUMBER, 039 CoreConstants.CommonElements.OBJECT_ID, 040 CoreConstants.CommonElements.FUTURE_ELEMENTS 041}) 042public final class NotificationPriority 043 extends AbstractDataTransferObject 044 implements NotificationPriorityContract 045{ 046 047 @XmlElement(name = Elements.NAME, required = false) 048 private final String name; 049 @XmlElement(name = Elements.DESCRIPTION, required = false) 050 private final String description; 051 @XmlElement(name = Elements.ORDER, required = false) 052 private final Integer order; 053 @XmlElement(name = Elements.ID, required = false) 054 private final Long id; 055 @XmlElement(name = CoreConstants.CommonElements.VERSION_NUMBER, required = false) 056 private final Long versionNumber; 057 @XmlElement(name = CoreConstants.CommonElements.OBJECT_ID, required = false) 058 private final String objectId; 059 @SuppressWarnings("unused") 060 @XmlAnyElement 061 private final Collection<Element> _futureElements = null; 062 063 /** 064 * Private constructor used only by JAXB. 065 * 066 */ 067 private NotificationPriority() { 068 this.name = null; 069 this.description = null; 070 this.order = null; 071 this.id = null; 072 this.versionNumber = null; 073 this.objectId = null; 074 } 075 076 private NotificationPriority(Builder builder) { 077 this.name = builder.getName(); 078 this.description = builder.getDescription(); 079 this.order = builder.getOrder(); 080 this.id = builder.getId(); 081 this.versionNumber = builder.getVersionNumber(); 082 this.objectId = builder.getObjectId(); 083 } 084 085 @Override 086 public String getName() { 087 return this.name; 088 } 089 090 @Override 091 public String getDescription() { 092 return this.description; 093 } 094 095 @Override 096 public Integer getOrder() { 097 return this.order; 098 } 099 100 @Override 101 public Long getId() { 102 return this.id; 103 } 104 105 @Override 106 public Long getVersionNumber() { 107 return this.versionNumber; 108 } 109 110 @Override 111 public String getObjectId() { 112 return this.objectId; 113 } 114 115 116 /** 117 * A builder which can be used to construct {@link NotificationPriority} instances. Enforces the constraints of the {@link NotificationPriorityContract}. 118 * 119 */ 120 public final static class Builder 121 implements Serializable, ModelBuilder, NotificationPriorityContract 122 { 123 124 private String name; 125 private String description; 126 private Integer order; 127 private Long id; 128 private Long versionNumber; 129 private String objectId; 130 131 private Builder() { 132 // TODO modify this constructor as needed to pass any required values and invoke the appropriate 'setter' methods 133 } 134 135 public static Builder create() { 136 // TODO modify as needed to pass any required values and add them to the signature of the 'create' method 137 return new Builder(); 138 } 139 140 public static Builder create(NotificationPriorityContract contract) { 141 if (contract == null) { 142 throw new IllegalArgumentException("contract was null"); 143 } 144 // TODO if create() is modified to accept required parameters, this will need to be modified 145 Builder builder = create(); 146 builder.setName(contract.getName()); 147 builder.setDescription(contract.getDescription()); 148 builder.setOrder(contract.getOrder()); 149 builder.setId(contract.getId()); 150 builder.setVersionNumber(contract.getVersionNumber()); 151 builder.setObjectId(contract.getObjectId()); 152 return builder; 153 } 154 155 public NotificationPriority build() { 156 return new NotificationPriority(this); 157 } 158 159 @Override 160 public String getName() { 161 return this.name; 162 } 163 164 @Override 165 public String getDescription() { 166 return this.description; 167 } 168 169 @Override 170 public Integer getOrder() { 171 return this.order; 172 } 173 174 @Override 175 public Long getId() { 176 return this.id; 177 } 178 179 @Override 180 public Long getVersionNumber() { 181 return this.versionNumber; 182 } 183 184 @Override 185 public String getObjectId() { 186 return this.objectId; 187 } 188 189 public void setName(String name) { 190 // TODO add validation of input value if required and throw IllegalArgumentException if needed 191 this.name = name; 192 } 193 194 public void setDescription(String description) { 195 // TODO add validation of input value if required and throw IllegalArgumentException if needed 196 this.description = description; 197 } 198 199 public void setOrder(Integer order) { 200 // TODO add validation of input value if required and throw IllegalArgumentException if needed 201 this.order = order; 202 } 203 204 public void setId(Long id) { 205 // TODO add validation of input value if required and throw IllegalArgumentException if needed 206 this.id = id; 207 } 208 209 public void setVersionNumber(Long versionNumber) { 210 // TODO add validation of input value if required and throw IllegalArgumentException if needed 211 this.versionNumber = versionNumber; 212 } 213 214 public void setObjectId(String objectId) { 215 // TODO add validation of input value if required and throw IllegalArgumentException if needed 216 this.objectId = objectId; 217 } 218 219 } 220 221 222 /** 223 * Defines some internal constants used on this class. 224 * 225 */ 226 static class Constants { 227 228 final static String ROOT_ELEMENT_NAME = "notificationPriority"; 229 final static String TYPE_NAME = "NotificationPriorityType"; 230 231 } 232 233 234 /** 235 * A private class which exposes constants which define the XML element names to use when this object is marshalled to XML. 236 * 237 */ 238 static class Elements { 239 240 final static String NAME = "name"; 241 final static String DESCRIPTION = "description"; 242 final static String ORDER = "order"; 243 final static String ID = "id"; 244 245 } 246 247}