package fr.inria.diversify.persistence.json.input; import fr.inria.diversify.codeFragment.CodeFragment; import fr.inria.diversify.diversification.InputProgram; import fr.inria.diversify.persistence.PersistenceException; import fr.inria.diversify.transformation.MultiTransformation; import fr.inria.diversify.transformation.Transformation; import jdk.nashorn.api.scripting.JSObject; import org.json.JSONArray; import org.json.JSONException; import java.util.HashMap; import java.util.Map; import java.util.UUID; /** * User: Simon * Date: 23/03/15 * Time: 13:40 */ public class JsonMultiTransformationInput extends JsonTransformationInput { protected JsonAstTransformationCollectionInput jsonTransformationCollectionInput; public JsonMultiTransformationInput(InputProgram inputProgram) { super(inputProgram); jsonTransformationCollectionInput = new JsonAstTransformationCollectionInput(inputProgram, null); } @Override protected Transformation build() { return new MultiTransformation(); } @Override public void read(Map<UUID, Transformation> transformations) { try { if ( getJsonObject() == null ) throw new PersistenceException("JSON object unset"); MultiTransformation trans = (MultiTransformation) get(transformations); //add the transformation to the transformations map if not present jsonTransformationCollectionInput.setJsonObject(getJsonObject()); Map<UUID, Transformation> tmp = new HashMap<>(); jsonTransformationCollectionInput.read(tmp); trans.addAll(tmp.values()); //Add transformation if all went OK addTransformation(transformations, trans); } catch (JSONException e) { throw new PersistenceException("Unable to parse add transformation", e); } } @Override public boolean canRead(String s) { return s.equals("multi.multi"); } }