001    /*
002     * Copyright 2007-2008 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 edu.sampleu.travel.document;
017    
018    import edu.sampleu.travel.bo.TravelAccount;
019    import org.kuali.rice.krad.document.SessionDocument;
020    import org.kuali.rice.krad.document.TransactionalDocumentBase;
021    
022    import javax.persistence.*;
023    import java.util.ArrayList;
024    import java.util.List;
025    
026    
027    @Entity
028    @Table(name="TRV_DOC_2")
029    public class TravelDocument2 extends TransactionalDocumentBase implements SessionDocument {
030    
031        @Column(name="traveler")
032        private String traveler;
033        @Column(name="org")
034        private String origin;
035        @Column(name="dest")
036        private String destination;
037        @Column(name="request_trav")
038        private String requestType;
039        @Transient
040        private String accountType;
041    
042        @ManyToMany(fetch = FetchType.EAGER)    // Do not use cascade here or it will try to update the TravelAccounts
043        @JoinTable(name="TRAV_DOC_2_ACCOUNTS", 
044                       joinColumns={@JoinColumn(name="fdoc_nbr", referencedColumnName="fdoc_nbr", unique=false)},         // Goes with this class: TravelDocument2
045                       inverseJoinColumns={@JoinColumn(name="acct_num", referencedColumnName="acct_num", unique=false)}   // Goes with that class: TravelAccount
046        )
047        private List<TravelAccount> travelAccounts;
048    
049        public TravelDocument2() {
050            travelAccounts = new ArrayList<TravelAccount>();
051        }
052    
053        public String getDestination() {
054            return destination;
055        }
056    
057        public void setDestination(String destination) {
058            this.destination = destination;
059        }
060    
061        public String getOrigin() {
062            return origin;
063        }
064    
065        public void setOrigin(String origin) {
066            this.origin = origin;
067        }
068    
069        public String getTraveler() {
070            return traveler;
071        }
072    
073        public void setTraveler(String traveler) {
074            this.traveler = traveler;
075        }
076    
077        public List<TravelAccount> getTravelAccounts() {
078            return travelAccounts;
079        }
080    
081        public void setTravelAccounts(List<TravelAccount> travelAccounts) {
082            this.travelAccounts = travelAccounts;
083        }
084    
085        public TravelAccount getTravelAccount(int index) {
086            while(travelAccounts.size() - 1 < index) {
087                travelAccounts.add(new TravelAccount());
088            }
089            return travelAccounts.get(index);
090        }
091    
092        public String getRequestType() {
093            return requestType;
094        }
095    
096        public void setRequestType(String requestType) {
097            this.requestType = requestType;
098        }
099    
100        /**
101         * @param accountType the accountType to set
102         */
103        public void setAccountType(String accountType) {
104            this.accountType = accountType;
105        }
106    
107        /**
108         * @return the accountType
109         */
110        public String getAccountType() {
111            return accountType;
112        }
113    
114    }