1 16 package scriptella.driver.janino; 17 18 import scriptella.spi.ParametersCallback; 19 import scriptella.spi.QueryCallback; 20 import scriptella.util.CollectionUtils; 21 22 import java.util.Map ; 23 24 74 public abstract class JaninoQuery extends JaninoScript implements ParametersCallback { 75 private QueryCallback queryCallback; 76 private Map <String , Object > row; 77 78 81 final void setQueryCallback(QueryCallback queryCallback) { 82 this.queryCallback = queryCallback; 83 } 84 85 public final QueryCallback getQueryCallback() { 86 return queryCallback; 87 } 88 89 public final Object getParameter(final String name) { 90 if (row != null) { 91 Object v = row.get(name); 92 if (v != null) { 93 return v; 94 } 95 } 96 return super.get(name); 97 } 98 99 100 108 public final void set(String name, Object value) { 109 initRow(); 110 row.put(name, value); 111 } 112 113 118 public final void set(Map <String ,?> parametersMap) { 119 initRow(); 120 row.putAll(parametersMap); 121 } 122 123 private void initRow() { 124 if (row == null) { 125 row = CollectionUtils.newCaseInsensitiveAsciiMap(); 126 } 127 } 128 129 137 public final void next() { 138 queryCallback.processRow(this); 139 if (row != null) { 140 row.clear(); 141 } 142 } 143 144 152 public final void next(String [] parameterNames, Object [] values) { 153 for (int i = 0; i < parameterNames.length; i++) { 154 set(parameterNames[i], values[i]); 155 } 156 next(); 157 } 158 159 166 public final void next(Map <String ,?> parametersMap) { 167 set(parametersMap); 168 next(); 169 } 170 171 172 173 public String toString() { 174 return "Query"; 175 } 176 177 178 } 179 | Popular Tags |