----- Original Message ----- 
From: "Wouter de Vaal" <[EMAIL PROTECTED]>
To: <xindice-users@xml.apache.org>
Sent: Monday, August 30, 2004 2:28 PM
Subject: Re: Renaming a collection


> > >>So according to what I understand, it would be possible to change the
> > >>presentable name of the collection by changing it in the metadata ?
> > >>Since the name used to access the collection is the one stored in the
> > >>metadata, I want to change this one.
> > >>If it is indeed possible, would you mind showing me a piece of code
that
> > >>does it ?
> > >>
> > >>Thanks, that would really help out here !!
> > >>
> > >>
> > >>
> > >>
> > >>
> > >this is basically all you need to do:
> > >
> > >            //get name:
> > >            CollectionImpl xindiceCol =
> > >(CollectionImpl)DatabaseManager.getCollection(collectionURI, username,
> > >password);
> > >
> > >            MetaData metaData = xindiceCol.getMetaData(resource);
> > >            String name = metaData.getAttribute("REALNAME");
> > >
> > >            //change name:
> > >            name = "foo";
> > >            metaData.setType(MetaData.COLLECTION);
> > >            metaData.setAttribute("REALNAME", name);
> > >
> > >
> > >            xindiceCol.setMetaData(resource, metaData);
> > >
> > >
> > >
> > >
> > I tried that but can't make it work, and here's why :
> >
> > The collection I want to change the name of, is right under the /db
> > collection (its name is HausseTarifaire2004).
> > When I try to perform a :
> >
> >
(CollectionImpl)DatabaseManager.getCollection("xmldb:xindice://myUrl/db",
> > username,password)
> >     MetaData metaData = xindiceCol.getMetaData('HausseTarifaire2004');
> >
> > I get the following exception :
> >
> >     org.xmldb.api.base.XMLDBException:
> > org.xmldb.api.base.XMLDBException: :This Collection 'db' cannot store
> > Documents
> >
> > When I use "HausseTarifaire2004" as current collection , I don't know
> > how to access its metadata (since you must put the resource name as
> > parameter of the getMetaData method call).
> >
> > It seems (according to the javadocs) that metadata are accessible for
> > resources (XML files) but not (or at least not easily) for collections.
> >
> > Any idea here ?
> >
> >
> Ok I pasted some generic code of us that gets and sets meta data on both
> resources and collections,
> so I guess that's not entirely clear.
>
> You should use:
> MetaData metaData = xindiceCol.getMetaData(null);
>
> instead of
>
> MetaData metaData = xindiceCol.getMetaData('HausseTarifaire2004');
>
> and vice versa for setting metadata.
>
> xindiceCol.setMetaData(null, metaData);
>
> Wouter
>
In addition set the collection in the collection url:

CollectionImpl xindiceCol =
(CollectionImpl)DatabaseManager.getCollection("xmldb:xindice://myUrl/db/Haus
seTarifaire2004",username,password)

Reply via email to