/* * Copyright (c) 2005-2011 Grameen Foundation USA * All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. * * See also http://www.apache.org/licenses/LICENSE-2.0.html for an * explanation of the license and how it is applied. */ package org.mifos.framework.components.fieldConfiguration.util.helpers; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.mifos.application.servicefacade.ApplicationContextProvider; import org.mifos.framework.business.EntityMaster; import org.mifos.framework.components.fieldConfiguration.business.FieldConfigurationEntity; import org.mifos.framework.components.fieldConfiguration.persistence.LegacyFieldConfigurationDao; import org.mifos.framework.exceptions.HibernateProcessException; import org.mifos.framework.exceptions.PersistenceException; import org.mifos.framework.struts.plugin.helper.EntityMasterData; public class FieldConfig { private static LegacyFieldConfigurationDao legacyFieldConfigurationDao = ApplicationContextProvider.getBean(LegacyFieldConfigurationDao.class); private static FieldConfig instance = new FieldConfig(); private Map<Short, List<FieldConfigurationEntity>> entityFieldMap = new HashMap<Short, List<FieldConfigurationEntity>>(); private Map<Short, List<FieldConfigurationEntity>> entityMandatoryFieldMap = new HashMap<Short, List<FieldConfigurationEntity>>(); private Map<Object, Object> entityMap = EntityMasterData.getEntityMasterMap(); private FieldConfig() { } public Map<Short, List<FieldConfigurationEntity>> getEntityMandatoryFieldMap() { return entityMandatoryFieldMap; } public Map<Short, List<FieldConfigurationEntity>> getEntityFieldMap() { return entityFieldMap; } public Map<Object, Object> getEntityMap() { return entityMap; } public static FieldConfig getInstance() { return instance; } public boolean isFieldHidden(String labelName) { if (labelName == null || labelName.equals("") || labelName.indexOf(".") == -1) { return false; } labelName = labelName.trim(); String entityName = labelName.substring(0, labelName.indexOf(".")); String fieldName = labelName.substring(labelName.indexOf(".") + 1); List<FieldConfigurationEntity> fieldList = getEntityFieldMap().get(getEntityMap().get(entityName)); if (fieldList != null && fieldList.size() > 0) { for (FieldConfigurationEntity fieldConfigurationEntity : fieldList) { FieldConfigurationEntity parentfieldConfigurationEntity = fieldConfigurationEntity .getParentFieldConfig(); if ((fieldConfigurationEntity.getHiddenFlag().equals(FieldConfigurationConstant.YES) || (parentfieldConfigurationEntity != null && parentfieldConfigurationEntity .getHiddenFlag().equals(FieldConfigurationConstant.YES))) && fieldConfigurationEntity.getFieldName().equals(fieldName)) { return true; } } } return false; } public boolean isFieldManadatory(String labelName) { if (labelName == null || labelName.equals("") || labelName.indexOf(".") == -1) { return false; } labelName = labelName.trim(); String entityName = labelName.substring(0, labelName.indexOf(".")); String fieldName = labelName.substring(labelName.indexOf(".") + 1); List<FieldConfigurationEntity> fieldList = getEntityFieldMap().get(getEntityMap().get(entityName)); if (fieldList != null && fieldList.size() > 0) { for (FieldConfigurationEntity fieldConfigurationEntity : fieldList) { FieldConfigurationEntity parentfieldConfigurationEntity = fieldConfigurationEntity .getParentFieldConfig(); if (parentfieldConfigurationEntity == null) { if (fieldConfigurationEntity.getMandatoryFlag().equals(FieldConfigurationConstant.YES) && fieldConfigurationEntity.getHiddenFlag().equals(FieldConfigurationConstant.NO) && fieldConfigurationEntity.getFieldName().equals(fieldName)) { return true; } } else if ((parentfieldConfigurationEntity.getMandatoryFlag().equals(FieldConfigurationConstant.YES) && parentfieldConfigurationEntity.getHiddenFlag().equals(FieldConfigurationConstant.NO) && fieldConfigurationEntity.getFieldName().equals(fieldName) && fieldConfigurationEntity .getHiddenFlag().equals(FieldConfigurationConstant.NO)) || ((parentfieldConfigurationEntity.getMandatoryFlag().equals(FieldConfigurationConstant.NO) && parentfieldConfigurationEntity.getHiddenFlag().equals(FieldConfigurationConstant.NO) && fieldConfigurationEntity.getFieldName().equals(fieldName) && fieldConfigurationEntity.getHiddenFlag().equals(FieldConfigurationConstant.NO) && fieldConfigurationEntity .getMandatoryFlag().equals(FieldConfigurationConstant.YES)))) { return true; } } } return false; } /* This method is used to intialize the mandatory and entiyField maps */ public void init() throws HibernateProcessException, PersistenceException { List<EntityMaster> entityMasterList = legacyFieldConfigurationDao.getEntityMasterList(); for (EntityMaster entityMaster : entityMasterList) { getEntityFieldMap().put(entityMaster.getId(), legacyFieldConfigurationDao.getListOfFields(entityMaster.getId())); getEntityMandatoryFieldMap().put(entityMaster.getId(), getMandatoryFieldList(entityMaster.getId())); } } private List<FieldConfigurationEntity> getMandatoryFieldList(Short entityId) { List<FieldConfigurationEntity> fieldList = getEntityFieldMap().get(entityId); List<FieldConfigurationEntity> mandatoryFieldList = new ArrayList<FieldConfigurationEntity>(); for (FieldConfigurationEntity fieldConfigurationEntity : fieldList) { if (isFieldManadatory(fieldConfigurationEntity.getLabel())) { mandatoryFieldList.add(fieldConfigurationEntity); } } return mandatoryFieldList; } }