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.cam.document.validation.impl;
017    
018    import org.kuali.kfs.coa.document.validation.impl.MaintenancePreRulesBase;
019    import org.kuali.kfs.module.cam.businessobject.Asset;
020    import org.kuali.rice.kns.document.MaintenanceDocument;
021    import org.kuali.rice.kns.util.GlobalVariables;
022    import org.kuali.rice.kns.util.ObjectUtils;
023    
024    /**
025     * Business Prerules applicable to Asset documents. These PreRules checks for the Asset that needs to occur while
026     * still in the Struts processing. This includes setting the .... field using the values from .... and
027     * ..., and could be used for many other purposes.<br>
028     * This class (unlike AssetRule) does not delegate responsibility due to limited number of PreRules.
029     */
030    public class AssetPreRule extends MaintenancePreRulesBase {
031    
032        protected static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(AssetPreRule.class);
033    
034        protected Asset newAsset;
035        protected Asset copyAsset;
036        protected String personId;
037    
038        public AssetPreRule() {
039        }
040    
041        /**
042         * Returns the Universal User Id of the current logged-in user
043         * 
044         * @return String the PersonId
045         */
046    
047        public String getPersonId() {
048            if (ObjectUtils.isNull(personId)) {
049                this.personId = GlobalVariables.getUserSession().getPerson().getPrincipalId();
050            }
051            return this.personId;
052        }
053    
054        /**
055         * Sets up a convenience object and few other Asset attributes
056         * 
057         * @see org.kuali.kfs.coa.document.validation.impl.MaintenancePreRulesBase#doCustomPreRules(org.kuali.rice.kns.document.MaintenanceDocument)
058         */
059        @Override
060      
061        protected boolean doCustomPreRules(MaintenanceDocument document) {
062            setupConvenienceObjects(document);
063            setFederalContribution(document);
064            return true;
065        }
066    
067        /**
068         * Sets the convenience objects like newAsset and oldAsset, so you have short and easy handles to the new and old
069         * objects contained in the maintenance document. It also calls the BusinessObjectBase.refresh(), which will attempt to load all
070         * sub-objects from the DB by their primary keys, if available.
071         * 
072         * @param document - the maintenanceDocument being evaluated
073         */
074        protected void setupConvenienceObjects(MaintenanceDocument document) {
075            // setup newAccount convenience objects, make sure all possible sub-objects are populated
076            newAsset = (Asset) document.getNewMaintainableObject().getBusinessObject();
077            copyAsset = (Asset) ObjectUtils.deepCopy(newAsset);
078            copyAsset.refresh();
079        }
080        
081        protected void setFederalContribution(MaintenanceDocument document) {
082        }
083    
084        
085    }
086