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.endow.document;
017    
018    import java.util.List;
019    
020    import org.apache.commons.lang.StringUtils;
021    import org.kuali.kfs.module.endow.businessobject.EndowmentSourceTransactionSecurity;
022    import org.kuali.kfs.module.endow.businessobject.EndowmentTargetTransactionSecurity;
023    import org.kuali.kfs.module.endow.businessobject.EndowmentTransactionSecurity;
024    import org.kuali.rice.kns.util.TypedArrayList;
025    
026    
027    public abstract class EndowmentSecurityDetailsDocumentBase extends EndowmentTransactionLinesDocumentBase implements EndowmentSecurityDetailsDocument {
028        protected List<EndowmentTransactionSecurity> sourceTransactionSecurities;
029        protected List<EndowmentTransactionSecurity> targetTransactionSecurities;
030    
031        protected EndowmentSourceTransactionSecurity sourceTransactionSecurity;
032        protected EndowmentTargetTransactionSecurity targetTransactionSecurity;
033    
034        public EndowmentSecurityDetailsDocumentBase() {
035            super();
036            sourceTransactionSecurity = new EndowmentSourceTransactionSecurity();
037            targetTransactionSecurity = new EndowmentTargetTransactionSecurity();
038            sourceTransactionSecurities = new TypedArrayList(EndowmentSourceTransactionSecurity.class);
039            targetTransactionSecurities = new TypedArrayList(EndowmentTargetTransactionSecurity.class);
040        }
041    
042        /**
043         * @see org.kuali.kfs.module.endow.document.EndowmentTransactionLinesDocumentBase#prepareForSave()
044         */
045        @Override
046        public void prepareForSave() {
047            super.prepareForSave();
048    
049            sourceTransactionSecurities.clear();
050            targetTransactionSecurities.clear();
051    
052            // A Hack to insert transaction securities in the securities collection.
053            if (StringUtils.isNotBlank(sourceTransactionSecurity.getSecurityID())) {
054                getSourceTransactionSecurities().add(0, sourceTransactionSecurity);
055            }
056    
057            // A Hack to insert transaction securities in the securities collection.
058            if (StringUtils.isNotBlank(targetTransactionSecurity.getSecurityID())) {
059                getTargetTransactionSecurities().add(0, targetTransactionSecurity);
060            }
061    
062        }
063    
064    
065        /**
066         * Gets the sourceTransactionSecurities.
067         * 
068         * @return sourceTransactionSecurities
069         */
070        public List<EndowmentTransactionSecurity> getSourceTransactionSecurities() {
071            return sourceTransactionSecurities;
072        }
073    
074        /**
075         * Sets the sourceTransactionSecurities.
076         * 
077         * @param sourceTransactionSecurities
078         */
079        public void setSourceTransactionSecurities(List<EndowmentTransactionSecurity> sourceTransactionSecurities) {
080            this.sourceTransactionSecurities = sourceTransactionSecurities;
081        }
082    
083        /**
084         * Gets the targetTransactionSecurities.
085         * 
086         * @return targetTransactionSecurities
087         */
088        public List<EndowmentTransactionSecurity> getTargetTransactionSecurities() {
089            return targetTransactionSecurities;
090        }
091    
092        /**
093         * Sets the targetTransactionSecurities.
094         * 
095         * @param targetTransactionSecurities
096         */
097        public void setTargetTransactionSecurities(List<EndowmentTransactionSecurity> targetTransactionSecurities) {
098            this.targetTransactionSecurities = targetTransactionSecurities;
099        }
100    
101        /**
102         * Here when the document is being read from the DB, the security object to be returned must be the object from the DB and not
103         * the new object created.
104         * 
105         * @see org.kuali.kfs.module.endow.document.EndowmentSecurityDetailsDocument#getSourceTransactionSecurity()
106         */
107        public EndowmentTransactionSecurity getSourceTransactionSecurity() {
108            if (this.sourceTransactionSecurities.size() > 0) {
109                this.sourceTransactionSecurity = (EndowmentSourceTransactionSecurity) this.sourceTransactionSecurities.get(0);
110            }
111    
112            return this.sourceTransactionSecurity;
113        }
114    
115        /**
116         * Here when the document is being read from the DB, the security object to be returned must be the object from the DB and not
117         * the new object created.
118         * 
119         * @see org.kuali.kfs.module.endow.document.EndowmentSecurityDetailsDocument#getTargetTransactionSecurity()
120         */
121        public EndowmentTransactionSecurity getTargetTransactionSecurity() {
122            if (this.targetTransactionSecurities.size() > 0) {
123                this.targetTransactionSecurity = (EndowmentTargetTransactionSecurity) this.targetTransactionSecurities.get(0);
124            }
125    
126            return this.targetTransactionSecurity;
127        }
128    
129        /**
130         * @see org.kuali.kfs.module.endow.document.EndowmentSecurityDetailsDocument#setSourceTransactionSecurity(org.kuali.kfs.module.endow.businessobject.EndowmentTransactionSecurity)
131         */
132        public void setSourceTransactionSecurity(EndowmentTransactionSecurity sourceTransactionSecurity) {
133            this.sourceTransactionSecurity = (EndowmentSourceTransactionSecurity) sourceTransactionSecurity;
134        }
135    
136        /**
137         * @see org.kuali.kfs.module.endow.document.EndowmentSecurityDetailsDocument#setTargetTransactionSecurity(org.kuali.kfs.module.endow.businessobject.EndowmentTransactionSecurity)
138         */
139        public void setTargetTransactionSecurity(EndowmentTransactionSecurity targetTransactionSecurity) {
140            this.targetTransactionSecurity = (EndowmentTargetTransactionSecurity) targetTransactionSecurity;
141        }
142    
143        /**
144         * @see org.kuali.kfs.module.endow.document.EndowmentTransactionLinesDocumentBase#buildListOfDeletionAwareLists()
145         */
146        public List buildListOfDeletionAwareLists() {
147            List managedList = super.buildListOfDeletionAwareLists();
148    
149            managedList.add(getTargetTransactionSecurities());
150            managedList.add(getSourceTransactionSecurities());
151    
152            return managedList;
153        }
154    }