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.coa.document;
017    
018    import java.util.ArrayList;
019    import java.util.List;
020    
021    import org.kuali.kfs.coa.businessobject.AccountGlobalDetail;
022    import org.kuali.kfs.coa.businessobject.SubObjectCode;
023    import org.kuali.kfs.coa.businessobject.SubObjectCodeGlobal;
024    import org.kuali.kfs.coa.businessobject.SubObjectCodeGlobalDetail;
025    import org.kuali.kfs.sys.KFSConstants;
026    import org.kuali.kfs.sys.document.FinancialSystemGlobalMaintainable;
027    import org.kuali.rice.kns.bo.PersistableBusinessObject;
028    import org.kuali.rice.kns.document.MaintenanceLock;
029    import org.kuali.rice.kns.maintenance.KualiGlobalMaintainableImpl;
030    
031    /**
032     * This class provides some specific functionality for the {@link SubObjCdGlobal} maintenance document generateMaintenanceLocks -
033     * generates maintenance locks on {@link SubObjCd}
034     */
035    public class SubObjCdGlobalMaintainableImpl extends FinancialSystemGlobalMaintainable {
036    
037        /**
038         * This generates maintenance locks on {@link SubObjCd}
039         * 
040         * @see org.kuali.rice.kns.maintenance.Maintainable#generateMaintenanceLocks()
041         */
042        @Override
043        public List<MaintenanceLock> generateMaintenanceLocks() {
044            // create locking rep for each combination of account and object code
045            List<MaintenanceLock> maintenanceLocks = new ArrayList();
046            SubObjectCodeGlobal subObjCdGlobal = (SubObjectCodeGlobal) getBusinessObject();
047    
048            for (AccountGlobalDetail accountGlobalDetail : subObjCdGlobal.getAccountGlobalDetails()) {
049                for (SubObjectCodeGlobalDetail subObjCdGlobalDetail : subObjCdGlobal.getSubObjCdGlobalDetails()) {
050                    MaintenanceLock maintenanceLock = new MaintenanceLock();
051                    maintenanceLock.setDocumentNumber(subObjCdGlobal.getDocumentNumber());
052    
053                    StringBuffer lockrep = new StringBuffer();
054                    lockrep.append(SubObjectCode.class.getName() + KFSConstants.Maintenance.AFTER_CLASS_DELIM);
055                    lockrep.append("fiscalYear" + KFSConstants.Maintenance.AFTER_FIELDNAME_DELIM);
056                    lockrep.append(subObjCdGlobalDetail.getUniversityFiscalYear() + KFSConstants.Maintenance.AFTER_VALUE_DELIM);
057                    lockrep.append("chartOfAccountsCode" + KFSConstants.Maintenance.AFTER_FIELDNAME_DELIM);
058                    lockrep.append(accountGlobalDetail.getChartOfAccountsCode() + KFSConstants.Maintenance.AFTER_VALUE_DELIM);
059                    lockrep.append("accountNumber" + KFSConstants.Maintenance.AFTER_FIELDNAME_DELIM);
060                    lockrep.append(accountGlobalDetail.getAccountNumber() + KFSConstants.Maintenance.AFTER_VALUE_DELIM);
061                    lockrep.append("financialObjectCode" + KFSConstants.Maintenance.AFTER_FIELDNAME_DELIM);
062                    lockrep.append(subObjCdGlobalDetail.getFinancialObjectCode() + KFSConstants.Maintenance.AFTER_VALUE_DELIM);
063                    lockrep.append("financialSubObjectCode" + KFSConstants.Maintenance.AFTER_FIELDNAME_DELIM);
064                    lockrep.append(subObjCdGlobal.getFinancialSubObjectCode());
065    
066                    maintenanceLock.setLockingRepresentation(lockrep.toString());
067                    maintenanceLocks.add(maintenanceLock);
068                }
069            }
070            return maintenanceLocks;
071        }
072    
073        @Override
074        public Class<? extends PersistableBusinessObject> getPrimaryEditedBusinessObjectClass() {
075            return SubObjectCode.class;
076        }
077    }