+ for (Element elCharacterTree : listCharacterTrees){\r
+ try {\r
+ Element elRepresentation = elCharacterTree.getChild("Representation",sddNamespace);\r
+ String label = (String)ImportHelper.getXmlInputValue(elRepresentation,"Label",sddNamespace);\r
+ Element elDesignedFor = elCharacterTree.getChild("DesignedFor",sddNamespace);\r
+ /*XIMList<Element> listRoles = elDesignedFor.getChildren("Role",sddNamespace);\r
+ boolean isgroups = false;\r
+\r
+ for (Element elRole : listRoles){\r
+ if (elRole.getText().equals("Filtering")) {\r
+ isgroups = true;\r
+ }\r
+ }*/\r
+\r
+ // only treats the case of flat groups containing characters\r
+ // should also be added: dependencies between characters, \r
+ //XIM\r
+\r
+ FeatureTree feattree = FeatureTree.NewInstance();\r
+ importRepresentation(elCharacterTree, sddNamespace, feattree, "", sddConfig);\r
+ FeatureNode root = feattree.getRoot();\r
+ //XIM several <Nodes> found in some files, is it correct ?\r
+ List<Element> listelNodes = elCharacterTree.getChildren("Nodes", sddNamespace);\r
+ for (Element elNodes : listelNodes) {\r
+ List<Element> listNodes = elNodes.getChildren("Node", sddNamespace);\r
+ if (listNodes != null) {\r
+ for (Element elNode : listNodes){\r
+ String idN = elNode.getAttributeValue("id");\r
+ FeatureNode fn = null;\r
+ if (!idN.equals("")) {\r
+ Element elDescriptiveConcept = elNode.getChild("DescriptiveConcept", sddNamespace);\r
+ if (elDescriptiveConcept != null){\r
+ String refDC = elDescriptiveConcept.getAttributeValue("ref");\r
+ //System.out.println(refDC);\r
+ fn = featureNodes.get(refDC);\r
+ }\r
+ else {\r
+ fn = FeatureNode.NewInstance();\r
+ featureNodes.put(idN,fn);\r
+ }\r
+ Element elParent = elNode.getChild("Parent", sddNamespace);\r
+ if (elParent!=null){\r
+ String refP = elParent.getAttributeValue("ref");\r
+ if (!refP.equals("")) {\r
+ FeatureNode parent = nodes.get(refP);\r
+ parent.addChild(fn);\r
+ }\r
+ }\r
+ else {\r
+ fn = FeatureNode.NewInstance();\r
+ root.addChild(fn);\r
+ }\r
+ }\r
+ nodes.put(idN, fn);\r
+ }\r
+ //System.out.println("zic");\r
+ List<Element> listCharNodes = elNodes.getChildren("CharNode", sddNamespace);\r
+ for (Element elCharNode : listCharNodes){\r
+ Element elParent = elCharNode.getChild("Parent", sddNamespace);\r
+ Element elCharacter = elCharNode.getChild("Character", sddNamespace); \r
+ FeatureNode fn = FeatureNode.NewInstance();\r
+ if (elParent!=null){\r
+ String refP = elParent.getAttributeValue("ref");\r
+ if ((refP!=null)&&(!refP.equals(""))) {\r
+ FeatureNode parent = nodes.get(refP);\r
+ if (parent==null){\r
+ parent = root; // because of Delta example\r
+ }\r
+ parent.addChild(fn);\r
+ }\r
+ }\r
+ String refC = elCharacter.getAttributeValue("ref");\r
+ if ((refC!=null)&&(!refC.equals(""))){\r
+ Feature character = features.get(refC);\r
+ fn.setFeature(character);\r
+ // if method setParent() in FeatureNode becomes visible\r
+ // fn.setParent(parent);\r
+ }\r
+ else {\r
+ refC = String.valueOf(taxonNamesCount);\r
+ taxonNamesCount++;\r
+ }\r
+ nodes.put(refC, fn);\r
+ }\r
+ }\r
+ }\r
+ featureTrees.add(feattree);\r
+ }\r
+\r
+ catch (Exception e) {\r
+ //FIXME\r
+ logger.warn("Import of Character tree " + j + " failed.");\r
+ success = false; \r
+ }\r
+\r
+ if ((++j % modCount) == 0){ logger.info("CharacterTrees handled: " + j);}\r
+\r
+ }\r
+\r
+ }\r
+ }\r