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    }