package tests;

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

import java.util.*;

public class FunctionalNewValuesTest{
	public static void main(String[] args) {
	    DistributionFactory factory;
	    ComputationalModel model;
	    	    
	    // this tests the generation of new values to functionalparameters
	    
	    try{
        	factory = new DistributionFactory(args[0]);
		model = ComputationalModelParser.testNoInitialValues(args[1], args[2], args[3], args[4], args[5], 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("New values for functionals depending on " + variable.getName());
		    result = Acceptation.generateNewValuesFunctionalCode(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);
        }
    }
}
