ruper2/src/java/core/org/krysalis/ruper2/util/select/logic AndSelector.java,NONE,1.1 NotSelector.java,NONE,1.1 OrSelector.java,NONE,1.1 BooleanSelector.java,NONE,1.1

[email protected]
Newsgroups gmane.comp.krysalis.metamorphosis.cvs
Message-ID <[email protected]>
Update of /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper2/util/select/logic
In directory sc8-pr-cvs1:/tmp/cvs-serv30481/src/java/core/org/krysalis/ruper2/util/select/logic

Added Files:
	AndSelector.java NotSelector.java OrSelector.java 
	BooleanSelector.java 
Log Message:
Avoid clash with existing Ruper...

--- NEW FILE: AndSelector.java ---
package org.krysalis.ruper2.util.select.logic;

import org.krysalis.ruper2.util.select.CompositeSelector;
import org.krysalis.ruper2.util.select.Selector;

import java.util.Iterator;

/**
 * Composite selector that selects by an AND operation.
 * @author Ben Sommerville
 */
public class AndSelector extends CompositeSelector {

	public boolean select(Object o) throws Exception {
		boolean isSelected = true;
		Iterator childIter = childIterator();
		while (childIter.hasNext() && isSelected) {
			Selector child = (Selector) childIter.next();
			isSelected = child.select(o);
		}
		return isSelected;
	}
}

--- NEW FILE: NotSelector.java ---
package org.krysalis.ruper2.util.select.logic;

import org.krysalis.ruper2.util.select.Selector;

/**
 * Selector that returns the inverse of the selector that it contains
 * @author Ben Sommerville
 */
public class NotSelector implements Selector {

    // Initialise to Boolean true so that
    // a) We don't have to check for nulls
    // b) The default select will return false
    private Selector m_child = BooleanSelector.TRUE;

    /**
     * Constructor
     */
    public NotSelector() {

    }

    /**
     * Constructor
     * @param selector The selector to invert
     */
    public NotSelector( Selector selector) {
        m_child = selector;
    }

    public boolean select(Object o) throws Exception {
        return !m_child.select(o);
    }

    /**
     * Set the selector that will be inverted
     * @param selector Selector to be inverted
     */
    public void setSelector(Selector selector) {
        if( selector == null ) {
            throw new IllegalArgumentException("Can't set null selector");
        }
        m_child = selector;
    }


    public int hashCode() {
        int notHash = getClass().hashCode();
        return notHash * 67 + m_child.hashCode();
    }

    public boolean equals(Object obj) {
        boolean isEqual = false;
        if( obj instanceof NotSelector ) {
            NotSelector rhs = (NotSelector) obj;
            isEqual = m_child.equals( rhs.m_child );
        }
        return isEqual;
    }
}

--- NEW FILE: OrSelector.java ---
package org.krysalis.ruper2.util.select.logic;

import org.krysalis.ruper2.util.select.CompositeSelector;
import org.krysalis.ruper2.util.select.Selector;

import java.util.Iterator;

/**
 * Composite selector that selects by an OR operation.
 *
 * @author Ben Sommerville
 */
public class OrSelector extends CompositeSelector{

    public boolean select(Object o) throws Exception {
        boolean isSelected = true;
        if( hasChildren() ) {
            Iterator childIter = childIterator();
            isSelected = false;
            while (childIter.hasNext() && !isSelected ) {
                Selector child = (Selector) childIter.next();
                isSelected = child.select(o);
            }
        }
        return isSelected;
    }
}

--- NEW FILE: BooleanSelector.java ---
package org.krysalis.ruper2.util.select.logic;

import org.krysalis.ruper2.util.select.Selector;

/**
 * Selector  that always returns the same result.
 * @author Ben Sommerville
 */
public class BooleanSelector implements Selector {
    private boolean m_result = false;

    /** Selector that always returns true */
    public final static Selector TRUE = new BooleanSelector( true );
    /** Selector that always returns false */
    public final static Selector FALSE = new BooleanSelector( false );

    /**
     * Constructor
     * @param result Result that select should return
     */
    public BooleanSelector(boolean result) {
        m_result = result;
    }

    public boolean select(Object o) throws Exception {
        return m_result;
    }

    public boolean equals(Object obj) {
        boolean isEqual = false;
        if( obj instanceof BooleanSelector ) {
            BooleanSelector rhs = (BooleanSelector) obj;
            if( this.m_result == rhs.m_result ) {
                isEqual = true;
            }
        }
        return isEqual;
    }

    public int hashCode() {
        // BPS: Should make these hashes prime????
        if( m_result ) {
            return 15935;
        } else {
            return 17932;
        }
    }
}




-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.