%@ jet package="org.geotools.xml.codegen.templates" imports="java.util.* org.apache.xml.serialize.* org.eclipse.xsd.* java.io.*" %> <% Object[] arguments = (Object[]) argument; XSDNamedComponent named = (XSDNamedComponent)arguments[0]; Class[] constructorArgs = (Class[]) arguments[1]; 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(); Map pre2ns = schema.getQNamePrefixToNamespaceMap(); String prefix = null; for (Iterator itr = pre2ns.entrySet().iterator(); itr.hasNext();) { Map.Entry entry = (Map.Entry)itr.next(); if (entry.getValue().equals(ns)) { prefix = (String)entry.getKey(); break; } } %> import org.geotools.xml.*; <% if ( constructorArgs != null ) { for ( int i = 0; i < constructorArgs.length; i++ ) { %> import <%=constructorArgs[i].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";
if (type instanceof XSDSimpleTypeDefinition) {
%>
public class <%=className%> extends AbstractSimpleBinding {
<%
}
else {
%>
public class <%=className%> extends AbstractComplexBinding {
<%
}
%>
<%
if ( constructorArgs != null ) {
List fieldNames = new ArrayList();
StringBuffer constructor = new StringBuffer();
constructor.append("public " + className + "( ");
for ( int i = 0; i < constructorArgs.length; i++ ) {
Class arg = constructorArgs[i];
String typeName = arg.getName();
if ( typeName.lastIndexOf( '.' ) != -1 ) {
typeName = typeName.substring( typeName.lastIndexOf( '.') + 1 );
}
String fieldName = typeName.toLowerCase();
fieldNames.add( fieldName );
%>
<%=typeName%> <%=fieldName%>;
<%
constructor.append( typeName + " " + fieldName );
if ( i != constructorArgs.length - 1 ) {
constructor.append( "," );
}
}
constructor.append( " ) {\n");
for ( int i = 0; i < fieldNames.size(); i++ ) {
String fieldName = (String)fieldNames.get( i );
constructor.append( "\t\tthis." + fieldName + " = " + fieldName + ";\n");
}
constructor.append( "\t}\n" );
%>
<%=constructor.toString()%>
<%
}
%>
/**
* @generated
*/
public QName getTarget() {
return <%=prefix.toUpperCase()%>.<%=named.getName().toUpperCase()%>;
}
/**
*
*
*
* @generated modifiable
*/
public Class getType() {
return null;
}
<%
if (type instanceof XSDSimpleTypeDefinition) {
%>
/**
*
*
*
* @generated modifiable
*/
public Object parse(InstanceComponent instance, Object value)
throws Exception {
//TODO: implement
return null;
}
<%
}
else {
%>
/**
*
*
*
* @generated modifiable
*/
public Object parse(ElementInstance instance, Node node, Object value)
throws Exception {
//TODO: implement
return null;
}
<%
}
%>
}