| /******************************************************************************* |
| * Copyright (c) 2004, 2006 IBM Corporation and others. |
| * 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: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.internal.preferences; |
| |
| import java.util.Iterator; |
| import java.util.Set; |
| |
| /** |
| * @since 3.1 |
| */ |
| public class PropertyUtil { |
| private PropertyUtil() { |
| } |
| |
| public static boolean isEqual(IPropertyMap map1, IPropertyMap map2) { |
| Set map1Keys = map1.keySet(); |
| Set map2Keys = map2.keySet(); |
| |
| if (!map1Keys.equals(map2Keys)) { |
| return false; |
| } |
| |
| for (Iterator iter = map1Keys.iterator(); iter.hasNext();) { |
| String next = (String) iter.next(); |
| |
| if (!map1.getValue(next, Object.class).equals(map2.getValue(next, Object.class))) { |
| return false; |
| } |
| } |
| |
| return true; |
| } |
| |
| /** |
| * Copies all properties from the given source to the given destination |
| * |
| * @param destination |
| * @param source |
| * @since 3.1 |
| */ |
| public static void copy(IPropertyMap destination, IPropertyMap source) { |
| Set keys = source.keySet(); |
| |
| for (Iterator iter = keys.iterator(); iter.hasNext();) { |
| String key = (String) iter.next(); |
| |
| destination.setValue(key, source.getValue(key, Object.class)); |
| } |
| } |
| |
| /** |
| * Computes the union of a set property maps. The result will contain all properties from |
| * all of the contributing maps. If the same property had a different value in two or |
| * more maps, its value in the union will be null. If the same property |
| * |
| * Note that the result is a standalone |
| * object and will not be updated to reflect subsequent changes in the source maps. |
| * |
| * @param sources |
| * @return |
| * @since 3.1 |
| */ |
| public static IPropertyMap union(IPropertyMap[] sources) { |
| PropertyMapUnion result = new PropertyMapUnion(); |
| |
| for (int i = 0; i < sources.length; i++) { |
| IPropertyMap map = sources[i]; |
| |
| result.addMap(map); |
| } |
| |
| return result; |
| } |
| |
| public static boolean get(IPropertyMap toRead, String propertyId, boolean defaultValue) { |
| Boolean result = ((Boolean)toRead.getValue(propertyId, Boolean.class)); |
| |
| if (result == null) { |
| return defaultValue; |
| } |
| |
| return result.booleanValue(); |
| } |
| |
| public static int get(IPropertyMap toRead, String propertyId, int defaultValue) { |
| Integer result = ((Integer)toRead.getValue(propertyId, Integer.class)); |
| |
| if (result == null) { |
| return defaultValue; |
| } |
| |
| return result.intValue(); |
| } |
| } |