
import org.xmldb.api.base.Database;
import org.xmldb.api.base.Resource;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.XMLDBException;
import org.xmldb.api.DatabaseManager;
import org.xmldb.api.modules.XUpdateQueryService;

import java.io.*;
import java.util.*;

public class XMLDBTest {

    public static void main(String[] args)
    throws Exception {
        String driver = "org.apache.xindice.client.xmldb.DatabaseImpl";
        String base = "xmldb:xindice:///db/test";

        Class c = Class.forName(driver);
        Database database = (Database)c.newInstance();
        DatabaseManager.registerDatabase(database);

        Collection collection = DatabaseManager.getCollection(base);
        
        File directory = new File(".");
        String[] list = directory.list();
        for (int i=0; i<list.length; i++) {
            if (list[i].endsWith(".java") || list[i].endsWith(".class") || list[i].endsWith(".bat")) continue;

            StringBuffer document = new StringBuffer();
            BufferedReader file = new BufferedReader(new FileReader(list[i]));
            for(String line = file.readLine(); line != null; line = file.readLine()) {
                document.append(line);
                document.append("\n");
            }

            System.out.println("Creating document: " + list[i]);
            Resource resource = collection.createResource(list[i], "XMLResource");
            resource.setContent(document.toString());
            collection.storeResource(resource);
        }

        for (int i=0; i<list.length; i++) {
            if (list[i].endsWith(".java") || list[i].endsWith(".class") || list[i].endsWith(".bat")) continue;

            try {
                System.out.println("Deleting document: " + list[i]);
                Resource resource = collection.getResource(list[i]);
                if (resource == null) {
                    System.out.println("\tResource " + list[i] + " does not exist!");
                } else {
                    collection.removeResource(resource);
                }
            } catch (XMLDBException e) {
                System.out.println("\tResource " + list[i] + " could not be deleted. Error " + e.errorCode + ": " + e);
            }
        }

        collection.close();
    }
}
