package fr.inria.diversify.transformation.query; import fr.inria.diversify.diversification.InputProgram; import fr.inria.diversify.statistic.RunResults; import fr.inria.diversify.transformation.Transformation; import fr.inria.diversify.transformation.TransformationParserException; import java.io.File; import java.util.List; /** * Query used to replay multisosie programs given in a RunResult.json format * <p/> * Created by marodrig on 23/06/2014. */ public class KnowMultisosieQuery extends TransformationQuery { //Current run result being replayed //int currentRunResult = -1; int currentRunResult = 0; File[] files = null; public KnowMultisosieQuery(InputProgram inputProgram) { super(inputProgram); } @Override public Transformation query() throws QueryException { return null; } @Override public List<Transformation> query(int nb) { try { File folder = new File(getInputProgram().getPreviousTransformationsPath()); if (files == null) { if (folder.isDirectory()) { files = folder.listFiles(); } else { files = new File[1]; files[0] = folder; } } List<Transformation> result = null; while (result == null && currentRunResult < files.length) { String fileName = files[currentRunResult].getName(); if (fileName.substring(fileName.length() - 4).toLowerCase().equals("json")) { RunResults run = new RunResults(); run.loadFromFile(files[currentRunResult]); //if (run.isSosieRun()) { result = run.parseTransformations(getInputProgram()); //} } currentRunResult++; if (currentRunResult >= files.length) { currentRunResult = 0; } } if (result == null) { throw new TransformationParserException("Could not found any suitable run result"); } return result; } catch (Exception e) { throw new RuntimeException(e); } } }