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    import java.util.LinkedHashMap;
019    
020    import org.apache.commons.lang.StringUtils;
021    import org.kuali.kfs.integration.cab.CapitalAssetBuilderAssetTransactionType;
022    import org.kuali.kfs.integration.purap.CapitalAssetSystem;
023    import org.kuali.kfs.integration.purap.ItemCapitalAsset;
024    import org.kuali.kfs.module.purap.PurapConstants;
025    import org.kuali.kfs.module.purap.PurapPropertyConstants;
026    import org.kuali.kfs.module.purap.document.PurchasingDocument;
027    import org.kuali.kfs.sys.context.SpringContext;
028    import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
029    import org.kuali.rice.kns.service.KualiModuleService;
030    import org.kuali.rice.kns.util.ObjectUtils;
031    
032    public abstract class PurchasingCapitalAssetItemBase extends PersistableBusinessObjectBase implements PurchasingCapitalAssetItem {
033    
034        private Integer capitalAssetItemIdentifier;
035        private Integer itemIdentifier;
036        private String capitalAssetTransactionTypeCode;
037        private Integer capitalAssetSystemIdentifier;
038        
039        private CapitalAssetBuilderAssetTransactionType capitalAssetTransactionType;
040        private CapitalAssetSystem purchasingCapitalAssetSystem;
041        private PurchasingDocument purchasingDocument;
042        private PurchasingItem purchasingItem;
043        private ItemCapitalAsset newPurchasingItemCapitalAssetLine;
044        
045        public PurchasingCapitalAssetItemBase(){
046            super();        
047            this.setNewPurchasingItemCapitalAssetLine(this.setupNewPurchasingItemCapitalAssetLine());
048        }
049        
050        public PurchasingCapitalAssetItemBase(PurchasingDocument pd) {        
051            setPurchasingDocument(pd);
052        }
053    
054        public Integer getCapitalAssetItemIdentifier() {
055            return capitalAssetItemIdentifier;
056        }
057    
058        public void setCapitalAssetItemIdentifier(Integer capitalAssetItemIdentifier) {
059            this.capitalAssetItemIdentifier = capitalAssetItemIdentifier;
060        }
061    
062        public Integer getItemIdentifier() {
063            return itemIdentifier;
064        }
065    
066        public void setItemIdentifier(Integer itemIdentifier) {
067            this.itemIdentifier = itemIdentifier;
068        }
069    
070        public String getCapitalAssetTransactionTypeCode() {
071            return capitalAssetTransactionTypeCode;
072        }
073    
074        public void setCapitalAssetTransactionTypeCode(String capitalAssetTransactionTypeCode) {
075            this.capitalAssetTransactionTypeCode = capitalAssetTransactionTypeCode;
076        }
077    
078        public Integer getCapitalAssetSystemIdentifier() {
079            return capitalAssetSystemIdentifier;
080        }
081    
082        public void setCapitalAssetSystemIdentifier(Integer capitalAssetSystemIdentifier) {
083            this.capitalAssetSystemIdentifier = capitalAssetSystemIdentifier;
084        }
085    
086        public CapitalAssetBuilderAssetTransactionType getCapitalAssetTransactionType() {
087            return capitalAssetTransactionType = (CapitalAssetBuilderAssetTransactionType) SpringContext.getBean(KualiModuleService.class).getResponsibleModuleService(CapitalAssetBuilderAssetTransactionType.class).retrieveExternalizableBusinessObjectIfNecessary(this, capitalAssetTransactionType, PurapPropertyConstants.ITEM_CAPITAL_ASSET_TRANSACTION_TYPE);
088        }
089    
090        public CapitalAssetSystem getPurchasingCapitalAssetSystem() {
091            return purchasingCapitalAssetSystem;
092        }
093    
094        public void setPurchasingCapitalAssetSystem(CapitalAssetSystem purchasingCapitalAssetSystem) {
095            this.purchasingCapitalAssetSystem = purchasingCapitalAssetSystem;
096        }
097    
098        public PurchasingDocument getPurchasingDocument(){
099            if(ObjectUtils.isNull(this.purchasingDocument)){
100                this.refreshReferenceObject("purchasingDocument");
101            }
102            
103            return this.purchasingDocument;
104        }
105        
106        public void setPurchasingDocument(PurchasingDocument pd){
107            this.purchasingDocument = pd;        
108        }
109        
110        public PurchasingItem getPurchasingItem(){       
111            PurchasingDocument pd = this.getPurchasingDocument();
112            
113            if(( pd != null) && ( this.getItemIdentifier() != null)) {
114                return pd.getPurchasingItem(this.getItemIdentifier());
115            }
116            else {
117                return null;
118            }
119        }
120        
121        public boolean isEmpty() {
122            if (this.getPurchasingDocument().getCapitalAssetSystemTypeCode().equals(PurapConstants.CapitalAssetSystemTypes.INDIVIDUAL)) {
123                return !(StringUtils.isNotEmpty(capitalAssetTransactionTypeCode) || ! this.getPurchasingCapitalAssetSystem().isEmpty());
124            }
125            else {
126                return !(StringUtils.isNotEmpty(capitalAssetTransactionTypeCode) || ! this.getPurchasingDocument().getPurchasingCapitalAssetSystems().get(0).isEmpty());
127            }
128        }
129    
130        public void setNewPurchasingItemCapitalAssetLine(ItemCapitalAsset newItemCapitalAssetLine) {
131            this.newPurchasingItemCapitalAssetLine = newItemCapitalAssetLine;
132        }
133    
134        public ItemCapitalAsset getNewPurchasingItemCapitalAssetLine() {
135            return newPurchasingItemCapitalAssetLine;
136        }
137    
138        public ItemCapitalAsset getAndResetNewPurchasingItemCapitalAssetLine() {
139            ItemCapitalAsset asset = getNewPurchasingItemCapitalAssetLine();
140            setNewPurchasingItemCapitalAssetLine(setupNewPurchasingItemCapitalAssetLine());
141            return asset;
142        }
143    
144        public ItemCapitalAsset setupNewPurchasingItemCapitalAssetLine() {
145            ItemCapitalAsset asset = null;
146            return asset;
147        }
148        
149        protected LinkedHashMap toStringMapper() {
150            LinkedHashMap m = new LinkedHashMap();
151            m.put("capitalAssetItemIdentifier", this.capitalAssetItemIdentifier);
152            return m;
153        }
154    
155    }