public StringBuilder toVelocityTemplate ( ) { final StringBuilder buffer = new StringBuilder ( ) ; buffer . append ( "<" ) ; buffer . append ( "${" ) . append ( getName ( ) ) . append ( ".name}\n" ) ; if ( getAttributes ( ) != null && ! getAttributes ( ) . isEmpty ( ) ) { buffer . append ( " #foreach(" + "$attribute in $" ) . append ( getName ( ) ) . append ( ".attributes.keySet()" + ")\n" ) ; buffer . append ( "$attribute=\"$" ) . append ( getName ( ) ) . append ( ".getAttributes().get($attribute)\"\n" ) ; buffer . append ( " #end\n" ) ; } buffer . append ( "#if(${" ) . append ( getName ( ) ) . append ( ".endTag})>${" ) . append ( getName ( ) ) . append ( ".content}\n" ) ; if ( getChildren ( ) != null && ! getChildren ( ) . isEmpty ( ) ) { buffer . append ( "#foreach($" ) . append ( getChildren ( ) . get ( 0 ) . getName ( ) ) . append ( " in $" ) . append ( getName ( ) ) . append ( ".children)\n" ) ; for ( final SimpleTag child : getChildren ( ) ) { buffer . append ( child . toVelocityTemplate ( ) . toString ( ) ) ; } buffer . append ( "#end\n" ) ; } buffer . append ( "</${" ) . append ( getName ( ) ) . append ( ".name}>\n" ) ; buffer . append ( "#else />\n" + "#end\n" ) ; return buffer ; }
Creates from this Tag object an velocity template as String object . It puts children Tag object in the template recursively .