/*
* Created on May 26, 2003
*
* To change this generated comment go to
* Window>Preferences>Java>Code Generation>Code Template
*/
package com.idega.block.dataquery.data.xml;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import com.idega.core.data.IWTreeNode;
import com.idega.xml.XMLElement;
/**
* <p>Title: idegaWeb</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: idega Software</p>
* @author aron
* @version 1.0
*/
public class QueryEntityPart extends IWTreeNode implements QueryPart {
//private String name ;
private String beanClass;
private boolean locked = false;
//private String path;
public QueryEntityPart(String name, String beanClass){
super(name);
//this.name = name;
setBeanClass( beanClass);
//this.path = name;
}
public QueryEntityPart(String name, String beanClass,String path){
this(name,beanClass);
setPath(path);
}
public QueryEntityPart(XMLElement xml){
this("","");
if(xml.hasChildren()){
Iterator iter = xml.getChildren().iterator();
while(iter.hasNext()){
XMLElement el = (XMLElement) iter.next();
if(el.getName().equals(QueryXMLConstants.NAME)){
//this.name = el.getTextTrim();
setName(el.getTextTrim());
}
else if(el.getName().equals(QueryXMLConstants.BEANCLASS)){
setBeanClass(el.getTextTrim());
}
else if(el.getName().equals(QueryXMLConstants.PATH)){
//this.path = el.getTextTrim();
setPath(el.getTextTrim());
}
else if(el.getName().equals(QueryXMLConstants.LOCK)){
this.locked = true;
}
}
}
}
public String getBeanClassName(){
return this.beanClass;
}
public String getName(){
return getNodeName();
}
public List getPathNames() {
List list = new ArrayList();
String path = getPath();
StringTokenizer tokenizer = new StringTokenizer(path, IWTreeNode.PATH_DELIMITER);
while (tokenizer.hasMoreTokens()) {
String element = tokenizer.nextToken();
list.add(element);
}
return list;
}
public String getPath(){
return getNodePath();
}
/* (non-Javadoc)
* @see com.idega.block.dataquery.business.QueryPart#toQueryXML()
*/
public XMLElement getQueryElement() {
XMLElement el = new XMLElement(QueryXMLConstants.ENTITY);
el.addContent(getNameElement());
el.addContent(getBeanClassElement());
if(!"".equals(getPath())) {
el.addContent(getPathElement());
}
if(this.locked){
el.addContent(new XMLElement(QueryXMLConstants.LOCK));
}
return el;
}
private XMLElement getNameElement(){
XMLElement xmlName = new XMLElement(QueryXMLConstants.NAME);
xmlName.addContent(getName());
return xmlName;
}
private XMLElement getBeanClassElement(){
XMLElement xmlBeanClass = new XMLElement(QueryXMLConstants.BEANCLASS);
xmlBeanClass.addContent(getBeanClassName());
return xmlBeanClass;
}
private XMLElement getPathElement(){
XMLElement xmlBeanClass = new XMLElement(QueryXMLConstants.PATH);
xmlBeanClass.addContent(getPath());
return xmlBeanClass;
}
public String encode(){
return this.getName()+";"+this.getBeanClassName() +(getPath()!=null?";"+getPath():"");
}
public static QueryEntityPart decode(String encoded){
StringTokenizer toker = new StringTokenizer(encoded,";");
if(toker.countTokens()==2){
return new QueryEntityPart( toker.nextToken(), toker.nextToken());
}
else if(toker.countTokens()==3){
QueryEntityPart part = new QueryEntityPart( toker.nextToken(), toker.nextToken(),toker.nextToken());
return part;
}
return null;
}
/**
* @param string
*/
public void setBeanClass(String string) {
this.beanClass = string;
}
/**
* @param string
*/
public void setPath(String string) {
super.setNodePath(string);
}
/* (non-Javadoc)
* @see com.idega.block.dataquery.business.QueryPart#isLocked()
*/
public boolean isLocked() {
return this.locked;
}
/* (non-Javadoc)
* @see com.idega.block.dataquery.business.QueryPart#setLocked(boolean)
*/
public void setLocked(boolean locked) {
this.locked = locked;
}
}