001 /*
002 * Copyright 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.kfs.module.purap.businessobject;
017
018
019 import java.util.LinkedHashMap;
020 import java.util.List;
021
022 import org.apache.commons.lang.StringUtils;
023 import org.kuali.kfs.integration.purap.CapitalAssetLocation;
024 import org.kuali.kfs.integration.purap.CapitalAssetSystem;
025 import org.kuali.kfs.integration.purap.ItemCapitalAsset;
026 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
027 import org.kuali.rice.kns.util.TypedArrayList;
028
029 public abstract class PurchasingCapitalAssetSystemBase extends PersistableBusinessObjectBase implements CapitalAssetSystem {
030
031 private Integer capitalAssetSystemIdentifier;
032 private String capitalAssetSystemDescription;
033 private boolean capitalAssetNotReceivedCurrentFiscalYearIndicator;
034 private String capitalAssetTypeCode;
035 private String capitalAssetManufacturerName;
036 private String capitalAssetModelDescription;
037 private String capitalAssetNoteText;
038 private List<ItemCapitalAsset> itemCapitalAssets;
039 private List<CapitalAssetLocation> capitalAssetLocations;
040 private CapitalAssetLocation newPurchasingCapitalAssetLocationLine;
041 private Integer capitalAssetCountAssetNumber;
042
043 public Integer getCapitalAssetCountAssetNumber() {
044 return capitalAssetCountAssetNumber;
045 }
046
047 public void setCapitalAssetCountAssetNumber(Integer capitalAssetCountAssetNumber) {
048 this.capitalAssetCountAssetNumber = capitalAssetCountAssetNumber;
049 }
050
051 public PurchasingCapitalAssetSystemBase() {
052 super();
053 itemCapitalAssets = new TypedArrayList(getItemCapitalAssetClass());
054 capitalAssetLocations = new TypedArrayList(getCapitalAssetLocationClass());
055 this.setNewPurchasingCapitalAssetLocationLine(this.setupNewPurchasingCapitalAssetLocationLine());
056 }
057
058 public String getCapitalAssetSystemDescription() {
059 //This is needed because bean:define would throw error if capitalAssetSystemDescription is empty.
060 if (StringUtils.isEmpty(capitalAssetSystemDescription)) {
061 capitalAssetSystemDescription = new String(" ");
062 }
063 return capitalAssetSystemDescription;
064 }
065
066 public void setCapitalAssetSystemDescription(String capitalAssetSystemDescription) {
067 this.capitalAssetSystemDescription = capitalAssetSystemDescription;
068 }
069
070 public boolean isCapitalAssetNotReceivedCurrentFiscalYearIndicator() {
071 return capitalAssetNotReceivedCurrentFiscalYearIndicator;
072 }
073
074 public void setCapitalAssetNotReceivedCurrentFiscalYearIndicator(boolean capitalAssetNotReceivedCurrentFiscalYearIndicator) {
075 this.capitalAssetNotReceivedCurrentFiscalYearIndicator = capitalAssetNotReceivedCurrentFiscalYearIndicator;
076 }
077
078 public String getCapitalAssetTypeCode() {
079 return capitalAssetTypeCode;
080 }
081
082 public void setCapitalAssetTypeCode(String capitalAssetTypeCode) {
083 this.capitalAssetTypeCode = capitalAssetTypeCode;
084 }
085
086 public String getCapitalAssetManufacturerName() {
087 return capitalAssetManufacturerName;
088 }
089
090 public void setCapitalAssetManufacturerName(String capitalAssetManufacturerName) {
091 this.capitalAssetManufacturerName = capitalAssetManufacturerName;
092 }
093
094 public String getCapitalAssetModelDescription() {
095 return capitalAssetModelDescription;
096 }
097
098 public void setCapitalAssetModelDescription(String capitalAssetModelDescription) {
099 this.capitalAssetModelDescription = capitalAssetModelDescription;
100 }
101
102 public List<ItemCapitalAsset> getItemCapitalAssets() {
103 return itemCapitalAssets;
104 }
105
106 public void setItemCapitalAssets(List<ItemCapitalAsset> itemCapitalAssets) {
107 this.itemCapitalAssets = itemCapitalAssets;
108 }
109
110 public List<CapitalAssetLocation> getCapitalAssetLocations() {
111 return capitalAssetLocations;
112 }
113
114 public void setCapitalAssetLocations(List<CapitalAssetLocation> capitalAssetLocations) {
115 this.capitalAssetLocations = capitalAssetLocations;
116 }
117
118 public Integer getCapitalAssetSystemIdentifier() {
119 return capitalAssetSystemIdentifier;
120 }
121
122 public void setCapitalAssetSystemIdentifier(Integer capitalAssetSystemIdentifier) {
123 this.capitalAssetSystemIdentifier = capitalAssetSystemIdentifier;
124 }
125
126 public String getCapitalAssetNoteText() {
127 //This is needed because bean:define would throw error if capitalAssetNoteText is empty.
128 if (StringUtils.isEmpty(capitalAssetNoteText)) {
129 capitalAssetNoteText = new String(" ");
130 }
131 return capitalAssetNoteText;
132 }
133
134 public void setCapitalAssetNoteText(String capitalAssetNoteText) {
135 this.capitalAssetNoteText = capitalAssetNoteText;
136 }
137
138 public boolean isEmpty() {
139 return !(StringUtils.isNotEmpty(capitalAssetNoteText) || StringUtils.isNotEmpty(capitalAssetSystemDescription) || StringUtils.isNotEmpty(capitalAssetManufacturerName) || StringUtils.isNotEmpty(this.capitalAssetModelDescription) || StringUtils.isNotEmpty(capitalAssetTypeCode));
140 }
141
142 public abstract Class getItemCapitalAssetClass();
143
144 public abstract Class getCapitalAssetLocationClass();
145
146 //CAMS LOCATION
147 public CapitalAssetLocation setupNewPurchasingCapitalAssetLocationLine() {
148 CapitalAssetLocation location = null;
149 try{
150 location = (CapitalAssetLocation)getCapitalAssetLocationClass().newInstance();
151 }
152 catch (InstantiationException e) {
153 throw new RuntimeException("Unable to get class");
154 }
155 catch (IllegalAccessException e) {
156 throw new RuntimeException("Unable to get class");
157 }
158 catch (NullPointerException e) {
159 throw new RuntimeException("Can't instantiate Purchasing Account from base");
160 }
161
162 return location;
163 }
164
165 public void setNewPurchasingCapitalAssetLocationLine(CapitalAssetLocation newCapitalAssetLocationLine) {
166 this.newPurchasingCapitalAssetLocationLine = newCapitalAssetLocationLine;
167 }
168
169 public CapitalAssetLocation getNewPurchasingCapitalAssetLocationLine() {
170 return newPurchasingCapitalAssetLocationLine;
171 }
172
173 public CapitalAssetLocation getAndResetNewPurchasingCapitalAssetLocationLine() {
174 CapitalAssetLocation asset = getNewPurchasingCapitalAssetLocationLine();
175 setNewPurchasingCapitalAssetLocationLine(setupNewPurchasingCapitalAssetLocationLine());
176 return asset;
177 }
178
179 public void resetNewPurchasingCapitalAssetLocationLine(){
180 setNewPurchasingCapitalAssetLocationLine(setupNewPurchasingCapitalAssetLocationLine());
181 }
182
183 protected LinkedHashMap toStringMapper() {
184 LinkedHashMap m = new LinkedHashMap();
185 if (this.capitalAssetSystemIdentifier != null) {
186 m.put("capitalAssetSystemIdentifier", this.capitalAssetSystemIdentifier.toString());
187 }
188 return m;
189 }
190
191 }