package infoObjects;

import java.io.Serializable;
import java.util.ArrayList;

import utils.ConstantsErr;

/**
 * Clase que almacena la información de un resultado de las operaciones remotas de:
 * <p>
 * · securityCheckCode
 * <p>
 * · securityNewTask
 * <p>
 * · securityRunTest
 * <p>
 * · securitySaveTest
 * <p>
 * · securityDeleteTest
 * <p>
 * · securityDeleteTask
 *
 * @author Enrique M.L
 */
public class InfoError implements Serializable, ConstantsErr{
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * error guarda el id del error producido
	 */
	private int error;
	/**
	 * result guarda la salida de la ejecución o el mensaje correspondiente al error producido
	 */
    private ArrayList<String> result = new ArrayList<String> ();
    
    public InfoError() {
		// TODO Auto-generated constructor stub
	}
    
    /**
     * Método que permite modificar el error y el 'result'
     * @param pError
     * @param pResult
     */
    public void setInfoError(int pError, ArrayList<String> pResult){
    	error = pError;
        result = pResult;
    }

    /**
     * Segun el error obtenido, modifica los valores de 'result'
     * @param pError
     */
	public void setError(int pError){
        error = pError;
        if (pError == ERROR_NO_EXIST_TASK){
        	result.add(0, "ERROR");
            result.add(1, "NO EXISTE LA TAREA EN EL SSCP");	
        }else if (pError == ERROR_INTERN){
        	result.add(0, "ERROR");
            result.add(1, "ERROR INTERNO DEL SSCP");
        }else if (pError == ERROR_NURSE){
        	result.add(0, "ERROR");
            result.add(1, "SSCP HA PARADO LA EJECUCIÓN DEL PROGRAMA");
        }else if (pError == ERROR_EXECUTION){
        	result.add(0, "ERROR");
            result.add(1, "ERROR EN LA EJECUCIÓN DEL PROGRAMA");
        }else if (pError == ERROR_LIBRARY){
        	result.add(0, "ERROR");
            result.add(1, "DETECTADO EL USO DE LIBRERIAS PROHIBIDAS");
        }else{
        	result.add(0, "ERROR");
            result.add(1, "DESCONOCIDO");
        }
        
    }
	
	public void setErr(String err){
		result.set(1, err);
	}
    
    public void setResult(ArrayList<String> pResult){
        result = pResult;
    }
    
    public int getError(){
        return error;
    }
    
    public ArrayList<String> getResult(){
        return result;
    }
    
    public String getOut(){
        return result.get(0);
    }
    
    public String getErr(){
        return result.get(1);
    }
    
    
}
