001 package org.trails.component;
002
003 import org.apache.tapestry.contrib.table.model.ognl.ExpressionTableColumn;
004 import org.apache.tapestry.services.ExpressionEvaluator;
005 import org.trails.descriptor.IPropertyDescriptor;
006
007 import java.text.DecimalFormat;
008 import java.text.Format;
009 import java.text.SimpleDateFormat;
010
011 public class TrailsTableColumn extends ExpressionTableColumn
012 {
013
014 protected IPropertyDescriptor propertyDescriptor;
015
016 public TrailsTableColumn(IPropertyDescriptor propertyDescriptor, ExpressionEvaluator evaluator)
017 {
018 super(propertyDescriptor.getName(), propertyDescriptor.getDisplayName(),
019 propertyDescriptor.getName(), true, evaluator);
020 this.propertyDescriptor = propertyDescriptor;
021 }
022
023 public IPropertyDescriptor getPropertyDescriptor()
024 {
025 return propertyDescriptor;
026 }
027
028 public Object getColumnValue(Object arg0)
029 {
030 Object value = super.getColumnValue(arg0);
031 if (propertyDescriptor.getFormat() != null)
032 {
033 try
034 {
035 Format format = null;
036 if (propertyDescriptor.isDate())
037 {
038 format = new SimpleDateFormat(propertyDescriptor.getFormat());
039 }
040 if (propertyDescriptor.isNumeric())
041 {
042 format = new DecimalFormat(propertyDescriptor.getFormat());
043 }
044 return format.format(value);
045 } catch (IllegalArgumentException e)
046 {
047 return value;
048 }
049 } else
050 {
051 return value;
052 }
053 }
054 }