/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.sys.batch; import java.util.ArrayList; import java.util.List; import org.springframework.beans.factory.InitializingBean; /** * Abstract class which is the parent of all FlatFileSpecification implementations */ public abstract class AbstractFlatFileSpecificationBase implements FlatFileSpecification, InitializingBean { protected Class<?> defaultBusinessObjectClass; protected List<FlatFileObjectSpecification> objectSpecifications; private List<Class<?>> childrenList = new ArrayList<Class<?>>(); /** * @see org.kuali.kfs.sys.batch.FlatFileSpecification#getObjectSpecification(Class) */ public FlatFileObjectSpecification getObjectSpecification(Class<?> businessObjectClass) { for (FlatFileObjectSpecification objectSpecification : objectSpecifications) { if (objectSpecification.getBusinessObjectClass().equals(businessObjectClass)) { return objectSpecification; } } return null; } /** * @see org.kuali.kfs.sys.batch.FlatFileSpecification#getObjectSpecifications() */ public List<FlatFileObjectSpecification> getObjectSpecifications() { return objectSpecifications; } /** * Sets the list of FlatFileObjectSpecifications which instruct the FlatFileSpecification how to parse * @param objectSpecifications */ public void setObjectSpecifications(List<FlatFileObjectSpecification> objectSpecifications) { this.objectSpecifications = objectSpecifications; } public void setDefaultBusinessObjectClass(Class<?> businessObjectClass) { this.defaultBusinessObjectClass = businessObjectClass; } public void afterPropertiesSet() throws Exception{ Class<?> child; for(FlatFileObjectSpecification specification: objectSpecifications) { if(specification.getParentBusinessObjectClass() != null) { child = specification.getBusinessObjectClass(); if(childrenList.contains(child)) { //A child can't appear twice within the same configuration, without having two parents throw new Exception("The child " + child + " can't have more than one parent"); } else { childrenList.add(child); } } } } }