Re: how to get collections tree from xindice

"Marcin Goldyn" <[email protected]>
Newsgroups gmane.text.xml.xindice.user
Message-ID <001f01c56239$161d15f0$0200000a@Sparkyy>
i know how to get ChildCollections and built collection tree
but also i have to get documents stores in particular collections. There are 
methods like getDocumentsCount() and listDocuments() in 
org.apache.xindice.core.Collection class but this class isn`t work with 
org.xmldb.api.DatabaseManager so i cant register database. Maybe there is 
another way to register database using org.apache.xindice.core.Collection 
class? or there is another way to listDocumetns and count their number??

DBConnection.java
package praca.app;



import org.xmldb.api.base.Database;
import org.xmldb.api.DatabaseManager;



public final class DBConnection
{
  public String addressIP;
  public String port;
  protected static Database db = null;




  Database getDB() throws Exception
  {

     try
  {
     db = 
(Database)Class.forName("org.apache.xindice.client.xmldb.DatabaseImpl").newInstance();
     DatabaseManager.registerDatabase(db);
  }
     catch(Exception e)
  {
      System.out.println(e.getMessage());
      e.printStackTrace();
  }
    return db;
  }


}

CollectionTree.java
import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.Database;

//import org.apache.xindice.client.xmldb.DatabaseImpl;
//import org.apache.xindice.core.Collection;
//import org.apache.xindice.core.Database;

public class CollectionTree
{
    public static  Database db = null;
    public static final String 
XINDICEURI="xmldb:xindice://localhost:8080/db/";
    protected static Collection collection;
    static int errorCode = 0;
 static int okCode = 1;
 static int liczbaSpacji = 0;

 public static void ileSpacji(int liczba)
 {
  if (liczba>0)
  {
    for (int i=0; i<liczba; i++)
     System.out.print("  ");
  }
 }

    public static int treeCreate(Collection kolekcja) throws Exception
    {

     int  liczbaKolekcji = (int)kolekcja.getChildCollectionCount();
     //int  liczbaDokumentow = (int)kolekcja.getDocumentCount();

     if (liczbaKolekcji > 0)
      {
        String tablica[] = new String[liczbaKolekcji];
        tablica = kolekcja.listChildCollections();

        for (int i=0; i<liczbaKolekcji; i++)
        {
         ileSpacji(liczbaSpacji);
         System.out.println("<"+tablica[i]+">");
         liczbaSpacji++;
         treeCreate(kolekcja.getChildCollection(tablica[i]));
         liczbaSpacji--;
         ileSpacji(liczbaSpacji);
         kolekcja.getClass();
         /*if (liczbaDokumentow > 0)
         {
          String tablicaDok[] = new String[liczbaDokumentow];
           tablicaDok = kolekcja.listDocuments();
           for (int j=0; j<liczbaDokumentow; j++)
             {
            System.out.println("<DOC "+tablicaDok[j]+" /");
             }
         }
         */
         System.out.println("</"+tablica[i]+">");

        }

      }
     else
          return errorCode;
     return okCode;
    }
    public static void main(String[] args) throws Exception
 {



  try
  {
    DBConnection dbcon = new DBConnection();
    db = dbcon.getDB();
    collection = DatabaseManager.getCollection(XINDICEURI);

  }
  catch(Exception e)
  {
   System.err.println("XML:DB Exception occured " +
          e.getMessage());
   e.printStackTrace();
  }


  if (collection.getChildCollectionCount() > 0)
   treeCreate(collection);

 }

}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.