=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/node/LinearNodePipeline.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/node/LinearNodePipeline.java 2014-06-25 11:27:12 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/node/LinearNodePipeline.java 2014-06-25 13:32:36 +0000 @@ -41,14 +41,26 @@ */ public class LinearNodePipeline implements NodePipeline { - private List nodeTransformers = Lists.newArrayList(); + private class NodeTransformerWithArgs + { + NodeTransformer transformer; + List args; + + private NodeTransformerWithArgs( NodeTransformer transformer, List args ) + { + this.transformer = transformer; + this.args = args; + } + } + + private List nodeTransformers = Lists.newArrayList(); @Override public Node process( Node node ) { - for ( NodeTransformer transformer : nodeTransformers ) + for ( NodeTransformerWithArgs nodeTransformerWithArgs : nodeTransformers ) { - node = transformer.transform( node, Lists.newArrayList() ); + node = nodeTransformerWithArgs.transformer.transform( node, nodeTransformerWithArgs.args ); } return node; @@ -56,6 +68,11 @@ public void addTransformer( NodeTransformer nodeTransformer ) { - nodeTransformers.add( checkNotNull( nodeTransformer ) ); + nodeTransformers.add( new NodeTransformerWithArgs( checkNotNull( nodeTransformer ), Lists.newArrayList() ) ); + } + + public void addTransformer( NodeTransformer nodeTransformer, List args ) + { + nodeTransformers.add( new NodeTransformerWithArgs( checkNotNull( nodeTransformer ), args ) ); } } === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/fieldfilter/DefaultFieldFilterService.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/fieldfilter/DefaultFieldFilterService.java 2014-06-25 11:27:12 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/fieldfilter/DefaultFieldFilterService.java 2014-06-25 13:32:36 +0000 @@ -39,6 +39,7 @@ import org.hisp.dhis.dxf2.parser.ParserService; import org.hisp.dhis.node.AbstractNode; import org.hisp.dhis.node.NodePropertyConverter; +import org.hisp.dhis.node.NodeTransformer; import org.hisp.dhis.node.types.CollectionNode; import org.hisp.dhis.node.types.ComplexNode; import org.hisp.dhis.node.types.SimpleNode; @@ -68,16 +69,21 @@ @Autowired private SchemaService schemaService; - @Autowired(required = false) + @Autowired( required = false ) private Set presetProviders = Sets.newHashSet(); - @Autowired(required = false) + @Autowired( required = false ) private Set nodePropertyConverters = Sets.newHashSet(); + @Autowired( required = false ) + private Set nodeTransformers = Sets.newHashSet(); + private ImmutableMap presets = ImmutableMap.of(); private ImmutableMap converters = ImmutableMap.of(); + private ImmutableMap transformers = ImmutableMap.of(); + @PostConstruct public void init() { @@ -98,6 +104,15 @@ } converters = converterBuilder.build(); + + ImmutableMap.Builder transformerBuilder = ImmutableMap.builder(); + + for ( NodeTransformer transformer : nodeTransformers ) + { + transformerBuilder.put( transformer.name(), transformer ); + } + + transformers = transformerBuilder.build(); } @Override @@ -138,7 +153,7 @@ return collectionNode; } - @SuppressWarnings("unchecked") + @SuppressWarnings( "unchecked" ) private ComplexNode buildComplexNode( FieldMap fieldMap, Class klass, Object object ) { Schema schema = schemaService.getDynamicSchema( klass ); @@ -272,12 +287,7 @@ if ( child != null ) { - if ( fieldValue.getAlias() != null ) - { - child.setName( fieldValue.getAlias() ); - } - - complexNode.addChild( child ); + complexNode.addChild( fieldValue.getPipeline().process( child ) ); } } @@ -356,7 +366,12 @@ } } - value.setAlias( matcher.group( 3 ) ); + if ( matcher.group( 3 ) != null ) + { + NodeTransformer transformer = transformers.get( "rename" ); + value.getPipeline().addTransformer( transformer, Lists.newArrayList( matcher.group( 3 ) ) ); + } + fieldMap.put( matcher.group( 1 ), value ); cleanupFields.add( fieldKey ); === modified file 'dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/fieldfilter/FieldMap.java' --- dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/fieldfilter/FieldMap.java 2014-06-25 11:27:12 +0000 +++ dhis-2/dhis-services/dhis-service-dxf2/src/main/java/org/hisp/dhis/dxf2/fieldfilter/FieldMap.java 2014-06-25 13:32:36 +0000 @@ -31,6 +31,7 @@ import com.google.common.base.Objects; import com.google.common.collect.ForwardingMap; import com.google.common.collect.Maps; +import org.hisp.dhis.node.LinearNodePipeline; import org.hisp.dhis.node.NodePropertyConverter; import java.util.Map; @@ -44,7 +45,7 @@ private NodePropertyConverter nodePropertyConverter; - private String alias; + private final LinearNodePipeline pipeline = new LinearNodePipeline(); @Override protected Map delegate() @@ -67,14 +68,9 @@ return nodePropertyConverter != null; } - public String getAlias() - { - return alias; - } - - public void setAlias( String alias ) - { - this.alias = alias; + public LinearNodePipeline getPipeline() + { + return pipeline; } @Override @@ -82,7 +78,6 @@ { return Objects.toStringHelper( this ) .add( "map", standardToString() ) - .add( "alias", alias ) .add( "nodePropertyConverter", nodePropertyConverter ) .toString(); }