package org.esupportail.portal.channels.CAnnuaire;
/** 
 * <p>Titre : Query</p>
 * <p>Description : Objet contenant tous les éléments pour le formulaire de recherche</p>
 * <p>Copyright : Copyright (c) 2003</p>
 * <p>Société : esupPortail</p>
 * @author Sébatien GAUDIN
 * @version 1.0
 */

import java.util.*;
import javax.naming.directory.*;


public class Query {

	/**
	 * Represente la liste des éléments présents sur le formulaire
	 * indéxés par le nom html du champ
	 */
	private Hashtable elements = new Hashtable();

	/**
	 * Represente l'ordre des éléments présents sur le formulaire
	 */
	private Vector ordreElements = new Vector();
	
	/**
	 * Represente la base LDAP de recherche
	 */
	private String base;

	/**
	 * Represente le nombre maximum que le serveur peut retourner
	 */
	private int maxEntries;

	/**
	 * Represente le type de recehrche effectué 
	 * (SearchControls.SUBTREE_SCOPE ONELEVEL_SCOPE) 
	 */
	private int scope;

	/**
	 * Represente l'identifiant (champ LDAP) d'un résultat
	 * sert pour passer de l'affichage du tableau à l'affichage
	 * en mode fiche
	 */
	private String identifiant;


	/**
	 * Represente le libellé de l'identifiant (champ LDAP) d'un résultat
	 * sert ajouter ce critère une fois arrivé sur le mode fiche
	 * depuis le mode tableau
	 */
	private String identifiantLabel;

	
	/**
	 * @return l'identifiant (champ LDAP) d'un résultat
	 */
	public String getIdentifiant() {
		return identifiant;
	}

	/**
	 * Définit l'identifiant (champ LDAP) d'un résultat
	 * 
	 * @param string
	 */
	public void setIdentifiant(String string) {
		identifiant = string;
	}

	/**
	 *
	 * @return la base LDAP de recherche
	*/ 
	public String getBase() {
		return base;
	} // end getBase

	/**
	 * Définit la base LDAP de recherche
	 *
	 *
	 * @param la base
	*/ 
	public void setBase(String _base) {
		base = _base;
	} // end setBase

	/**
	 * Ajoute un élément au formulaire de recherche
	 *
	 * @param un élément
	 */
	public void addElement(ElmOfQuery _elem) { 
		_elem.setNameHtml("element" + elements.size());
		elements.put(_elem.getNameHtml(),_elem);
		ordreElements.add(_elem.getNameHtml());
	} // end addElement

	/**
	 * Retourne tous les éléments du formulaire
	 * 
	 * @return les éléments indexés sur le nom html
	 */
	public Vector getElements() {
		return (ordreElements);
	}

	/**
	 * Retourne un élément du formulaire dont le nom html est passé en paramètre
	 * 
	 * @param nameHtml
	 * @return l'élément demandé
	*/
	public ElmOfQuery getElement(String nameHtml) {
		return ((ElmOfQuery)elements.get(nameHtml));
	} 


	/**
	 * Dans le cas d'une liste déroulante
	 * Retourne le nombre maximum d'éléments que LDAP doit retourner
	 *  
	 * @return le nombre maximum d'éléments
	*/ 
	public int getMaxEntries() {
		return maxEntries;
	}

	/**
	 * Dans le cas d'un lien avec une table
	 * Défninit le nombre maximum d'éléments que LDAP doit retourner
	 * 
	 * @param maxEntries
	*/ 
	public void setMaxEntries(int _maxEntries) {
		maxEntries = _maxEntries;
	}

	/**
	 * Dans le cas d'un lien avec une table
	 * Retrourne le mode de recherche dans LDAP 
	 * 
	 * @return SearchControls.SUBTREE_SCOPE ou SearchControls.ONELEVEL_SCOPE
	 */
	public int getScope() {
		return scope;
	}

	/**
	 * Dans le cas d'un lien avec une table
	 * définit le mode de recherche dans LDAP 
	 * 
	 * @param scope
	 */
	public void setScope(String _scope) {
		if (_scope.equalsIgnoreCase("sub")) {
			scope = SearchControls.SUBTREE_SCOPE;
		} else {
			scope = SearchControls.ONELEVEL_SCOPE;
		}
	}

	/**
	 * Retourne le libellé de l'identifiant (champ LDAP) d'un résultat 
	 * 
	 * @return le libellé
	 */
	public String getIdentifiantLabel() {
		return identifiantLabel;
	}

	/**
	 * Définit le libellé de l'identifiant (champ LDAP) d'un résultat
	 * sert ajouter ce critère une fois arrivé sur le mode fiche
	 * depuis le mode tableau
	 * 
	 * @param le libellé
	 */
	public void setIdentifiantLabel(String string) {
		identifiantLabel = string;
	}

} // end Query