Handles dependency rules.
authorm.venin <m.venin@localhost>
Thu, 4 Nov 2010 13:52:46 +0000 (13:52 +0000)
committerm.venin <m.venin@localhost>
Thu, 4 Nov 2010 13:52:46 +0000 (13:52 +0000)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/sdd/out/SDDDocumentBuilder.java

index eca8a95eb15a91780efc8f6b913cbee4e5ef1f24..8e9abe3411a4e585df48c570b9acf0f851006ace 100644 (file)
@@ -258,7 +258,7 @@ public class SDDDocumentBuilder {
                //create <Datasets> = root node\r
                ElementImpl baselement = new ElementImpl(document, DATASETS);\r
                if (natlang) {\r
-                       buildNaturalLanguageDescription(baselement);\r
+                       buildIdentificationKey(baselement);\r
                }\r
                else {\r
                baselement.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");\r
@@ -324,13 +324,13 @@ public class SDDDocumentBuilder {
                        for (TaxonDescription td : taxon.getDescriptions()){\r
                                descriptions.add(td);\r
                                for(DescriptionElementBase deb : td.getElements()){\r
-                               if (deb.isInstanceOf(CategoricalData.class)){\r
-                                       CategoricalData catdat = (CategoricalData)deb;\r
-                                       Feature feat = catdat.getFeature();\r
+//                             if (deb.isInstanceOf(CategoricalData.class)){\r
+                                       //CategoricalData catdat = (CategoricalData)deb;\r
+                                       Feature feat = deb.getFeature();\r
                                        if (feat!=null && feat.getLabel()!=null && !featureList.contains(feat)){\r
-                                               featureList.add(catdat.getFeature());\r
+                                               featureList.add(feat);\r
                                        }\r
-                               }\r
+//                             }\r
                                }\r
                        }\r
                }\r
@@ -1226,6 +1226,31 @@ public class SDDDocumentBuilder {
                        charnodeCount = buildReference(parent, featuretrees, ID, elCharNode, "cn", charnodeCount);\r
                        ElementImpl elCharacter = new ElementImpl(document, CHARACTER);\r
                        Feature fref = parent.getFeature();\r
+                       boolean dependencies = false;\r
+                       ElementImpl elDependecyRules = new ElementImpl(document, "DependecyRules");\r
+                       if (parent.getInapplicableIf()!=null){\r
+                               Set<State> innaplicableIf = parent.getInapplicableIf();\r
+                               ElementImpl elInnaplicableIf = new ElementImpl(document, "InapplicableIf");\r
+                               for (State state : innaplicableIf) {\r
+                                       ElementImpl elState = new ElementImpl(document, STATE);\r
+                                       buildReference(state, states, REF, elState, "State", statesCount);\r
+                                       elInnaplicableIf.appendChild(elState);\r
+                               }\r
+                               elDependecyRules.appendChild(elInnaplicableIf);\r
+                               dependencies = true;\r
+                       }\r
+                       if (parent.getOnlyApplicableIf()!=null){\r
+                               Set<State> onlyApplicableIf = parent.getOnlyApplicableIf();\r
+                               ElementImpl elOnlyApplicableIf = new ElementImpl(document, "OnlyApplicableIf");\r
+                               for (State state : onlyApplicableIf) {\r
+                                       ElementImpl elState = new ElementImpl(document, STATE);\r
+                                       buildReference(state, states, REF, elState, "State", statesCount);\r
+                                       elOnlyApplicableIf.appendChild(elState);\r
+                               }\r
+                               elDependecyRules.appendChild(elOnlyApplicableIf);\r
+                               dependencies = true;\r
+                       }\r
+                       if (dependencies == true) elCharNode.appendChild(elDependecyRules);\r
                        charactersCount = buildReference(fref, characters, REF, elCharacter, "c", charactersCount);\r
                        elCharNode.appendChild(elCharacter);\r
                        elCharNode.appendChild(elParent);\r