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