1 10 package org.mmbase.storage.search.implementation; 11 12 import java.util.*; 13 import org.mmbase.module.core.MMObjectBuilder; 14 import org.mmbase.storage.search.*; 15 16 24 public class BasicStep implements Step { 25 26 27 protected MMObjectBuilder builder = null; 28 29 protected String alias = null; 30 34 protected SortedSet nodes = new TreeSet(); 35 41 BasicStep(MMObjectBuilder builder) { 43 if (builder == null) { 44 throw new IllegalArgumentException ("Invalid builder value: " + builder); 45 } 46 this.builder = builder; 47 } 48 49 56 public BasicStep setAlias(String alias) { 57 if (alias != null && alias.trim().length() == 0) { 58 throw new IllegalArgumentException ( 59 "Invalid alias value: " + alias); 60 } 61 this.alias = alias; 62 return this; 63 } 64 65 72 public BasicStep addNode(int nodeNumber) { 73 if (nodeNumber < 0) { 74 throw new IllegalArgumentException ("Invalid nodeNumber value: " + nodeNumber); 75 } 76 nodes.add(new Integer (nodeNumber)); 77 return this; 78 } 79 80 85 public MMObjectBuilder getBuilder() { 86 return builder; 87 } 88 89 public String getTableName() { 91 return builder.getTableName(); 92 } 93 94 public String getAlias() { 96 return alias; 97 } 98 99 public SortedSet getNodes() { 101 return Collections.unmodifiableSortedSet(nodes); 102 } 103 104 public boolean equals(Object obj) { 106 if (obj == this) { 107 return true; 108 } 109 if (obj instanceof Step && !(obj instanceof RelationStep)) { 110 Step step = (Step) obj; 111 return getTableName().equals(step.getTableName()) 112 && (alias == null ? step.getAlias() == null : alias.equals(step.getAlias())) 113 && nodes.equals(step.getNodes()); 114 } else { 115 return false; 116 } 117 } 118 119 public int hashCode() { 121 return 41 * builder.getTableName().hashCode() 122 + (alias == null? 0: 43 * alias.hashCode()) + 47 * nodes.hashCode(); 123 } 124 125 public String toString() { 127 StringBuffer sb = new StringBuffer ("Step(tablename:"). 128 append(getTableName()). 129 append(", alias:").append(alias). 130 append(", nodes:").append(nodes). 131 append(")"); 132 return sb.toString(); 133 } 134 135 } 136 | Popular Tags |