package tests;

import PIANOS.datastructures.*;
import PIANOS.exceptions.*;
import PIANOS.generator.Acceptation;
import PIANOS.io.*;

import java.util.*;

public class AcceptationFormulaTest 
{

	public static void main(String[] args) {
	    test(args[0], args[1], args[2], args[3], args[4], args[5]);
	} 
    public static void test (String factFileName, String modelFileName,
            String simulationFileName,
            String proposalFileName,
            String updateFileName,
	String toOutputFileName){
	    DistributionFactory factory;
	    ComputationalModel model;
	    
	    try{
        	factory = new DistributionFactory(factFileName);
		model = ComputationalModelParser.testNoInitialValues(modelFileName, simulationFileName, proposalFileName, 
						  updateFileName, toOutputFileName, factory);
		
		ArrayList<String> result;
		
		LinkedList<Variable> allVariables = model.getVariableList();
		
		for (Entity entity : model.getEntityList()) {
		    allVariables.addAll(entity.getVariableList());
		}
		
		for (Variable variable : allVariables) {
		    if (variable.isFunctional()){
			continue;
		    }
		    if (variable.isData() && variable.getMissingValueCount() == 0){
			continue;
		    }
		    
		    System.out.println("Acceptation formula for " + variable.getName());
		    result = Acceptation.generateAcceptationFormula(variable);
		    printArrayList(result);
		}
	    }
	    catch (Exception e) {
		System.out.println("Caught an exception, stopping.");
		e.printStackTrace();
	    }
	}
    
    public static void printArrayList(ArrayList<String> toPrint) {
        for (String element : toPrint ) {
	    System.out.println(element);
        }
    }
}
