Java tutorial
/******************************************************************************* * Copyright (c) 2008 Ralf Ebert * 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: * Ralf Ebert - initial API and implementation *******************************************************************************/ package com.swtxml.util.properties; import java.util.Arrays; import org.apache.commons.lang.ArrayUtils; public class PropertyMatcher { public static final Class<?> ALL_CLASSES = null; public static final String ALL_PROPERTIES = null; private final Class<?> forClass; private final String propertyName; private final Class<?>[] targetTypes; public PropertyMatcher(Class<?>... propertyTypes) { this(ALL_CLASSES, ALL_PROPERTIES, propertyTypes); } public PropertyMatcher(Class<?> forClass, String propertyName, Class<?>... propertyTypes) { super(); this.forClass = forClass; this.propertyName = propertyName; this.targetTypes = propertyTypes; for (Class<?> type : propertyTypes) { if (type == null) { throw new PropertiesException("propertyTypes may not be null"); } } } public boolean match(Class<?> queryClass, String queryPropertyName, Class<?> queryTargetType) { if (forClass != null && !forClass.isAssignableFrom(queryClass)) { return false; } if (propertyName != null && !propertyName.equals(queryPropertyName)) { return false; } if (targetTypes.length > 0 && !ArrayUtils.contains(targetTypes, queryTargetType)) { return false; } return true; } @Override public String toString() { String classLabel = forClass != null ? forClass.getSimpleName() : "*"; String propLabel = propertyName != null ? propertyName : "*"; String targetTypesLabel = targetTypes.length > 0 ? Arrays.toString(targetTypes) : "*"; return "PropertyMatcher[" + classLabel + "." + propLabel + " = " + targetTypesLabel + "]"; } }