package controller.comparer.xmi.request; import java.util.ArrayList; import org.json.simple.JSONObject; import controller.comparer.xmi.XmiClassDiagramComparer; import controller.comparer.xmi.XmiClassElement; import controller.merge.xmi.xclass.XmiMergedClass; import controller.similaritycheck.SimilarityCheck; /** * Refresh() * Read the elements in three lists * @author Dong Guo * */ public class Refresh implements Request { // Titles in our JSON response private final static String TITLE_RESPONSE = "Response"; private final static String TITLE_DIAGRAM1 = "Diagram1"; private final static String TITLE_DIAGRAM2 = "Diagram2"; private final static String TITLE_SAME = "Same"; private final static String TITLE_SIMILAR = "Similar"; @SuppressWarnings("unchecked") @Override public JSONObject request(JSONObject jsonObj, XmiClassDiagramComparer comparer) { // Implements the refresh JSON structure JSONObject response = new JSONObject(); ArrayList<String> diagram1 = new ArrayList<String>(); ArrayList<String> diagram2 = new ArrayList<String>(); ArrayList<String> same = new ArrayList<String>(); ArrayList<String> similar = new ArrayList<String>(); // Read elements in uniqueClass1 for(XmiClassElement element : comparer.getUniqueClass1()){ diagram1.add(element.getName()); } // Read elements in uniqueClass2 for(XmiClassElement element : comparer.getUniqueClass2()){ diagram2.add(element.getName()); } // Read elements in sameClass for(XmiMergedClass element : comparer.getSameClass()){ same.add(element.getNewName()); } // Run SimilarityCheck to find similar class names for(String d1: diagram1){ for (String d2: diagram2) { SimilarityCheck simCheck = new SimilarityCheck(d1, d2); if (simCheck.doSimilarityCheck()){ similar.add(d1 + " is similar to " + d2); } } } // Input three ArrayLists in our return obj response.put(TITLE_RESPONSE, "Success"); response.put(TITLE_DIAGRAM1, diagram1); response.put(TITLE_DIAGRAM2, diagram2); response.put(TITLE_SAME, same); response.put(TITLE_SIMILAR, similar); return response; } }