140 public void writeEndDatabase() { |
137 public void writeEndDatabase() { |
141 popState(EnumSet.of(State.BATCH)); |
138 popState(EnumSet.of(State.BATCH)); |
142 } |
139 } |
143 |
140 |
144 @Override |
141 @Override |
145 public void writeStartResultSet() { |
142 public void writeStartStatement() { |
146 pushState(State.RESULT_SET, EnumSet.of(State.DATABASE)); |
143 pushState(State.STATEMENT, EnumSet.of(State.DATABASE)); |
|
144 } |
|
145 |
|
146 @Override |
|
147 public void writeEndStatement() { |
|
148 popState(EnumSet.of(State.DATABASE)); |
|
149 } |
|
150 |
|
151 @Override |
|
152 public void writeStartResultSet(ColumnsHeader header) { |
|
153 pushState(State.RESULT_SET, EnumSet.of(State.STATEMENT)); |
147 currentRowCount = 0; |
154 currentRowCount = 0; |
|
155 currentColumnsHeader = header; |
148 } |
156 } |
149 |
157 |
150 @Override |
158 @Override |
151 public void writeEndResultSet() { |
159 public void writeEndResultSet() { |
152 popState(EnumSet.of(State.DATABASE)); |
160 popState(EnumSet.of(State.STATEMENT)); |
153 currentColumnsHeader = null; |
161 currentColumnsHeader = null; |
154 } |
162 } |
155 |
163 |
156 @Override |
164 @Override |
157 public void writeQuery(String sql) { |
165 public void writeQuery(String sql) { |
158 peekState(EnumSet.of(State.RESULT_SET, State.UPDATES_RESULT)); |
166 peekState(EnumSet.of(State.STATEMENT)); |
159 |
167 |
160 if (currentColumnsHeader == null) { |
168 if (currentColumnsHeader == null) { |
161 currentQuery = sql; |
169 currentQuery = sql; |
162 } else { |
170 } else { |
163 throw new IllegalStateException("Query string '" + sql + "' must be set before columns header – was already set: " + currentColumnsHeader); |
171 throw new IllegalStateException("Query string '" + sql + "' must be set before columns header – was already set: " + currentColumnsHeader); |
164 } |
172 } |
165 } |
173 } |
166 |
174 |
167 @Override |
175 @Override |
168 public void writeParameters(List<? extends Parameter> parameters) { |
176 public void writeParameters(List<? extends Parameter> parameters) { |
169 peekState(EnumSet.of(State.RESULT_SET, State.UPDATES_RESULT)); |
177 peekState(EnumSet.of(State.STATEMENT)); |
170 |
178 |
171 if (currentColumnsHeader != null) { |
179 if (currentColumnsHeader != null) { |
172 throw new IllegalStateException("Parameters '" + parameters + "' must be set before columns header – was already set: " + currentColumnsHeader); |
180 throw new IllegalStateException("Parameters '" + parameters + "' must be set before columns header – was already set: " + currentColumnsHeader); |
173 } |
181 } |
174 |
182 |
175 if (currentQuery == null && parameters != null) { |
183 if (currentQuery == null && parameters != null) { |
176 throw new IllegalStateException("Parameters '" + parameters + "' must be set after query – was not yet set."); |
184 throw new IllegalStateException("Parameters '" + parameters + "' must be set after query – was not yet set."); |
177 } |
|
178 } |
|
179 |
|
180 @Override |
|
181 public void writeColumnsHeader(ColumnsHeader header) { |
|
182 peekState(EnumSet.of(State.RESULT_SET)); |
|
183 |
|
184 if (currentColumnsHeader == null) { |
|
185 currentColumnsHeader = header; |
|
186 } else { |
|
187 throw new IllegalStateException("Columns header can be set only once per result set – was already set: " + currentColumnsHeader); |
|
188 } |
185 } |
189 } |
186 } |
190 |
187 |
191 @Override |
188 @Override |
192 public void writeStartRow() { |
189 public void writeStartRow() { |
210 throw new IllegalStateException("Current columns count is " + currentColumnsCount + " which is more than declared " + declaredCount + " in header."); |
207 throw new IllegalStateException("Current columns count is " + currentColumnsCount + " which is more than declared " + declaredCount + " in header."); |
211 } |
208 } |
212 } |
209 } |
213 |
210 |
214 @Override |
211 @Override |
215 public void writeStartUpdatesResult() { |
212 public void writeUpdatesResult(int updatedRowsCount) { |
216 pushState(State.UPDATES_RESULT, EnumSet.of(State.DATABASE)); |
213 peekState(EnumSet.of(State.STATEMENT)); |
217 } |
|
218 |
|
219 @Override |
|
220 public void writeEndUpdatesResult() { |
|
221 popState(EnumSet.of(State.DATABASE)); |
|
222 currentColumnsHeader = null; |
|
223 } |
|
224 |
|
225 @Override |
|
226 public void writeUpdatedRowsCount(int updatedRowsCount) { |
|
227 peekState(EnumSet.of(State.UPDATES_RESULT)); |
|
228 } |
214 } |
229 |
215 |
230 @Override |
216 @Override |
231 public void close() throws FormatterException { |
217 public void close() throws FormatterException { |
232 } |
218 } |