metridoc.plugins.grid.DefaultGrid.groovy Maven / Gradle / Ivy
/*
* Copyright 2010 Trustees of the University of Pennsylvania Licensed under the
* Educational Community License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may
* obtain a copy of the License at
*
* http://www.osedu.org/licenses/ECL-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an "AS IS"
* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
package metridoc.plugins.grid
import org.apache.camel.Exchange
import groovy.sql.GroovyRowResult
/**
* Created by IntelliJ IDEA.
* User: tbarker
* Date: 9/9/11
* Time: 10:46 AM
*/
abstract class DefaultGrid implements Grid {
int line = 0
Exchange originalExchange
private boolean hasClosed
Set columns
GroovyRowResult next() {
if(hasNext()) {
line++
def result = doNext()
if(!columns) {
columns = result.keySet()
}
return result
}
throw new NoSuchElementException("no more elements in ${this}")
}
boolean hasNext() {
boolean result = doHasNext()
boolean doClose = !hasClosed && !result && this instanceof Closeable
if(doClose) {
def closeable = this as Closeable
closeable.close()
hasClosed = true
}
return result
}
void remove() {
throw new UnsupportedOperationException("remove not supportted in DefaultGrid")
}
abstract boolean doHasNext()
abstract GroovyRowResult doNext()
}