public void createParser() throws IOException {
- String parserPackagePostfix = "_exp";
+
String importerClassPostfix = "Exporter";
String parserClassPostfix = "Writer";
- elementPackageName = name+parserPackagePostfix;
importParserDir= new File(converter.getParserDir().getAbsolutePath()+"/"+elementPackageName);
if (!importParserDir.exists())
mainWriter.println();
mainWriter.println(" public " + name + importerClassPostfix+"(Session session, File file, Resource root) throws DatabaseException {");
mainWriter.println(" super(session, file, root);");
- mainWriter.println(" setXmlWriter(new "+name + parserClassPostfix+"(session));");
+ mainWriter.println(" setXmlWriter(new "+name + parserClassPostfix+"(session).resolveDependencies(session));");
mainWriter.println(" }");
mainWriter.println();
mainWriter.println("}");
mainWriter.println(" }");
mainWriter.println(" });");
mainWriter.println(" }");
+
+ mainWriter.println();
+ if (converter.getSubConverters().size() > 0) {
+ mainWriter.println(" public void addDependencies(org.simantics.db.Session session, java.util.Map<String,XMLWriter> map) throws DatabaseException {");
+ for (SchemaConverter sc : converter.getSubConverters()) {
+ String s = sc.className;
+ if (s.endsWith("Ontology"))
+ s = s.substring(0,s.length()-"Ontology".length());
+ s +="Writer";
+ mainWriter.println(" {");
+ mainWriter.println(" XMLWriter parser = new "+s+"(session);");
+ mainWriter.println(" if (!map.containsKey(parser.getSchemaURI())) {");
+ mainWriter.println(" map.put(parser.getSchemaURI(), parser);");
+ mainWriter.println(" parser.addDependencies(session,map);");
+ mainWriter.println(" } else {");
+ mainWriter.println(" parser = map.get(parser.getSchemaURI());");
+ mainWriter.println(" }");
+ mainWriter.println(" add(parser);");
+ mainWriter.println(" }");
+ }
+ mainWriter.println(" }");
+
+ mainWriter.println(" public XMLWriter resolveDependencies(org.simantics.db.Session session) throws DatabaseException {");
+ mainWriter.println(" super.resolveDependencies(session);");
+ for (SchemaConverter sc : converter.getSubConverters()) {
+ String s = sc.schemaNs;
+ mainWriter.println(" if (!nsPrefixes.containsKey(\""+s+"\")) {");
+ mainWriter.println(" nsPrefixes.put(\""+s+"\", \"ns\"+nsPrefixes.size());");
+ mainWriter.println(" }");
+ }
+ mainWriter.println(" return this;");
+ mainWriter.println(" }");
+ }
mainWriter.println("}");
mainWriter.println();
mainWriter.close();
}
+ @Override
+ protected String getPackagePostFix() {
+ return "_exp";
+ }
+
// @Override
// protected void handle(TopLevelAttribute topLevelAttribute) {
//
protected void createReferenceIndicator(SchemaObject parent, RefType referenceType, String refName, String objectName,
String primaryClassName, String secondaryClassName, boolean useElementList, boolean useOriginalList) {
FileWriter fw = getWriter(parent);
- if ("TextOrField".equals(refName))
- System.out.println();
if (referenceType == RefType.Type) {
// create internal class for handling the element and child attachment
secondaryClassName = getName(parent) +"_" +objectName;
String relationName;
String attrName;
+ String ns = null;
if (name != null) {
attrName = name;
- relationName = ontShort+"has"+name;
+ relationName = ontShort+"has"+base.getName(attribute);
if (parent != null)
- relationName = ontShort+getName(parent)+"_has"+name;
+ 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 = base.getRefAttribute(ref);
if (referred != null) {
primitiveType = referred.getType();
simpleType = referred.getSimpleType();
+ if (ref.getNamespaceURI() != null && !ref.getNamespaceURI().equals(this.converter.schemaNs))
+ ns = ref.getNamespaceURI();
}
} else {
TypeEntry binding = base.getTypeEntry(primitiveType);
if (binding != null) {
- writeAttribute(fw, attrName, relationName, binding, isReference);
+ if (ns != null)
+ writeAttribute(fw, ns, attrName, relationName, binding, isReference);
+ else
+ writeAttribute(fw, attrName, relationName, binding, isReference);
return;
} else {
if (simpleType == null) {
}
}
}
+
if (simpleType != null) {
org.w3._2001.xmlschema.List list = simpleType.getList();
if (list != null) {
//String binding = getBindingFromPrimitiveType(base);
TypeEntry binding = this.base.getTypeEntry(base);
- writeAttribute(fw, attrName, relationName, binding, isReference);
+ if (base.getNamespaceURI() != null)
+ writeAttribute(fw, base.getNamespaceURI(), attrName, relationName, binding, isReference);
+ else
+ writeAttribute(fw, attrName, relationName, binding, isReference);
}
} else {
// TODO : using default String attribute should be configured with rules.
fw.writer.println(" }");
}
+ private void writeAttribute(FileWriter fw, String ns, String attrName, String relationName, TypeEntry binding, boolean isReference) {
+ fw.writer.println(" {");
+ fw.writer.println(" if (attribute.getPredicate().equals("+relationName+")) {");
+ fw.writer.println(" writer.writeAttribute(\""+ns+"\",\""+attrName+"\", " + binding.getToString("graph.getValue(attribute.getObject(),"+binding.binding+")")+");");
+ // fw.writer.println(" graph.claimLiteral(element.getData(),"+relationName+","+getValueGetterMethod(binding,"a")+", "+binding.binding+");");
+ // if (isReference)
+ // fw.writer.println(" idProviderValue = a.getValue();");
+ fw.writer.println(" }");
+ fw.writer.println(" }");
+ }
+
@Override
public void handleAttributes(SchemaObject simpleTypeObj) {
SchemaObject parent = simpleTypeObj.getParent();
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);