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