/* RuleVariable 

        Micro Projet ARTC 1997/1998
        (C) 1998 DPSV Team Touts Droits Réservés
        Marc-Aurèle DARCHE
        Emmanuel PIERRE
        Marc-Olivier VARROY
        Antoine SOULIEZ

*/

import java.util.*;
import java.awt.* ;

public class RuleVariable extends Variable {

public RuleVariable(String Name) {
        super(Name);
        clauseRefs = new Vector();
        }

void setValue(String val) { value = val;
                            updateClauses(); }


// prompt a user to provide a value for a variable during inferencing
// demande à l'Expert de rentrer une valeur
String askUser() {
  String answer = RuleApplet.waitForAnswer(promptText, getLabels()) ; // affiche le formulaire
  RuleBase.appendText("\n  !!! Je cherche " + name + ". L'expert a entre: " + answer) ;

  setValue(answer) ; // assigne la valeur en provenance du textField
  return value ;
}

Vector clauseRefs ;   // Les clauses qui font références à cette variable
void addClauseRef(Clause ref) { clauseRefs.addElement(ref) ; }

void updateClauses() {
   Enumeration enum = clauseRefs.elements() ;
   while(enum.hasMoreElements()) {
     ((Clause)enum.nextElement()).check() ; // reteste la valeur de vérité
   }
}

String promptText ;  // sert à demander à l'Expert une valeur
String ruleName ;    // si la valeur est inférrée, null = ce que l'Expert a rentré
void   setRuleName(String rname) { ruleName = rname; }
void   setPromptText(String text) { promptText = text; }

// ces méthodes ne sont pas utilisées dans les variables de règles 
public void computeStatistics(String inValue){} ;
public int normalize(String inValue, float[] outArray, int inx) {return inx;}

};




