001    /**
002     * Copyright 2005-2011 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    }