dflorey     2004/06/23 06:23:47

  Modified:    proposals/projector/src/java/org/apache/slide/projector/processor/table
                        TableGenerator.java
  Log:
  Processors can be used to render special table cells
  
  Revision  Changes    Path
  1.8       +37 -17    
jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TableGenerator.java
  
  Index: TableGenerator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/projector/src/java/org/apache/slide/projector/processor/table/TableGenerator.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TableGenerator.java       22 Jun 2004 15:22:21 -0000      1.7
  +++ TableGenerator.java       23 Jun 2004 13:23:47 -0000      1.8
  @@ -6,14 +6,18 @@
   import org.apache.slide.projector.descriptor.ParameterDescriptor;
   import org.apache.slide.projector.descriptor.ResourceValueDescriptor;
   import org.apache.slide.projector.descriptor.StringValueDescriptor;
  +import org.apache.slide.projector.descriptor.URIValueDescriptor;
   import org.apache.slide.projector.engine.ProcessorManager;
  +import org.apache.slide.projector.util.ProcessorHelper;
   import org.apache.slide.projector.util.StoreHelper;
   import org.apache.slide.projector.value.*;
   import org.apache.slide.projector.ConfigurationException;
   import org.apache.slide.projector.ProcessException;
  +import org.apache.slide.projector.Processor;
   import org.apache.slide.projector.Result;
   import org.apache.slide.projector.Context;
   import org.apache.slide.projector.Store;
  +import org.apache.slide.projector.URI;
   import org.apache.slide.projector.processor.SimpleProcessor;
   import org.apache.slide.projector.i18n.ParameterMessage;
   import org.apache.slide.projector.i18n.ErrorMessage;
  @@ -46,7 +50,8 @@
       final private static String HEADER = "header";
       final private static String KEY = "key";
       final private static String VALUE = "value";
  -    final private static String FRAGMENT = "fragment";
  +    final private static String PROCESSOR = "processor";
  +    final private static String PARAMETERS = "parameters";
       
       final private static String HEADERS = "headers";
       final private static String COLUMNS = "columns";
  @@ -80,7 +85,8 @@
           headerParameterDescriptors.add(new ParameterDescriptor(KEY, new 
ParameterMessage("tableGenerator/parameter/columns/key"), new 
StringValueDescriptor()));
           headerParameterDescriptors.add(new ParameterDescriptor(RESIZABLE, new 
ParameterMessage("tableGenerator/parameter/columns/resizable"), new 
BooleanValueDescriptor(), BooleanValue.FALSE));
           headerParameterDescriptors.add(new ParameterDescriptor(SORTABLE, new 
ParameterMessage("tableGenerator/parameter/columns/sortable"), new 
BooleanValueDescriptor(), BooleanValue.FALSE));
  -        headerParameterDescriptors.add(new ParameterDescriptor(FRAGMENT, new 
ParameterMessage("tableGenerator/parameter/columns/fragment"), new 
StringValueDescriptor(getDefinedFragments()), NullValue.NULL));
  +        headerParameterDescriptors.add(new ParameterDescriptor(PROCESSOR, new 
ParameterMessage("tableGenerator/parameter/columns/processor"), new 
URIValueDescriptor(), NullValue.NULL));
  +        headerParameterDescriptors.add(new ParameterDescriptor(PARAMETERS, new 
ParameterMessage("tableGenerator/parameter/columns/parameters"), new 
MapValueDescriptor(), NullValue.NULL));
           parameterDescriptorList.add(new ParameterDescriptor(COLUMNS_PARAMETER, new 
ParameterMessage("tableGenerator/parameter/columns"),
                        new ArrayValueDescriptor(new 
MapValueDescriptor((ParameterDescriptor [])headerParameterDescriptors.toArray(new 
ParameterDescriptor[headerParameterDescriptors.size()])))));
           parameterDescriptorList.add(new ParameterDescriptor(PARAMETER, new 
ParameterMessage("tableGenerator/parameter/parameter"), new MapValueDescriptor(), new 
MapValue(new HashMap())));
  @@ -165,23 +171,37 @@
               Map inputParameter = ((MapValue)input[i]).getMap();
                for ( int j = 0; j < columns.length; j++ ) {
                        Map columnMap = ((MapValue)columns[j]).getMap();
  -                     Object value = columnMap.get(VALUE);
  -                     String key = columnMap.get(KEY).toString();
  -                     if ( value == null || value == NullValue.NULL ) {
  -                             value = inputParameter.get(key);
  -                     }
  +                     Value processorUri = (Value)columnMap.get(PROCESSOR);
                        Map columnParameters = new HashMap();
                        columnParameters.putAll(parameter);
  -                     columnParameters.put(VALUE, value);
  -                     Template template = columnTemplate;
  -                     Value fragment = (Value)columnMap.get(FRAGMENT);
  -                     if ( fragment != NullValue.NULL ) {
  -                             template = getOptionalFragment(fragment.toString());
  -                     }
  -                     if ( size != null && 
TableHandler.COLLAPSED.equals(size.get(key))) {
  -                             template = collapsedColumnTemplate;
  +                     String key = columnMap.get(KEY).toString();
  +                     if ( processorUri != NullValue.NULL ) {
  +                     Processor processor = 
ProcessorManager.getInstance().getProcessor((URI)processorUri);
  +                     Value processorParameters = (Value)columnMap.get(PARAMETERS);
  +                     Map columnProcessorParamters;
  +                     if ( processorParameters instanceof MapValue ) {
  +                             columnProcessorParamters = 
((MapValue)processorParameters).getMap();
  +                     } else {
  +                             columnProcessorParamters = new HashMap();
  +                     }
  +                     ProcessorHelper.validate(processor.getParameterDescriptors(), 
columnProcessorParamters, context);
  +                     Result processorResult = 
processor.process(columnProcessorParamters, context);
  +                     Value resultEntry = 
(Value)processorResult.getResultEntries().get(key);
  +                     if ( resultEntry instanceof PrintableValue ) {
  +                             ((PrintableValue)resultEntry).print(columnsBuffer);
  +                     }
  +                     } else {
  +                     Object value = columnMap.get(VALUE);
  +                     if ( value == null || value == NullValue.NULL ) {
  +                             value = inputParameter.get(key);
  +                     }
  +                     columnParameters.put(VALUE, value);
  +                     Template template = columnTemplate;
  +                             if ( size != null && 
TableHandler.COLLAPSED.equals(size.get(key))) {
  +                                     template = collapsedColumnTemplate;
  +                             }
  +                             template.evaluate(columnsBuffer, columnParameters);
                        }
  -                     template.evaluate(columnsBuffer, columnParameters);
                }       
                inputParameter.put(COLUMNS, new StringValue(columnsBuffer.toString()));
        }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to