1 10 package org.mmbase.storage.search.implementation; 11 12 import java.util.*; 13 import org.mmbase.core.*; 14 import org.mmbase.module.core.MMObjectBuilder; 15 import org.mmbase.module.core.VirtualBuilder; 16 import org.mmbase.module.corebuilders.InsRel; 17 import org.mmbase.storage.search.*; 18 19 41 public class NodeSearchQuery extends BasicSearchQuery implements SearchQuery { 42 43 44 private MMObjectBuilder builder = null; 45 46 47 private Map stepFields = new HashMap(); 48 49 50 57 public NodeSearchQuery(MMObjectBuilder builder) { 58 if (builder == null) { 59 throw new IllegalArgumentException ("Invalid builder value: " + builder); 60 } 61 if (builder instanceof VirtualBuilder) { 62 throw new IllegalArgumentException ("Invalid builder type, because this is a virtual builder: " + builder.getClass().getName()); 63 } 64 Step step = super.addStep(builder); 65 addFields(step); 66 this.builder = builder; 67 } 68 69 80 81 protected void copySteps(SearchQuery q) { 82 } 84 85 86 protected void copyFields(SearchQuery q) { 87 } 89 97 public BasicStepField getField(CoreField field) { 98 BasicStepField stepField = (BasicStepField) stepFields.get(field); 99 if (stepField == null) { 100 throw new IllegalArgumentException ("Not a persistent field of builder " + builder.getTableName() + ": " + field + " in " + stepFields); 102 } 103 return stepField; 104 } 105 106 111 public MMObjectBuilder getBuilder() { 112 return builder; 113 } 114 115 public BasicStep addStep(MMObjectBuilder builder) { 117 throw new UnsupportedOperationException ( 118 "Adding more steps to NodeSearchQuery not supported."); 119 } 120 121 public BasicRelationStep addRelationStep(InsRel builder, MMObjectBuilder nextBuilder) { 123 throw new UnsupportedOperationException ("Adding more steps to NodeSearchQuery not supported."); 124 } 125 126 public BasicStepField addField(Step step, CoreField fieldDefs) { 128 if (builder != null) { throw new UnsupportedOperationException ("Adding more fields to NodeSearchQuery not supported."); 130 } else { 131 return super.addField(step, fieldDefs); 132 } 133 } 134 protected void mapField(CoreField field, StepField stepField) { 136 stepFields.put(field, stepField); 137 } 138 139 public BasicAggregatedField addAggregatedField(Step step, CoreField fieldDefs, int aggregationType) { 141 throw new UnsupportedOperationException ("Adding more fields to NodeSearchQuery not supported."); 142 } 143 144 } 145 | Popular Tags |