public void createParser() throws IOException {
- String parserPackagePostfix = "_elem";
String importerClassPostfix = "Importer";
String parserClassPostfix = "Parser";
- elementPackageName = name+parserPackagePostfix;
+
importParserDir= new File(converter.getParserDir().getAbsolutePath()+"/"+elementPackageName);
if (!importParserDir.exists())
mainWriter.println("public class " + name + importerClassPostfix+" extends AbstractImporter {");
mainWriter.println();
mainWriter.println(" public " + name + importerClassPostfix+"(Session session, File file) {");
- mainWriter.println(" super(session, file, new "+name + parserClassPostfix+"());");
+ mainWriter.println(" super(session, file, new "+name + parserClassPostfix+"().resolveDependencies());");
mainWriter.println(" }");
mainWriter.println();
mainWriter.println("}");
for (String s : ruleClassNames) {
mainWriter.println(" add(new "+s+"());");
}
+ mainWriter.println();
+ mainWriter.println(" }");
+ mainWriter.println();
+ if (converter.getSubConverters().size() > 0) {
+ mainWriter.println(" public void addDependencies(java.util.Map<String,XMLParser> map) {");
+ for (SchemaConverter sc : converter.getSubConverters()) {
+ String s = sc.className;
+ if (s.endsWith("Ontology"))
+ s = s.substring(0,s.length()-"Ontology".length());
+ s +="Parser";
+ mainWriter.println(" {");
+ mainWriter.println(" XMLParser parser = new "+s+"();");
+ mainWriter.println(" if (!map.containsKey(parser.getSchemaURI())) {");
+ mainWriter.println(" map.put(parser.getSchemaURI(), parser);");
+ mainWriter.println(" parser.addDependencies(map);");
+ mainWriter.println(" } else {");
+ mainWriter.println(" parser = map.get(parser.getSchemaURI());");
+ mainWriter.println(" }");
+ mainWriter.println(" add(parser);");
+ mainWriter.println(" }");
+ }
mainWriter.println(" }");
+ }
mainWriter.println("}");
mainWriter.println();
mainWriter.close();
}
+ @Override
+ protected String getPackagePostFix() {
+ return "_elem";
+ }
+
@Override
public void handleSimpleType(SchemaObject parent, SchemaObject simpleTypeObj) {
}
fw.writer.println(" @Override");
fw.writer.println(" public void configure(WriteGraph graph, Deque<ParserElement> parents, ParserElement element) throws DatabaseException {");
if (inheritance.type == InheritanceType.ComplexType) {
- fw.writer.println(" super.configure(graph,parents,element);");
+ fw.writer.println(" super.configure(graph,parents,element);");
}
- fw.writer.println(" "+getOntologyImport());
-
+ fw.writer.println(" "+getOntologyImport());
+ fw.writer.println(" Layer0 L0 = Layer0.getInstance(graph);");
+ fw.writer.println(" XMLResource XML = XMLResource.getInstance(graph);");
this.base.handleComplexTypeAttributes(complexTypeObj);
this.base.handleExtensionAttributes(complexTypeObj);
@Override
public void createReferenceIndicator(SchemaObject parent, RefType referenceType, String refName, String objectName, String primaryClassName, String secondaryClassName, boolean useElementList, boolean useOriginalList) {
+// if (refName == null)
+// System.out.println();
FileWriter fw = getWriter(parent);
if (referenceType == RefType.Type) {
// create internal class for handling the element and child attachment
// element type specific list
fw.delayedWriter.println(" {");
- fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "List);");
- fw.delayedWriter.println(" if (list == null) {");
- fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" graph.claim(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "List,list);");
- fw.delayedWriter.println(" } else {");
- fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" }");
+ fw.delayedWriter.println(" element.registerListChild("+ontShort+getName(parent)+"_has"+refName + "_List, child);");
+// fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "_List);");
+// fw.delayedWriter.println(" if (list == null) {");
+// fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" graph.claim(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "_List,list);");
+// fw.delayedWriter.println(" } else {");
+// fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" }");
fw.delayedWriter.println(" }");
}
if (useOriginalList) {
// generic list
fw.delayedWriter.println(" {");
fw.delayedWriter.println(" XMLResource XML = XMLResource.getInstance(graph);");
- fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(), XML.hasOriginalElementList);");
- fw.delayedWriter.println(" if (list == null) {");
- fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" graph.claim(element.getData(), XML.hasOriginalElementList,list);");
- fw.delayedWriter.println(" } else {");
- fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" }");
+ fw.delayedWriter.println(" element.registerListChild(XML.hasOriginalElementList, child);");
+// fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(), XML.hasOriginalElementList);");
+// fw.delayedWriter.println(" if (list == null) {");
+// fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" graph.claim(element.getData(), XML.hasOriginalElementList,list);");
+// fw.delayedWriter.println(" } else {");
+// fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" }");
fw.delayedWriter.println(" }");
}
}
@Override
- protected void createPrimitiveIndicator(SchemaObject parent, String refName, String binding) {
+ protected void createPrimitiveIndicator(SchemaObject parent, String refName, TypeEntry typeEntry, QName typeName) {
FileWriter fw = getWriter(parent);
- fw.writer.println(" addParser(\""+ refName +"\", "+getName(parent) +"_" +refName+".class);");
+ String className = getName(parent) +"_" +refName;
+ fw.writer.println(" addParser(\"" + refName + "\", " + className + ".class);");
+ fw.delayedWriter2.println(" public static class " + className + " extends org.simantics.xml.sax.base.ValueElementParser {");
+ fw.delayedWriter2.println(" public "+ className +"(){");
+ fw.delayedWriter2.println(" super(\""+refName+"\"," +this.ontologyClassName+".URIs."+getName(parent) + "_has"+refName+", "+typeEntry.binding+");");
+ fw.delayedWriter2.println(" }\n");
+ fw.delayedWriter2.println(" @Override");
+ fw.delayedWriter2.println(" public void configure(WriteGraph graph, ParserElement element, java.lang.String value) throws DatabaseException {");
+ fw.delayedWriter2.println(" Layer0 L0 = Layer0.getInstance(graph);");
+
+ SchemaObject simpleType = base.getSimpleType(typeName);
+ String ontologyClassName = converter.getOntologyClassName(typeName.getNamespaceURI());
+ if (ontologyClassName != null && simpleType != null)
+ fw.delayedWriter2.println(" graph.claim(element.getData(), L0.InstanceOf, " + ontologyClassName + ".getInstance(graph)." + getName(simpleType, "") + ");");
+ else {
+ if (typeEntry.l0Type.startsWith("XML"))
+ fw.delayedWriter2.println(" XMLResource XML = XMLResource.getInstance(graph);");
+ fw.delayedWriter2.println(" graph.claim(element.getData(), L0.InstanceOf, " + typeEntry.l0Type + ");");
+ }
- fw.delayedWriter2.println(" public static class " + getName(parent) +"_" +refName+" extends org.simantics.xml.sax.base.ValueElementParser {");
- fw.delayedWriter2.println(" public "+ getName(parent) +"_" +refName +"(){");
- fw.delayedWriter2.println(" super(\""+refName+"\"," +this.ontologyClassName+".URIs."+getName(parent) + "_has"+refName+", "+binding+");");
- fw.delayedWriter2.println(" }");
+ fw.delayedWriter2.println(" graph.claimValue(element.getData(), " +getValueGetter(typeEntry) + ", " + typeEntry.binding + ");");
+ fw.delayedWriter2.println(" }");
fw.delayedWriter2.println(" }");
}
@Override
protected void createElementIndicator(SchemaObject parent, boolean useElementList, String refName, String className, boolean useOriginalList) {
+// if (refName == null)
+// System.out.println();
FileWriter fw = getWriter(parent);
//if (!reference)
fw.writer.println(" addParser(\""+ refName +"\", "+className+".class);");
// element type specific list
fw.delayedWriter.println(" {");
- fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "List);");
- fw.delayedWriter.println(" if (list == null) {");
- fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" graph.claim(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "List,list);");
- fw.delayedWriter.println(" } else {");
- fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" }");
+ fw.delayedWriter.println(" element.registerListChild(" + ontShort+getName(parent)+"_has"+refName + "_List, child);");
+// fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "_List);");
+// fw.delayedWriter.println(" if (list == null) {");
+// fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" graph.claim(element.getData(),"+ontShort+getName(parent)+"_has"+refName + "_List,list);");
+// fw.delayedWriter.println(" } else {");
+// fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" }");
fw.delayedWriter.println(" }");
}
if (useOriginalList) {
// generic list
fw.delayedWriter.println(" {");
fw.delayedWriter.println(" XMLResource XML = XMLResource.getInstance(graph);");
- fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(), XML.hasOriginalElementList);");
- fw.delayedWriter.println(" if (list == null) {");
- fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" graph.claim(element.getData(), XML.hasOriginalElementList,list);");
- fw.delayedWriter.println(" } else {");
- fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
- fw.delayedWriter.println(" }");
+ fw.delayedWriter.println(" element.registerListChild(XML.hasOriginalElementList, child);");
+// fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(), XML.hasOriginalElementList);");
+// fw.delayedWriter.println(" if (list == null) {");
+// fw.delayedWriter.println(" list = org.simantics.db.common.utils.ListUtils.create(graph, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" graph.claim(element.getData(), XML.hasOriginalElementList,list);");
+// fw.delayedWriter.println(" } else {");
+// fw.delayedWriter.println(" org.simantics.db.common.utils.ListUtils.insertBack(graph, list, java.util.Collections.singletonList(child.getData()));");
+// fw.delayedWriter.println(" }");
fw.delayedWriter.println(" }");
}
public void handle(SchemaObject parent, Attribute attribute) {
if (parent == null)
return;
- String name = attribute.getName();
+ String attrName = attribute.getName();
QName primitiveType = attribute.getType();
SimpleType simpleType = attribute.getSimpleType();
QName ref = attribute.getRef();
String relationName;
- String attrName;
- if (name != null) {
- attrName = name;
- relationName = ontShort+"has"+name;
- if (parent != null)
- relationName = ontShort+getName(parent)+"_has"+name;
+ if (attrName != null) {
+ relationName = ontShort+getName(parent)+"_has"+base.getName(attribute);
}
else if (ref != null && parent != null) {
attrName = ref.getLocalPart();
- relationName = ontShort+getName(parent)+"_has"+ref.getLocalPart();
+ relationName = ontShort+getName(parent)+"_has"+base.getName(ref);
Attribute referred = this.base.getRefAttribute(ref);
if (referred != null) {
TypeEntry binding = this.base.getTypeEntry(primitiveType);
if (binding != null) {
- writeAttribute(fw, attrName, relationName, binding, isReference);
+ writeAttribute(fw, attrName, relationName, binding, isReference, primitiveType);
return;
} else {
if (simpleType == null) {
if (simpleType != null) {
org.w3._2001.xmlschema.List list = simpleType.getList();
if (list != null) {
- TypeEntry binding = this.base.getTypeEntry(new QName(SchemaConversionBase.SCHEMA_NS, "string"));
- writeAttribute(fw, attrName, relationName, binding, isReference);
+ QName typeName = new QName(SchemaConversionBase.SCHEMA_NS, "string");
+ TypeEntry binding = this.base.getTypeEntry(typeName);
+ writeAttribute(fw, attrName, relationName, binding, isReference, typeName);
} else {
// Restriction restriction = simpleType.getRestriction();
// if (restriction == null)
//String binding = getBindingFromPrimitiveType(base);
TypeEntry binding = this.base.getTypeEntry(base);
- writeAttribute(fw, attrName, relationName, binding, isReference);
+ writeAttribute(fw, attrName, relationName, binding, isReference, base);
}
} else {
// TODO : using default String attribute should be configured with rules.
//throw new RuntimeException("Cannot resolve type for Attribute " + attrName + " -> " + primitiveType.getLocalPart());
fw.writer.println(" //FIXME: Cannot resolve type for Attribute " + attrName + " Using default type String");
//writeAttribute(fw, attrName, relationName, "STRING", isReference);
- writeAttribute(fw, attrName, relationName, this.base.getTypeEntry("string"), isReference);
+ writeAttribute(fw, attrName, relationName, this.base.getTypeEntry("string"), isReference, new QName(SchemaConversionBase.SCHEMA_NS, "string"));
}
}
- private void writeAttribute(FileWriter fw, String attrName, String relationName, TypeEntry binding, boolean isReference) {
+ private void writeAttribute(FileWriter fw, String attrName, String relationName, TypeEntry binding, boolean isReference, QName typeName) {
+ String ontologyClassName = converter.getOntologyClassName(typeName.getNamespaceURI());
+ String ontologyType = ontologyClassName != null ? ontologyClassName + ".getInstance(graph)." + getName(base.getSimpleType(typeName)) : binding.l0Type;
fw.writer.println(" {");
fw.writer.println(" Attribute a = element.getAttribute(\"" +attrName+"\");");
fw.writer.println(" if (a != null) {");
- fw.writer.println(" graph.claimLiteral(element.getData(),"+relationName+","+getValueGetterMethod(binding,"a")+", "+binding.binding+");");
+ fw.writer.println(" graph.claimLiteral(element.getData(), " + relationName + ", " + ontologyType + ", " + getValueGetterMethod(binding,"a") + ", " + binding.binding + ");");
if (isReference)
fw.writer.println(" idProviderValue = a.getValue();");
fw.writer.println(" }");
FileWriter fw = getWriter(parent);
NamedAttributeGroup group = this.base.getAttributeGroup(attribute.getRef());
fw.writer.println(commentTag+" AttributeGroup " + group.getName());
- SchemaObject obj = new SchemaObject(parent,attribute);
+ SchemaObject obj = new SchemaObject(base,parent,attribute);
for (Annotated annotated : group.getAttributeOrAttributeGroup()) {
if (annotated instanceof Attribute) {
//handle("AttributeGroups_"+group.getName(),(Attribute)annotated);
}
}
//dd
- if(true)
- System.out.println();
fw.writer.println(commentTag+" End of AttributeGroup " + group.getName());
}
}
-
-
-
-
-
-
+
IDProvider provider;
@Override
public void handleElement(SchemaObject elementObj) {
fw.writer.println(" @Override");
fw.writer.println(" public void configure(WriteGraph graph, Deque<ParserElement> parents, ParserElement element) throws DatabaseException {");
if (inheritance.type == InheritanceType.ComplexType) {
- fw.writer.println(" super.configure(graph,parents,element);");
+ fw.writer.println(" super.configure(graph,parents,element);");
}
- fw.writer.println(" "+getOntologyImport());
+ fw.writer.println(" Layer0 L0 = Layer0.getInstance(graph);");
+ fw.writer.println(" XMLResource XML = XMLResource.getInstance(graph);");
+ fw.writer.println(" "+getOntologyImport());
LocalComplexType complexType = element.getComplexType();
LocalSimpleType simpleType = element.getSimpleType();