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 }