package jadex.xml;
import java.util.StringTokenizer;
import javax.xml.namespace.QName;
import jadex.commons.IFilter;
/**
* Info for an xml element, i.e. identifying tag(path), filter etc.
*/
public class XMLInfo
{
//-------- attributes --------
/** The xml tag/path. */
protected String xmlpath;
/** The xml path elements. */
protected QName[] xmlpathelements;
/** The procedural filter. */
protected IFilter filter;
/** Create from tag flag. */
protected boolean createfromtag;
/** The preprocessor. */
protected IPreProcessor preprocessor;
//-------- constructors --------
/**
* Create a new xml info.
*/
public XMLInfo(String xmlpath)
{
this(xmlpath, null);
}
/**
* Create a new xml info.
*/
public XMLInfo(QName xmltag)
{
this(new QName[]{xmltag}, null);
}
/**
* Create a new xml info.
*/
public XMLInfo(QName[] xmlpathelements)
{
this(xmlpathelements, null);
}
/**
* Create a new xml info.
*/
public XMLInfo(String xmlpath, IFilter filter)
{
this(xmlpath, filter, false);
}
/**
* Create a new xml info.
*/
public XMLInfo(QName xmltag, IFilter filter)
{
this(new QName[]{xmltag}, filter, false);
}
/**
* Create a new xml info.
*/
public XMLInfo(QName[] xmlpathelements, IFilter filter)
{
this(xmlpathelements, filter, false);
}
/**
* Create a new xml info.
*/
public XMLInfo(String xmlpath, IFilter filter, boolean createfromtag)
{
this(xmlpath, filter, createfromtag, null);
}
/**
* Create a new xml info.
*/
public XMLInfo(String xmlpath, IFilter filter, boolean createfromtag, IPreProcessor preprocessor)
{
setXMLPath(xmlpath);
this.filter = filter;
this.createfromtag = createfromtag;
this.preprocessor = preprocessor;
}
/**
* Create a new xml info.
*/
public XMLInfo(QName xmltag, IFilter filter, boolean createfromtag)
{
this(new QName[]{xmltag}, filter, createfromtag);
}
/**
* Create a new xml info.
*/
public XMLInfo(QName[] xmlpathelements, IFilter filter, boolean createfromtag)
{
this(xmlpathelements, filter, createfromtag, null);
}
/**
* Create a new xml info.
*/
public XMLInfo(QName[] xmlpathelements, IFilter filter, boolean createfromtag, IPreProcessor preprocessor)
{
setXMLPathElements(xmlpathelements);
this.filter = filter;
this.createfromtag = createfromtag;
this.preprocessor = preprocessor;
}
//-------- methods --------
/**
* Get the xmlpath.
* @return The xmlpath.
*/
public String getXMLPath()
{
return xmlpath;
}
/**
* Set the xmlpath.
* @param xmlpath The xmlpath to set.
*/
protected void setXMLPath(String xmlpath)
{
this.xmlpath = xmlpath;
StringTokenizer stok = new StringTokenizer(xmlpath, "/");
this.xmlpathelements = new QName[stok.countTokens()];
for(int i=0; stok.hasMoreTokens(); i++)
{
xmlpathelements[i] = QName.valueOf(stok.nextToken());
}
}
/**
* Get the xmlpathelements.
* @return The xmlpathelements.
*/
public QName[] getXMLPathElements()
{
return xmlpathelements;
}
/**
* Set the xmlpathelements.
* @param xmlpathelements The xmlpathelements to set.
*/
protected void setXMLPathElements(QName[] xmlpathelements)
{
this.xmlpathelements = xmlpathelements;
// Only use local part
StringBuffer buf = new StringBuffer();
for(int i=0; i<xmlpathelements.length; i++)
{
if(i>0)
buf.append("/");
buf.append(xmlpathelements[i].getLocalPart());
}
this.xmlpath = buf.toString();
}
/**
* Get the filter.
* @return The filter.
*/
public IFilter getFilter()
{
return filter;
}
/**
* Get the createfromtag.
* @return The createfromtag.
*/
public boolean isCreateFromTag()
{
return createfromtag;
}
/**
* Get the preprocessor.
* @return the preprocessor.
*/
public IPreProcessor getPreProcessor()
{
return preprocessor;
}
}