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]