package org.openswing.swing.customvo.client; import java.math.*; import java.sql.*; import java.util.*; import org.openswing.swing.customvo.java.*; import org.openswing.swing.message.receive.java.*; import org.openswing.swing.table.client.*; import org.openswing.swing.table.java.*; /** * <p>Title: OpenSwing Framework</p> * <p>Description: Grid controller used to manage custom grid.</p> * <p>Copyright: Copyright (C) 2006 Mauro Carniel</p> * * <p> This file is part of JAllInOne ERP/CRM application. * This application is free software; you can redistribute it and/or * modify it under the terms of the (LGPL) Lesser General Public * License as published by the Free Software Foundation; * * GNU LESSER GENERAL PUBLIC LICENSE * Version 2.1, February 1999 * * This application 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 * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * The author may be contacted at: * maurocarniel@tin.it</p> * * @author Mauro Carniel * @version 1.0 */ public abstract class CustomGridControlController extends GridController implements GridDataLocator { /** list of CustomFieldVO ojbjects, related to grid columns */ protected ArrayList customFields = null; /** collection of pairs <tablename,HashMap of pairs [attribute name,db field] > */ private HashMap attributesPerTable = new HashMap(); /** collection of pairs <tablename,HashSet of attributes that compose the primary key for the table > */ private HashMap pkPerTable = new HashMap(); public CustomGridControlController(ArrayList customFields) { this.customFields = customFields; CustomFieldVO vo = null; HashMap map = null; HashSet pk = null; for(int i=0;i<customFields.size();i++) { vo = (CustomFieldVO)customFields.get(i); map = (HashMap)attributesPerTable.get(vo.getTableName()); pk = (HashSet)pkPerTable.get(vo.getTableName()); if (map==null) { map = new HashMap(); attributesPerTable.put(vo.getTableName(),map); } if (pk==null) { pk = new HashSet(); pkPerTable.put(vo.getTableName(),pk); } map.put(vo.getAttributeName(),vo.getFieldName()); if (vo.isPk()) pk.add(vo.getAttributeName()); } } /** * @param tableName table name * @return collection of pairs <attribute name,db field>, related to the specified table name */ public final HashMap getAttributesMappingPerTable(String tableName) { return (HashMap)attributesPerTable.get(tableName); } /** * @param tableName table name * @return collection of attributes that compose the primary key of the specified table */ public final HashSet getPrimaryKeyPerTable(String tableName) { return (HashSet)pkPerTable.get(tableName); } /** * @return list of CustomFieldVO ojbjects, related to grid columns */ public final ArrayList getCustomFields() { return customFields; } /** * Callback method invoked when the user has clicked on the insert button * @param valueObject empty value object just created: the user can manage it to fill some attribute values */ public final void createValueObject(ValueObject valueObject) throws Exception { CustomFieldVO vo = null; for(int i=0;i<customFields.size();i++) { vo = (CustomFieldVO)customFields.get(i); if ((vo.getAttributeType()==vo.TYPE_DATE || vo.getAttributeType()==vo.TYPE_DATE_TIME || vo.getAttributeType()==vo.TYPE_TIME) && vo.getDefaultValueDate()!=null) valueObject.getClass().getMethod("set"+vo.getAttributeName().substring(0,1).toUpperCase()+vo.getAttributeName().substring(1),new Class[]{Timestamp.class}).invoke(valueObject,new Object[]{vo.getDefaultValueDate()}); else if (vo.getAttributeType()==vo.TYPE_TEXT && vo.getDefaultValueText()!=null) valueObject.getClass().getMethod("set"+vo.getAttributeName().substring(0,1).toUpperCase()+vo.getAttributeName().substring(1),new Class[]{String.class}).invoke(valueObject,new Object[]{vo.getDefaultValueText()}); else if (vo.getAttributeType()==vo.TYPE_NUM && vo.getDefaultValueNum()!=null) valueObject.getClass().getMethod("set"+vo.getAttributeName().substring(0,1).toUpperCase()+vo.getAttributeName().substring(1),new Class[]{BigDecimal.class}).invoke(valueObject,new Object[]{vo.getDefaultValueNum()}); } } }