private static boolean isEqual(JsonArray arrayOriginal, JsonArray arrayNew) { if (arrayOriginal == null && arrayNew == null) { return true; }else if (arrayOriginal == null || arrayNew == null) { return false; }else { // check the number of element if (arrayOriginal.size() != arrayNew.size()) { return false; }else if (arrayOriginal.size() == 0) { return true; } else { for (int i = 0; i < arrayOriginal.size(); i++) { JsonElement valueOrig = arrayOriginal.get(i); JsonElement valueNew = arrayNew.get(i); if (valueOrig instanceof JsonObject && valueNew instanceof JsonObject) { if (!isEqual((JsonObject) valueOrig, (JsonObject) valueNew)) { return false; } }else if (valueOrig instanceof JsonPrimitive && valueNew instanceof JsonPrimitive) { if (!isEqual((JsonPrimitive) valueOrig, (JsonPrimitive) valueNew)) { return false; } } } } } return true; }
public static boolean isEqual(JsonObject originalJsonObject, JsonObject newJsonObject) { // TODO - Implement this method if (originalJsonObject == null && newJsonObject == null) { return true; }else if (originalJsonObject == null || newJsonObject == null) { return false; } else { // check the number of childs Set<Map.Entry<String , JsonElement>> entrySetOfOriginalJson = originalJsonObject.entrySet(); Set<Map.Entry<String , JsonElement>> entrySetOfNewJson = newJsonObject.entrySet(); if (entrySetOfOriginalJson.size() != entrySetOfNewJson.size()) { return false; } for (Map.Entry<String, JsonElement> keyString : entrySetOfOriginalJson) { JsonElement valueOrig = keyString.getValue(); JsonElement valueNew = newJsonObject.get(keyString.getKey()); if (valueOrig instanceof JsonObject && valueNew instanceof JsonObject && !isEqual((JsonObject) valueOrig, (JsonObject) valueNew)) { return false; }else if (valueOrig instanceof JsonArray && valueNew instanceof JsonArray && !isEqual((JsonArray) valueOrig, (JsonArray) valueNew)) { return false; }else if (valueOrig instanceof JsonPrimitive && valueNew instanceof JsonPrimitive && !isEqual((JsonPrimitive) valueOrig, (JsonPrimitive) valueNew)) { return false; } } } return true; }
public boolean isWorkflowChanged(){ try { if (originalWorkflowElementJson==null){ updateOriginalWorkflowElement(); } // return !XMLUtil.isEqual(originalWorkflowElement, getWorkflow().toXML()); return !JSONUtil.isEqual(originalWorkflowElementJson, getWorkflow().toJSON()); } catch (Exception e) { e.printStackTrace(); return true; } }