diff gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java @ 58:f31343d80d53

Artifact.advance initial implementiert gnv-artifacts/trunk@40 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Tim Englich <tim.englich@intevation.de>
date Tue, 08 Sep 2009 14:07:59 +0000
parents f01592cd6419
children 2c5d8f5bced1
line wrap: on
line diff
--- a/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Tue Sep 08 12:22:00 2009 +0000
+++ b/gnv-artifacts/src/main/java/de/intevation/gnv/artifacts/GNVArtifactBase.java	Tue Sep 08 14:07:59 2009 +0000
@@ -72,6 +72,53 @@
         super();
     }
     
+    /**
+     * @see de.intevation.artifactdatabase.DefaultArtifact#advance(org.w3c.dom.Document, java.lang.Object)
+     */
+    @Override
+    public Document advance(Document target, Object context) {
+        Document result = super.newDocument();
+        if (this.current != null){
+            String transitionName = this.readTransitionName(target);
+            if (this.current.isTransitionReachable(transitionName)){
+                // 1. Prüfung ob Transition valide ist
+                if (this.current.validate()){
+                    
+                    try {
+                        Transition nextStep = this.transitions.get(transitionName);
+                        // 2.Ergebnisse Berechnen
+                        this.current.advance();
+                        // 3. Ergebnisse übergeben
+                        nextStep.setDescibeData(this.current.getDescibeData());
+                        // 4. Umschalten auf neue Transistion
+                        this.current = nextStep;
+                    } catch (TransitionException e) {
+                        log.error(e,e);
+                        // TODO: Errormmessage senden.
+                    }
+                    
+                }else{
+                    log.error("Advance nicht möglich, da die Bedingungen für den Übergang " +
+                                "in den neuen Zustand noch nicht gegeben ist.");
+                    // TODO: Errormmessage senden.
+                }
+                
+            }else{
+                log.error("Transitionsübergang wird nicht unterstützt.");
+                // TODO: Errormmessage senden.
+            }
+        }else{
+            log.error("Kein Transitionsschritt aktiviert.");
+            // TODO: Errormmessage senden.
+        }
+        return result;
+    }
+
+    protected String readTransitionName(Document document) {
+        String returnValue = Config.getStringXPath(document, "action/target/@name");
+        return returnValue;
+    }
+
     protected Node getConfigurationFragment(Document document){
         log.debug("GNVArtifactBase.getConfigurationFragment");
         String xpathQuery = XPATH_ARTIFACT_CONFIGURATION.replaceAll(XPATH_IDENTIFIER_REPLACE, this.name);

http://dive4elements.wald.intevation.org