package com.idega.block.dataquery.data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
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 26, 2003
*/
public class QueryResultField {
private static final String FIELD = "field";
private static final String ID = "id";
public static final String ENTITY = "entity";
public static final String COLUMN = "column";
public static final String TYPE = "type";
public static final String DISPLAY = "display";
private Map nameValue = new HashMap();
// set default values
{ this.nameValue.put(ENTITY,"");
this.nameValue.put(COLUMN,"");
this.nameValue.put(TYPE,"");
this.nameValue.put(DISPLAY,"");
}
private String id;
public static List getInstancesForELement(XMLElement element) {
List fields = new ArrayList();
List children = element.getChildren(FIELD);
Iterator iterator = children.iterator();
while (iterator.hasNext()) {
XMLElement child = (XMLElement) iterator.next();
QueryResultField field = QueryResultField.getInstanceForElement(child);
fields.add(field);
}
return fields;
}
private static QueryResultField getInstanceForElement(XMLElement element) {
String id = QueryResultField.getChildTextTrim(element, ID);
if (id.length() == 0) {
return null;
}
QueryResultField instance = new QueryResultField(id);
Iterator iterator = instance.nameValue.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
String name = (String) entry.getKey();
String value = QueryResultField.getChildTextTrim(element, name);
entry.setValue(value);
}
return instance;
}
public QueryResultField(String id) {
this.id = id;
}
public void setValue(String name, String value) {
this.nameValue.put(name, value);
}
public String getValue(String name) {
return (String) this.nameValue.get(name);
}
public String getId() {
return this.id;
}
public XMLElement convertToXML() {
XMLElement fieldElement = new XMLElement(FIELD);
addElement(fieldElement, ID, this.id.toString());
Iterator iterator = this.nameValue.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
addElement(fieldElement, (String) entry.getKey(), (String) entry.getValue());
}
return fieldElement;
}
private void addElement(XMLElement parent, String name, String value) {
XMLElement child = new XMLElement(name);
value = (value == null) ? "" : value;
child.addContent(value);
parent.addContent(child);
}
private static String getChildTextTrim(XMLElement element, String name) {
XMLElement child = element.getChild(name);
if (child == null) {
return "";
}
return child.getText().trim();
}
}