<%@ jet package="org.geotools.maven.xmlcodegen.templates" imports="org.geotools.maven.xmlcodegen.* java.util.* org.apache.xml.serialize.* org.eclipse.xsd.* java.io.* org.geotools.xml.*" %> <% Object[] arguments = (Object[]) argument; XSDNamedComponent named = (XSDNamedComponent)arguments[0]; BindingConstructorArgument[] constructorArgs = (BindingConstructorArgument[]) arguments[1]; Class bindingBaseClass = (Class)arguments[2]; XSDSchema schema = named.getSchema(); XSDTypeDefinition type = null; String desc = null; if (named instanceof XSDTypeDefinition) { type = (XSDTypeDefinition)named; desc = "type"; } if (named instanceof XSDElementDeclaration) { type = ((XSDElementDeclaration)named).getTypeDefinition(); desc = "element"; } if (named instanceof XSDAttributeDeclaration) { type = ((XSDAttributeDeclaration)named).getTypeDefinition(); desc = "attribute"; } String ns = schema.getTargetNamespace(); String prefix = Schemas.getTargetPrefix( schema ); %> import org.geotools.xml.*; import <%=bindingBaseClass.getName()%>; <% if ( constructorArgs != null ) { for ( int i = 0;i < constructorArgs.length; i++ ) { Class arg = constructorArgs[i].clazz; %> import <%=arg.getName()%>; <% } } %> import javax.xml.namespace.QName; /** * Binding object for the <%=desc%> <%=named.getTargetNamespace()%>:<%=named.getName()%>. * *

*

 *	 
<%
	
	OutputFormat output = new OutputFormat();
	output.setOmitXMLDeclaration(true);
	output.setIndenting(true);
	
	StringWriter writer = new StringWriter();
	XMLSerializer serializer = new XMLSerializer(writer,output);

	try {
		serializer.serialize(named.getElement());
	} 
	catch (IOException e) {
		e.printStackTrace();
		return null;
	}
	
	String[] lines = writer.getBuffer().toString().split("\n");
	for (int i = 0; i < lines.length; i++) {
%>
 *  <%=lines[i].replaceAll("<","<").replaceAll(">",">")%>
<%
	}
%> 
 *		
 *	  
 *	 
*

* * @generated */ <% String className = named.getName().substring(0,1).toUpperCase() + named.getName().substring(1) + "Binding"; String baseClassName = bindingBaseClass.getName(); baseClassName = baseClassName.substring(bindingBaseClass.getPackage().getName().length()+1); %> public class <%=className%> extends <%=baseClassName%> { <% if ( constructorArgs != null ) { List fieldNames = new ArrayList(); StringBuffer constructor = new StringBuffer(); constructor.append("public " + className + "( "); for ( int i = 0; i < constructorArgs.length; i++ ) { String fieldName = constructorArgs[i].getName(); Class arg = constructorArgs[i].clazz; String typeName = arg.getName(); if ( typeName.lastIndexOf( '.' ) != -1 ) { typeName = typeName.substring( typeName.lastIndexOf( '.') + 1 ); } fieldNames.add( fieldName ); if ( "member".equals(constructorArgs[i].getMode() ) ) { %> <%=typeName%> <%=fieldName%>; <% } constructor.append( typeName + " " + fieldName ); constructor.append( "," ); } constructor.setLength( constructor.length()-1 ); constructor.append( " ) {\n"); constructor.append( "\t\tsuper("); boolean trim = false; for ( int i = 0; i < constructorArgs.length; i++ ) { String fieldName = (String) fieldNames.get(i); if ( "parent".equals( constructorArgs[i].getMode() ) ) { constructor.append(fieldName + ","); trim = true; } } if (trim) { constructor.setLength(constructor.length()-1); } constructor.append( ");\n"); for ( int i = 0; i < constructorArgs.length; i++ ) { String fieldName = (String) fieldNames.get(i); if ( "member".equals( constructorArgs[i].getMode() ) ) { constructor.append( "\t\tthis." + fieldName + " = " + fieldName + ";\n"); } } constructor.append( "\t}\n" ); %> <%=constructor.toString()%> <% } %> /** * @generated */ public QName getTarget() { return <%=prefix.toUpperCase()%>.<%=named.getName()%>; } /** * * * * @generated modifiable */ public Class getType() { return null; } <% if (type instanceof XSDSimpleTypeDefinition) { %> /** * * * * @generated modifiable */ public Object parse(InstanceComponent instance, Object value) throws Exception { //TODO: implement and remove call to super return super.parse(instance,value); } <% } else { %> /** * * * * @generated modifiable */ public Object parse(ElementInstance instance, Node node, Object value) throws Exception { //TODO: implement and remove call to super return super.parse(instance,node,value); } <% } %> }