/* * Firetweet - Twitter client for Android * * Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.getlantern.firetweet.util; import android.os.Bundle; import org.apache.commons.lang3.ArrayUtils; import java.util.Iterator; public class CompareUtils { public static boolean bundleEquals(final Bundle bundle1, final Bundle bundle2, final String... ignoredKeys) { if (bundle1 == null || bundle2 == null) return bundle1 == bundle2; final Iterator<String> keys = bundle1.keySet().iterator(); while (keys.hasNext()) { final String key = keys.next(); if (!ArrayUtils.contains(ignoredKeys, key) && !objectEquals(bundle1.get(key), bundle2.get(key))) return false; } return true; } public static boolean classEquals(final Class<?> cls1, final Class<?> cls2) { if (cls1 == null || cls2 == null) return cls1 == cls2; return cls1.getName().equals(cls2.getName()); } public static boolean objectEquals(final Object object1, final Object object2) { if (object1 == null || object2 == null) return object1 == object2; if (object1 instanceof Bundle && object2 instanceof Bundle) return bundleEquals((Bundle) object1, (Bundle) object2); else if (object1 instanceof Class && object2 instanceof Class) return classEquals((Class<?>) object1, (Class<?>) object2); return object1.equals(object2); } }