package authoritymanager.client;

import java.io.Serializable;
import java.util.Vector;


public class Query implements Serializable {
	private static final long serialVersionUID = 5219691094930682565L;
	public static final String	RELATIONSHIP	=	"rel" ;
	public static final String	EQUALS			=	"equals" ;
	public static final String	BEGINS_WITH		=	"begins with" ;
	public static final String	CONTAINS		=	"contains" ;
	public static final String	ANY				=	"Any";
	
	private String	fieldPath ;
	private String	fieldRelation ;
	private String	fieldValue ;
	private Vector<Path> path ;
	
	public Query() {
		fieldPath = "" ;
		fieldRelation = EQUALS ;
		fieldValue = "" ;
		path = new Vector<Path>(1) ;
	}
	
	public Query(String fieldPath, String fieldValue) {
		this() ;
		setFieldPath(fieldPath) ;
		this.fieldValue = fieldValue.toUpperCase() ;
	}
	
	public void setFieldPath(String fieldPath) {
		this.fieldPath = fieldPath ;
		updatePath() ;
	}
	
	private void updatePath() {
		String[] stOR = fieldPath.split(" OR ") ;
		path.clear() ;
		for (int i = 0 ; i < stOR.length ; i ++) {
			path.add(new Path(stOR [i])) ;
		}
	}
	public Vector<Path> getPaths() {
		return this.path ;
	}
	public void setFieldRelation(String fieldRelation) {
		this.fieldRelation = fieldRelation ;
	}
	
	public void setFieldValue(String fieldValue) {
		this.fieldValue = fieldValue.toUpperCase() ;
	}
	
	public String getFieldPath() {
		return this.fieldPath ;
	}
	
	public String getFieldRelation() {
		return this.fieldRelation ;
	}
	
	public String getFieldValue() {
		return this.fieldValue ;
	}
	
	public String toString() {
		return fieldPath + " " + fieldRelation + " " + fieldValue ;
	}
}
