All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.javabuilders.PropertyCombination Maven / Gradle / Ivy

The newest version!
package org.javabuilders;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * Represents a collection of valid property combinations
 * @author Jacek Furmankiewicz
 */
public class PropertyCombination {

	private List combinations = new ArrayList();

	/**
	 * @param properties List of valid property combinations
	 */
	public void add(String...properties) {
		combinations.add(properties);
	}
	
	/**
	 * Checks if a list of property names is valid as per the
	 * list of valid combinations
	 * @param properties Properties
	 * @return true or false
	 */
	public boolean isValid(Collection properties) {
		boolean isValid = false;
		
		
		for(String[] allowed : combinations) {
			
			boolean found = false;
			boolean notFound = false;
			for(String property : allowed) {
				if (properties.contains(property)) {
					found = true;
				} else {
					notFound = true;
				}
			}
			
			if (found && !notFound) {
				isValid = true;
				break;
			}
		}
		
		return isValid;
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder(combinations.size() * 20);
		for(String[] properties : combinations) {
			if (builder.length() > 0) {
				builder.append(" | ");	
			}
			for(String property : properties) {
				builder.append(property).append(" ");
			}
		}
		return builder.toString();
	}
	
	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		return combinations.hashCode();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy