X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FImporterGenerator.java;fp=org.simantics.xml.sax%2Fsrc%2Forg%2Fsimantics%2Fxml%2Fsax%2FImporterGenerator.java;h=f3279e25ad4ffea031c61057cd38be0b10c00d1e;hb=81ede25bbf4e80f6363c16fc13ecb1add3720acb;hp=c312ab829d96afc952f6b5728cd5bc2494a2a510;hpb=b20ee19b087bd1fdcd73b0f346769b33800929dc;p=simantics%2Finterop.git diff --git a/org.simantics.xml.sax/src/org/simantics/xml/sax/ImporterGenerator.java b/org.simantics.xml.sax/src/org/simantics/xml/sax/ImporterGenerator.java index c312ab8..f3279e2 100644 --- a/org.simantics.xml.sax/src/org/simantics/xml/sax/ImporterGenerator.java +++ b/org.simantics.xml.sax/src/org/simantics/xml/sax/ImporterGenerator.java @@ -113,36 +113,45 @@ public class ImporterGenerator extends SchemaConversionBase{ return writer; } - protected String getValueGetter(String binding,String name) { +// protected String getValueGetter(String binding,String name) { +// if (binding == null) +// return name+".getValue()"; +// if ("STRING".equals(binding)) +// return name+".getValue()"; +// if ("BOOLEAN".equals(binding)) +// return "Boolean.parseBoolean("+name+".getValue())"; +// if ("INTEGER".equals(binding)) +// return "Integer.parseInt("+name+".getValue())"; +// if ("DOUBLE".equals(binding)) +// return "Double.parseDouble("+name+".getValue())"; +// if ("FLOAT".equals(binding)) +// return "Float.parseFloat("+name+".getValue())"; +// return name+".getValue()"; +// } +// protected String getValueGetter(String binding) { +// if (binding == null) +// return "value"; +// if ("STRING".equals(binding)) +// return "value"; +// if ("BOOLEAN".equals(binding)) +// return "Boolean.parseBoolean(value)"; +// if ("INTEGER".equals(binding)) +// return "Integer.parseInt(value)"; +// if ("DOUBLE".equals(binding)) +// return "Double.parseDouble(value)"; +// if ("FLOAT".equals(binding)) +// return "Float.parseFloat(value)"; +// return "value"; +// } + protected String getValueGetter(TypeEntry binding,String name) { if (binding == null) return name+".getValue()"; - if ("STRING".equals(binding)) - return name+".getValue()"; - if ("BOOLEAN".equals(binding)) - return "Boolean.parseBoolean("+name+".getValue())"; - if ("INTEGER".equals(binding)) - return "Integer.parseInt("+name+".getValue())"; - if ("DOUBLE".equals(binding)) - return "Double.parseDouble("+name+".getValue())"; - if ("FLOAT".equals(binding)) - return "Float.parseFloat("+name+".getValue())"; - return name+".getValue()"; + return binding.getValueGetter(name); } - - protected String getValueGetter(String binding) { + protected String getValueGetter(TypeEntry binding) { if (binding == null) return "value"; - if ("STRING".equals(binding)) - return "value"; - if ("BOOLEAN".equals(binding)) - return "Boolean.parseBoolean(value)"; - if ("INTEGER".equals(binding)) - return "Integer.parseInt(value)"; - if ("DOUBLE".equals(binding)) - return "Double.parseDouble(value)"; - if ("FLOAT".equals(binding)) - return "Float.parseFloat(value)"; - return "value"; + return binding.getValueGetter(); } protected void handle(TopLevelAttribute topLevelAttribute) { @@ -363,10 +372,13 @@ public class ImporterGenerator extends SchemaConversionBase{ if (useOriginalList(parent, indicator,element, reference, ref, refType)) { // generic list fw.delayedWriter.println(" {"); - fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);"); + //fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);"); + 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(),"+ontShort+"XML_hasOriginalElementList,list);"); + //fw.delayedWriter.println(" graph.claim(element.getData(),"+ontShort+"XML_hasOriginalElementList,list);"); + 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(" }"); @@ -381,7 +393,7 @@ public class ImporterGenerator extends SchemaConversionBase{ fw.delayedWriter2.println(" public static class " + getName(parent) +"_" +ref+" extends org.simantics.xml.sax.base.ValueElementParser {"); fw.delayedWriter2.println(" "+ getName(parent) +"_" +ref +"(){"); - fw.delayedWriter2.println(" super(\""+ref+"\"," +this.ontologyClassName+".URIs."+getName(parent) + "_has"+ref+", Bindings."+binding+");"); + fw.delayedWriter2.println(" super(\""+ref+"\"," +this.ontologyClassName+".URIs."+getName(parent) + "_has"+ref+", "+binding+");"); fw.delayedWriter2.println(" }"); fw.delayedWriter2.println(" }"); } @@ -427,10 +439,13 @@ public class ImporterGenerator extends SchemaConversionBase{ if (useOriginalList(parent, indicator,element, reference, ref, new QName(obj.getName()))) { // generic list fw.delayedWriter.println(" {"); - fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);"); + //fw.delayedWriter.println(" Resource list = graph.getPossibleObject(element.getData(),"+ontShort+"XML_hasOriginalElementList);"); + 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(),"+ontShort+"XML_hasOriginalElementList,list);"); + //fw.delayedWriter.println(" graph.claim(element.getData(),"+ontShort+"XML_hasOriginalElementList,list);"); + 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(" }"); @@ -502,7 +517,8 @@ public class ImporterGenerator extends SchemaConversionBase{ FileWriter fw = getWriter(parent); if (primitiveType != null) { - String binding = getBindingFromPrimitiveType(primitiveType); + //String binding = getBindingFromPrimitiveType(primitiveType); + TypeEntry binding = getTypeEntry(primitiveType); if (binding != null) { writeAttribute(fw, attrName, relationName, binding, isReference); @@ -522,21 +538,24 @@ public class ImporterGenerator extends SchemaConversionBase{ QName base = restriction.getBase(); - String binding = getBindingFromPrimitiveType(base); + //String binding = getBindingFromPrimitiveType(base); + TypeEntry binding = getTypeEntry(base); writeAttribute(fw, attrName, relationName, binding, isReference); } 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, "STRING", isReference); + writeAttribute(fw, attrName, relationName, getTypeEntry("string"), isReference); } } - private void writeAttribute(FileWriter fw, String attrName, String relationName, String binding, boolean isReference) { + //private void writeAttribute(FileWriter fw, String attrName, String relationName, String binding, boolean isReference) { + private void writeAttribute(FileWriter fw, String attrName, String relationName, TypeEntry binding, boolean isReference) { 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+","+getValueGetter(binding,"a")+", Bindings."+binding+");"); + fw.writer.println(" graph.claimLiteral(element.getData(),"+relationName+","+getValueGetter(binding,"a")+", "+binding.binding+");"); if (isReference) fw.writer.println(" idProviderValue = a.getValue();"); fw.writer.println(" }"); @@ -555,10 +574,12 @@ public class ImporterGenerator extends SchemaConversionBase{ QName base = restriction.getBase(); - String binding = getBindingFromPrimitiveType(base); + //String binding = getBindingFromPrimitiveType(base); + TypeEntry binding = getTypeEntry(base); fw.writer.println(" @Override"); fw.writer.println(" public void configure(WriteGraph graph, Element element, java.lang.String value) throws DatabaseException {"); - fw.writer.println(" graph.claimValue(element.getData(),"+getValueGetter(binding)+", Bindings."+binding+");"); + //fw.writer.println(" graph.claimValue(element.getData(),"+getValueGetter(binding)+", Bindings."+binding+");"); + fw.writer.println(" graph.claimValue(element.getData(),"+getValueGetter(binding)+", "+binding.binding +");"); fw.writer.println(" }"); } @@ -616,7 +637,8 @@ public class ImporterGenerator extends SchemaConversionBase{ if (defaultValue == null) defaultValue = getDefaultValue(atype); - String binding = getBindingFromPrimitiveType(atype); + //String binding = getBindingFromPrimitiveType(atype); + TypeEntry binding = getTypeEntry(atype); if (i > 0) fw.writer.print(","); if (defaultValue != null) @@ -625,7 +647,7 @@ public class ImporterGenerator extends SchemaConversionBase{ fw.writer.print(getValueGetter(binding,"a"+(i++))); } fw.writer.println("};"); - fw.writer.println(" graph.claimLiteral(element.getData(),"+relationName+", value, Bindings."+arrayBinding+");"); + fw.writer.println(" graph.claimLiteral(element.getData(),"+relationName+", value, "+arrayBinding+");"); fw.writer.println(" }"); } @@ -911,6 +933,7 @@ public class ImporterGenerator extends SchemaConversionBase{ writer.println("import org.simantics.db.exception.DatabaseException;"); writer.println("import org.simantics.xml.sax.base.Attribute;"); writer.println("import org.simantics.xml.sax.base.Element;"); + writer.println("import org.simantics.xml.sax.ontology.XMLResource;"); if (!isList) { writer.println("import org.simantics.layer0.Layer0;"); } else {