package de.exxcellent.cocoon.acting;

// Datenbank Klassen:
import org.xmldb.api.base.*;
import org.xmldb.api.modules.*;
import org.xmldb.api.*;

import org.dbxml.client.xmldb.DatabaseImpl;
import org.dbxml.client.xmldb.services.*;

import org.apache.avalon.framework.parameters.Parameters;
import org.apache.cocoon.acting.AbstractAction;
import org.apache.cocoon.Constants;
import org.apache.cocoon.environment.Redirector;
import org.apache.cocoon.environment.SourceResolver;
import org.apache.cocoon.environment.Request;
import org.xml.sax.EntityResolver;


import java.util.*;


public class DBAdderTest extends AbstractAction  {
  public synchronized Map act (Redirector redirector,
                  SourceResolver resolver,
                  Map objectModel,
                  String source,
                  Parameters params) {
      System.out.println("1");
      Request request = (Request) objectModel.get(Constants.REQUEST_OBJECT);
      String string2add = (String)request.getAttribute("XMLString");
      System.out.println(string2add);

      if (string2add == null)

      return null;

      if (string2add.equals(""))
      return null;
        System.out.println("2");
      org.xmldb.api.base.Collection col = null;
      try {
        String driver = "org.dbxml.client.xmldb.DatabaseImpl";
        Class c = Class.forName(driver);
          System.out.println("4");
        Database database = (Database) c.newInstance();
        org.xmldb.api.DatabaseManager.registerDatabase(database);
          System.out.println("5");
        col = org.xmldb.api.DatabaseManager.getCollection("xmldb:dbxml:///db/Tests/Eval");
          System.out.println("3");
        String ID = col.createId();
        System.out.println(ID);
        XMLResource document = (XMLResource) col.createResource (ID, "XMLResource");
        document.setContent(string2add);
        col.storeResource(document);
        System.out.println(string2add);
        System.out.println("wurde der DB hinzugefügt");

      }
      catch (IllegalAccessException e) {
         System.out.println("IllegalAccessException occured. Irgendwie darfst du nicht auf die DB");
      }
      catch (XMLDBException e) {
         System.out.println("XML:DB Exception occured " + e.errorCode);
         System.out.println("ErrString: " + e.toString());
      }

      catch (ClassNotFoundException e) {
        System.out.println("ClassNotFoundException classpath bitte ueberpruefen...");
      }
      catch (InstantiationException e) {
               System.out.println("Die DB instanz konnte nicht angelegt werden.");
      }
      catch (Exception e) {
        System.out.println(e.toString() );
      }
      finally {
         System.out.println("finally");
         if (col != null) {
            try {
              col.close();
              System.out.println("coll closed");

            }
            catch (Exception e) {
              System.out.println("Shit happens");
            }
         }
         else System.out.println("coll never open");
         return new HashMap();
      }

  }

 public static void main(String[] args) {
      String string2add = "<values123><reihe3><A>9</A><B>10</B><C>11</C></reihe3><reihe2><A>6</A><B>7</B><C>8</C></reihe2><reihe1><A>3</A><B>4</B><C>5</C></reihe1></values123>";

      if (string2add == null)

      return;

      if (string2add.equals(""))
      return;
        System.out.println("2");
      org.xmldb.api.base.Collection col = null;
      try {
        String driver = "org.dbxml.client.xmldb.DatabaseImpl";
        Class c = Class.forName(driver);
          System.out.println("4");
        Database database = (Database) c.newInstance();
        org.xmldb.api.DatabaseManager.registerDatabase(database);
          System.out.println("5");
        col = org.xmldb.api.DatabaseManager.getCollection("xmldb:dbxml:///db/Tests/Eval");
          System.out.println("3");
        String ID = col.createId();
        System.out.println(ID);
        XMLResource document = (XMLResource) col.createResource (ID, "XMLResource");
        document.setContent(string2add);
        col.storeResource(document);
        System.out.println(string2add);
        System.out.println("wurde der DB hinzugefügt");

      }
      catch (IllegalAccessException e) {
         System.out.println("IllegalAccessException occured. Irgendwie darfst du nicht auf die DB");
      }
      catch (XMLDBException e) {
         System.out.println("XML:DB Exception occured " + e.errorCode);
         System.out.println("ErrString: " + e.toString());
      }

      catch (ClassNotFoundException e) {
        System.out.println("ClassNotFoundException classpath bitte ueberpruefen...");
      }
      catch (InstantiationException e) {
               System.out.println("Die DB instanz konnte nicht angelegt werden.");
      }
      catch (Exception e) {
        System.out.println(e.toString() );
      }
      finally {
         System.out.println("finally");
         if (col != null) {
            try {
              col.close();
              System.out.println("coll closed");

            }
            catch (Exception e) {
              System.out.println("Shit happens");
            }
         }
         else System.out.println("coll never open");
         return;
      }
  }

}
