/* * Copyright 2004-2007 IDCA. All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the * following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of conditions and * the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions * and the following disclaimer in the documentation and/or other materials provided with the * distribution. * * THIS SOFTWARE IS PROVIDED BY IDCA AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IDCA OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * * The views and conclusions contained in the software and documentation are those of the authors and * should not be interpreted as representing official policies, either expressed or implied, of IDCA. */ package com.idcanet.vasc.impl; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import com.idcanet.vasc.annotations.VascAnnotationParser; import com.idcanet.vasc.core.VascEventListener; import com.idcanet.vasc.core.VascTable; import com.idcanet.vasc.core.VascTableController; import com.idcanet.vasc.core.column.VascAnnotationTableColumn; import com.idcanet.vasc.core.column.VascTableColumn; import com.idcanet.vasc.impl.column.BeanPropertyVascColumnValue; import com.idcanet.vasc.impl.column.DefaultVascColumnEditor; import com.idcanet.vasc.impl.column.DefaultVascColumnRenderer; /** * * @author Willem Cazander * @version 1.0 Apr 28, 2007 */ public class DefaultVascTableController implements VascTableController { private Logger logger = null; public DefaultVascTableController() { logger = Logger.getLogger(DefaultVascTableController.class.getName()); } /** * @see com.idcanet.vasc.core.VascTableController#finalizeVascColumns(com.idcanet.vasc.core.VascTable) */ public void finalizeVascColumns(VascTable table) throws Exception { VascAnnotationParser vap = new VascAnnotationParser(); for(VascTableColumn c:table.getTableColumns()) { if (c instanceof VascAnnotationTableColumn) { VascAnnotationTableColumn column = (VascAnnotationTableColumn)c; if (c.getName()==null) { c.setName(vap.getVascNameKey(table.getVascRecordCreator().getObjectClass(), column.getBeanProperty())); } if (c.getToolTip()==null) { c.setToolTip(vap.getVascToolTipKey(table.getVascRecordCreator().getObjectClass(), column.getBeanProperty())); } if (c.getDefaultValue()==null) { c.setDefaultValue(vap.getVascDefaultValue(table.getVascRecordCreator().getObjectClass(), column.getBeanProperty())); } if (c.getWidth()==null) { Object obj = vap.getVascColumnWidth(table.getVascRecordCreator().getObjectClass(), column.getBeanProperty()); if (obj instanceof Integer) { c.setWidth((Integer)obj); } // get KEY } if (c.getHelpId()==null) { c.setHelpId(vap.getVascHelpId(table.getVascRecordCreator().getObjectClass(), column.getBeanProperty())); } if (c.getVascColumnValue()==null) { c.setVascColumnValue(new BeanPropertyVascColumnValue(column.getBeanProperty())); } if (c.getImage()==null) { c.setImage(vap.getVascImage(table.getVascRecordCreator().getObjectClass(),column.getBeanProperty())); } } if (c.getVascColumnEditor()==null) { c.setVascColumnEditor(new DefaultVascColumnEditor()); } if (c.getVascColumnRenderer()==null) { c.setVascColumnRenderer(new DefaultVascColumnRenderer()); } } } /** * @see com.idcanet.vasc.core.VascTableController#finalizeVascTable(com.idcanet.vasc.core.VascTable) */ public void finalizeVascTable(VascTable table) throws Exception { } /** * @see com.idcanet.vasc.core.VascTableController#getTotalColumnsWidth(com.idcanet.vasc.core.VascTable) */ public Integer getTotalColumnsWidth(VascTable table) { int result = 0; for(VascTableColumn c:table.getTableColumns()) { if(c.getWidth()==null) { Logger.getLogger(VascTable.class.getName()).finer("Column no size: "+c.getName()); } else { result+=c.getWidth(); } } return result; } /** * @see com.idcanet.vasc.core.VascTableController#initEditObject(com.idcanet.vasc.core.VascTable, java.lang.Object) */ public Object initEditObject(VascTable table, Object object) throws Exception { if (object!=null) { return object; } object = table.getVascRecordCreator().newRecord(table); return object; } public void initEditObjectColumn(VascTableColumn c,Object bean) throws Exception { Object value = c.getVascColumnValue().getValue(c, bean); if(value==null & c.getDefaultValue()!=null) { try { logger.finer("Setting default value for: "+c.getName()+" def: "+c.getDefaultValue()); c.getVascColumnValue().setValue(c, bean, c.getDefaultValue()); } catch (Exception e) { logger.log(Level.WARNING,"Error in setting default value: '"+c.getDefaultValue()+"' error: "+e.getMessage(),e); } } } /** * @see com.idcanet.vasc.core.VascTableController#refreshData() */ public void refreshData(VascTable table) throws Exception { table.setTableData(table.getVascDataSource().execute()); fireVascEvent(VascEventListener.VascEventType.DATA_UPDATE, null); } public void handleException(Exception e,VascTable table) { Logger.getLogger(DefaultVascTableController.class.getName()).log(Level.WARNING,e.getMessage(),e); } List eventListeners = new ArrayList(2); public void addEventListener(VascEventListener e) { eventListeners.add(e); } public void removeEventListener(VascEventListener e) { eventListeners.remove(e); } public void fireVascEvent(VascEventListener.VascEventType type,Object data) { for(VascEventListener e:eventListeners) { e.vascEvent(type, data); } } }