Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrescobar2010-06-19 01:38:06 +0000
committerrescobar2010-06-19 01:38:06 +0000
commit8f9ca3a0da89ca96fcf24c71bbda0a219c7cb19e (patch)
treec40761ae8485f75a5d23a26069f553acc1cc0818 /plugins/org.eclipse.osee.framework.jdk.core
parentfb85a9381feb60438b58ae7372f8fa5c0ea3931f (diff)
downloadorg.eclipse.osee-8f9ca3a0da89ca96fcf24c71bbda0a219c7cb19e.tar.gz
org.eclipse.osee-8f9ca3a0da89ca96fcf24c71bbda0a219c7cb19e.tar.xz
org.eclipse.osee-8f9ca3a0da89ca96fcf24c71bbda0a219c7cb19e.zip
Diffstat (limited to 'plugins/org.eclipse.osee.framework.jdk.core')
-rw-r--r--plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Compare.java70
1 files changed, 70 insertions, 0 deletions
diff --git a/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Compare.java b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Compare.java
new file mode 100644
index 00000000000..b1355f109f3
--- /dev/null
+++ b/plugins/org.eclipse.osee.framework.jdk.core/src/org/eclipse/osee/framework/jdk/core/util/Compare.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2009 Boeing.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Boeing - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.osee.framework.jdk.core.util;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * @author Roberto E. Escobar
+ */
+public class Compare {
+
+ private Compare() {
+ }
+
+ @SuppressWarnings("unchecked")
+ public static boolean isDifferent(Object original, Object other) {
+ boolean result = true;
+ if (original == null && other == null) {
+ result = false;
+ } else if (original != null && other != null) {
+ if (original instanceof Map<?, ?> && other instanceof Map<?, ?>) {
+ result = isDifferent((Map<Object, Object>) original, (Map<Object, Object>) other);
+ } else if (original instanceof Collection<?> && other instanceof Collection<?>) {
+ result = isDifferent((Collection<Object>) original, (Collection<Object>) other);
+ } else if (original instanceof Object[] && other instanceof Object[]) {
+ result = isDifferent(Arrays.asList((Object[]) original), Arrays.asList((Object[]) other));
+ } else {
+ result = !original.equals(other);
+ }
+ }
+ return result;
+ }
+
+ private static boolean isDifferent(Collection<Object> original, Collection<Object> other) {
+ return original.size() != other.size() || //
+ !Collections.setComplement(original, other).isEmpty() || //
+ !Collections.setComplement(other, original).isEmpty();
+ }
+
+ private static boolean isDifferent(Map<Object, Object> original, Map<Object, Object> other) {
+ boolean result = true;
+ if (original.size() == other.size()) {
+ Set<Object> set1 = original.keySet();
+ Set<Object> set2 = other.keySet();
+ if (!isDifferent(set1, set2)) {
+ result = false;
+ for (Object key : set1) {
+ Object value1 = original.get(key);
+ Object value2 = other.get(key);
+ if (isDifferent(value1, value2)) {
+ result = true;
+ break;
+ }
+ }
+ }
+ }
+ return result;
+ }
+}

Back to the top