001 /**
002 * Copyright 2005-2012 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 */
016 package org.kuali.rice.kew.engine.node;
017
018 import org.hibernate.annotations.GenericGenerator;
019 import org.hibernate.annotations.Parameter;
020 import org.kuali.rice.core.api.util.KeyValue;
021 import org.kuali.rice.kew.api.doctype.RouteNodeConfigurationParameterContract;
022 import org.kuali.rice.krad.bo.PersistableBusinessObjectBase;
023
024 import javax.persistence.AttributeOverride;
025 import javax.persistence.AttributeOverrides;
026 import javax.persistence.Column;
027 import javax.persistence.Entity;
028 import javax.persistence.FetchType;
029 import javax.persistence.GeneratedValue;
030 import javax.persistence.Id;
031 import javax.persistence.JoinColumn;
032 import javax.persistence.ManyToOne;
033 import javax.persistence.Table;
034
035 /**
036 * A route node definition configuration parameter. RouteNodeConfigParameters are
037 * extracted when the route node is parsed, and depend on route node implementation.
038 * (well, they actually depend on the route node parser because the parser is what
039 * will parse them, but the parser is not specialized per-node-type at this point)
040 * @author Kuali Rice Team (rice.collab@kuali.org)
041 *
042 */
043 @Entity
044 @Table(name="KREW_RTE_NODE_CFG_PARM_T")
045 @AttributeOverrides({@AttributeOverride(name="key", column=@Column(name="KEY_CD")), @AttributeOverride(name="value", column=@Column(name="VAL"))})
046 public class RouteNodeConfigParam extends PersistableBusinessObjectBase implements KeyValue, RouteNodeConfigurationParameterContract {
047 private static final long serialVersionUID = 5592421070149273014L;
048
049 /**
050 * Primary key
051 */
052 @Id
053 @Column(name="RTE_NODE_CFG_PARM_ID")
054 @GeneratedValue(generator="KREW_RTE_NODE_CFG_PARM_S")
055 @GenericGenerator(name="KREW_RTE_NODE_CFG_PARM_S",strategy="org.hibernate.id.enhanced.SequenceStyleGenerator",parameters={
056 @Parameter(name="sequence_name",value="KREW_RTE_NODE_CFG_PARM_S"),
057 @Parameter(name="value_column",value="id")
058 })
059 //@SequenceGenerator(name="KREW_RTE_NODE_CFG_PARM_SEQ_GEN", sequenceName="KREW_RTE_NODE_CFG_PARM_S")
060 private String id;
061 private String key;
062 private String value;
063 /**
064 * Foreign key to routenode table
065 */
066 @ManyToOne(fetch=FetchType.EAGER)
067 @JoinColumn(name="RTE_NODE_ID")
068 private RouteNode routeNode;
069
070 public RouteNodeConfigParam() {}
071
072 public RouteNodeConfigParam(RouteNode routeNode, String key, String value) {
073 this.key = key;
074 this.value = value;
075 this.routeNode = routeNode;
076 }
077
078 /**
079 * @return the id
080 */
081 @Override
082 public String getId() {
083 return this.id;
084 }
085 /**
086 * @param id the id to set
087 */
088 public void setId(String id) {
089 this.id = id;
090 }
091 /**
092 * @return the routeNode
093 */
094 public RouteNode getRouteNode() {
095 return this.routeNode;
096 }
097 /**
098 * @param routeNode the routeNode to set
099 */
100 public void setRouteNode(RouteNode routeNode) {
101 this.routeNode = routeNode;
102 }
103
104 @Override
105 public String getKey() {
106 return key;
107 }
108
109 @Override
110 public String getValue() {
111 return value;
112 }
113
114 public void setKey(String key) {
115 this.key = key;
116 }
117
118 public void setValue(String value) {
119 this.value = value;
120 }
121
122 @Override
123 public String getRouteNodeId() {
124 if (routeNode == null || routeNode.getRouteNodeId() == null) {
125 return null;
126 }
127 return routeNode.getRouteNodeId().toString();
128 }
129
130
131 }