Update of /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper/util/select
In directory sc8-pr-cvs1:/tmp/cvs-serv24751/src/java/core/org/krysalis/ruper/util/select
Modified Files:
CompositeSelector.java SelectorHandlerChain.java
Log Message:
Tinkering...
Index: CompositeSelector.java
===================================================================
RCS file: /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper/util/select/CompositeSelector.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** CompositeSelector.java 16 Sep 2003 13:55:10 -0000 1.1
--- CompositeSelector.java 23 Sep 2003 05:03:07 -0000 1.2
***************
*** 10,16 ****
import java.io.PrintWriter;
-
/**
! * Abstract selector thas is composed of child selectors. Doesn't
* specify how the select method should be resolved, that is left
* to specific implementations.
--- 10,15 ----
import java.io.PrintWriter;
/**
! * Abstract selector that is composed of child selectors. Doesn't
* specify how the select method should be resolved, that is left
* to specific implementations.
***************
*** 23,160 ****
*/
public abstract class CompositeSelector implements Selector, Dumpable {
! // Would be much easier if we could use a LinkedHashSet, but that
! // isn't available until JDK 1.4
! private List m_children = new LinkedList();
! /**
! * Add a selector to this composite if it is not already present.
! * If selector has already been added, the add will fail (and
! * return false).
! * @param selector Selector to add
! * @return true if this composite did not already contain the selector
! * @throws NullPointerException If selector is null
! */
! public boolean addSelector(Selector selector) {
! if( selector == null ) {
! throw new NullPointerException("Can't add null selector to composite");
! }
! boolean wasAdded;
! if( m_children.contains( selector ) ) {
! wasAdded = false;
! } else {
! wasAdded = m_children.add( selector );
! }
! return wasAdded;
! }
! /**
! * Get the number of children
! * @return Number of children
! */
! public int childCount() {
! return m_children.size();
! }
! /**
! * Get an iterator to access children
! * @return Iterator that iterates over children
! */
! public Iterator childIterator() {
! return m_children.iterator();
! }
! /**
! * Check if this selector has children
! * @return true if it has children
! */
! public boolean hasChildren() {
! return !m_children.isEmpty();
! }
! /**
! * Get the name of this type of selector. This is used for
! * debug output.
! * By default will return type name based on class name
! *
! * @return Selector type name.
! */
! public String getTypeName() {
! String name = SystemUtils.getShortName( this );
! String selectorSuffix = "Selector";
! if( name.endsWith( selectorSuffix ) ) {
! name = name.substring(0, name.length() - selectorSuffix.length() );
! }
! return name;
! }
! /**
! * Override of equals method (@see java.lang.Object#equals).
! * CompositeSelectors are equal if they are of the same
! * type and have the same children (number and order).
! * @param obj Object compare with
! * @return True if objects are equal
! */
! public boolean equals(Object obj) {
! boolean isEqual = false;
! if( sameType( obj ) ) {
! CompositeSelector rhs = (CompositeSelector) obj;
! if( childCount() == rhs.childCount() ){
! Iterator lhsIter = childIterator();
! Iterator rhsIter = rhs.childIterator();
! isEqual = true;
! while( lhsIter.hasNext() && rhsIter.hasNext() && isEqual ) {
! Object lhsChild = lhsIter.next();
! Object rhsChild = rhsIter.next();
! isEqual = lhsChild.equals( rhsChild );
! }
! }
! }
! return isEqual;
! }
! public int hashCode() {
! int typeHash = getType().hashCode();
! return typeHash * 41 + m_children.hashCode();
! }
! public void dump(PrintWriter out, int depth, boolean verbose) {
! String indent = DebugUtils.getIndent( depth );
! out.print( indent );
! out.print( getTypeName() );
! out.println( " (");
! Iterator iter = childIterator();
! while (iter.hasNext()) {
! Selector selector = (Selector) iter.next();
! DebugUtils.dump( out, depth+1, verbose, selector );
! }
! out.print(indent);
! out.println( ")");
! }
! /**
! * Determine if object is same type of selector
! * @param obj Object to check
! * @return true if the types are the same
! */
! private boolean sameType( Object obj ) {
! boolean isSame = false;
! if( obj instanceof CompositeSelector ) {
! CompositeSelector rhs = (CompositeSelector) obj;
! return getType().equals( rhs.getType() );
! }
! return isSame;
! }
! /**
! * Get an object representing the selector type
! * @return Type object
! */
! private Object getType() {
! return getClass();
! }
}
--- 22,174 ----
*/
public abstract class CompositeSelector implements Selector, Dumpable {
! // Would be much easier if we could use a LinkedHashSet, but that
! // isn't available until JDK 1.4
! private List m_children = new LinkedList();
+ /**
+ * Add a selector to this composite if it is not already present.
+ * If selector has already been added, the add will fail (and
+ * return false).
+ * @param selector Selector to add
+ * @return true if this composite did not already contain the selector
+ * @throws NullPointerException If selector is null
+ */
+ public boolean addSelector(Selector selector) {
+ if (selector == null) {
+ throw new IllegalArgumentException("Can't add null selector to composite");
+ }
+ boolean wasAdded;
+ if (m_children.contains(selector)) {
+ wasAdded = false;
+ }
+ else {
+ wasAdded = m_children.add(selector);
+ }
+ return wasAdded;
+ }
! /**
! * Get the number of children
! * @return Number of children
! */
! public int childCount() {
! return m_children.size();
! }
! /**
! * Get an iterator to access children
! * @return Iterator that iterates over children
! */
! public Iterator childIterator() {
! return m_children.iterator();
! }
! /**
! * Check if this selector has children
! * @return true if it has children
! */
! public boolean hasChildren() {
! return !m_children.isEmpty();
! }
! /**
! * Get the name of this type of selector. This is used for
! * debug output.
! * By default will return type name based on class name
! *
! * @return Selector type name.
! */
! public String getTypeName() {
! String name = SystemUtils.getShortName(this);
! String selectorSuffix = "Selector";
! if (name.endsWith(selectorSuffix)) {
! name = name.substring(0, name.length() - selectorSuffix.length());
! }
! return name;
! }
+ /**
+ * Override of equals method (@see java.lang.Object#equals).
+ * CompositeSelectors are equal if they are of the same
+ * type and have the same children (number and order).
+ * @param obj Object compare with
+ * @return True if objects are equal
+ */
+ public boolean equals(Object obj) {
+ boolean isEqual = false;
! if (sameType(obj)) {
! CompositeSelector rhs = (CompositeSelector) obj;
! if (childCount() == rhs.childCount()) {
! Iterator lhsIter = childIterator();
! Iterator rhsIter = rhs.childIterator();
! isEqual = true;
! while (lhsIter.hasNext() && rhsIter.hasNext() && isEqual) {
! Object lhsChild = lhsIter.next();
! Object rhsChild = rhsIter.next();
! isEqual = lhsChild.equals(rhsChild);
! }
! }
! }
! return isEqual;
! }
! public int hashCode() {
! int typeHash = getType().hashCode();
! return typeHash * 41 + m_children.hashCode();
! }
! public void dump(PrintWriter out, int depth, boolean verbose) {
! String indent = DebugUtils.getIndent(depth);
! out.print(indent);
! out.print(getTypeName());
! out.println(" (");
! Iterator iter = childIterator();
! while (iter.hasNext()) {
! Selector selector = (Selector) iter.next();
! DebugUtils.dump(out, depth + 1, verbose, selector);
! }
! out.print(indent);
! out.println(")");
! }
! public String toString() {
! StringBuffer buffer = new StringBuffer();
! buffer.append(getTypeName());
! buffer.append(" (");
! Iterator iter = childIterator();
! while (iter.hasNext()) {
! Selector selector = (Selector) iter.next();
! buffer.append(selector);
! }
! buffer.append(")");
! return buffer.toString();
! }
!
! /**
! * Determine if object is same type of selector
! * @param obj Object to check
! * @return true if the types are the same
! */
! private boolean sameType(Object obj) {
! boolean isSame = false;
! if (obj instanceof CompositeSelector) {
! CompositeSelector rhs = (CompositeSelector) obj;
! return getType().equals(rhs.getType());
! }
! return isSame;
! }
!
! /**
! * Get an object representing the selector type
! * @return Type object
! */
! private Object getType() {
! return getClass();
! }
}
Index: SelectorHandlerChain.java
===================================================================
RCS file: /cvsroot/metamorphosis/ruper2/src/java/core/org/krysalis/ruper/util/select/SelectorHandlerChain.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** SelectorHandlerChain.java 18 Sep 2003 20:15:40 -0000 1.3
--- SelectorHandlerChain.java 23 Sep 2003 05:03:07 -0000 1.4
***************
*** 12,35 ****
* @author anou_mana
*/
! public class SelectorHandlerChain extends HandlerChain
! {
/**
* @param name
*/
! public SelectorHandlerChain(String name)
! {
super(name);
}
! public List process(final List list)
! {
List processedList = new ArrayList(list);
! List selectorList = this.getHandlers();
! if(!selectorList.isEmpty())
! processedList = SelectionHelper.select(processedList,selectorList );
!
return processedList;
}
-
}
--- 12,31 ----
* @author anou_mana
*/
! public class SelectorHandlerChain extends HandlerChain {
/**
* @param name
*/
! public SelectorHandlerChain(String name) {
super(name);
}
! public List process(final List list) {
List processedList = new ArrayList(list);
! List selectorList = this.getHandlers();
! if (!selectorList.isEmpty())
! processedList = SelectionHelper.select(processedList, selectorList);
!
return processedList;
}
}
-------------------------------------------------------
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.