package authoritymanager.client;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map ;

import com.google.gwt.user.client.rpc.IsSerializable;

public class SearchQuery implements IsSerializable {
private static final long serialVersionUID = -5203812178834822738L;
	public String itemType ;
	public Map<String, Query> query ;
	public String [] resultFields ;
	
	public SearchQuery() {
		itemType = "DEFAULT" ;
		query = new HashMap<String, Query>() ;
	}
	public SearchQuery(String itemType) {
		this() ;
		this.itemType = itemType ;
	}
	
	public void addResultField(String fieldName, String fieldPath) {
		//resultFields.put(fieldName, fieldPath) ;
	}
	public void add(String queryName) {
		query.put(queryName, new Query()) ;
	}
	
	public void addFieldPath(String queryName, String fieldPath) {
		if (!query.containsKey(queryName)) {
			query.put(queryName, new Query()) ;
		}
		query.get(queryName).setFieldPath(fieldPath) ;
	}
	
	public void addFieldRelation(String queryName, String fieldRelation) {
		if (!query.containsKey(queryName)) {
			query.put(queryName, new Query()) ;
		}
		query.get(queryName).setFieldRelation(fieldRelation) ;
	}
	
	public void addFieldValue(String queryName, String fieldValue) {
		if (!query.containsKey(queryName)) {
			query.put(queryName, new Query()) ;
		}
		query.get(queryName).setFieldValue(fieldValue) ;
	}
	
	public String getType() {
		return itemType ;
	}
	
	public Collection<Query> getQueries() {
		return query.values() ;
	}
	public String toString() {
		String result = "" ;
		Collection<String> keys = query.keySet() ;
		for (Iterator<String> it = keys.iterator() ; it.hasNext() ; ) {
			result += query.get(it.next()) + "\n" ;
		}
		return result ;
	}
	public void setResultFields(String [] resultFields) {
		this.resultFields = resultFields ;
	}
	public String [] getResultFields() {
		return this.resultFields ;
	}
}
