package com.idega.block.dataquery.data;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import com.idega.xml.XMLElement;
/**
* <p>Title: idegaWeb</p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: idega Software</p>
* @author <a href="thomas@idega.is">Thomas Hilbig</a>
* @version 1.0
* Created on May 27, 2003
*/
public class QueryResultCell {
private static final String CELL = "cell";
private static final String FIELD_ID = "fieldId";
private static final String ID = "rowId";
private static final String VALUE = "value";
private String fieldId;
private String id;
private Object value = null;
public static List getInstancesForELement(XMLElement element) {
List cells = new ArrayList();
List children = element.getChildren(CELL);
Iterator iterator = children.iterator();
while (iterator.hasNext()) {
XMLElement child = (XMLElement) iterator.next();
QueryResultCell cell = QueryResultCell.getInstanceForElement(child);
cells.add(cell);
}
return cells;
}
private static QueryResultCell getInstanceForElement(XMLElement element) {
String fieldId = QueryResultCell.getChildTextTrim(element, FIELD_ID);
if (fieldId.length() == 0) {
return null;
}
String id = QueryResultCell.getChildTextTrim(element, ID);
if (id.length() == 0) {
return null;
}
String value = QueryResultCell.getChildTextTrim(element, VALUE);
QueryResultCell instance = new QueryResultCell(id, fieldId, value);
return instance;
}
public QueryResultCell(String id, String fieldId) {
this.fieldId = fieldId;
this.id = id;
}
public QueryResultCell(String id, String fieldId, Object value) {
this(id, fieldId);
setValue(value);
}
public void setValue(Object value) {
this.value = value;
}
public XMLElement convertToXML() {
XMLElement cellElement = new XMLElement(CELL);
addElement(cellElement, FIELD_ID, this.fieldId.toString());
addElement(cellElement, ID, this.id.toString());
addElement(cellElement, VALUE, this.value);
return cellElement;
}
public Object getFieldId() {
return this.fieldId;
}
public Object getId() {
return this.id;
}
public Object getValue() {
return this.value;
}
private void addElement(XMLElement parent, String name, Object value) {
XMLElement child = new XMLElement(name);
value = (value == null) ? "" : value;
child.addContent(value.toString());
parent.addContent(child);
}
private static String getChildTextTrim(XMLElement element, String name) {
XMLElement child = element.getChild(name);
if (child == null) {
return "";
}
return child.getText().trim();
}
public String toString(){
return this.getValue().toString();
}
}