All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.geolatte.common.transformer.IterableTransformerSink Maven / Gradle / Ivy

Go to download

This GeoLatte-common library contains the transformer framework and other common classes used by other GeoLatte modules.

There is a newer version: 0.8
Show newest version
/*
 * This file is part of the GeoLatte project.
 *
 *     GeoLatte is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU Lesser General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 *
 *     GeoLatte is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU Lesser General Public License for more details.
 *
 *     You should have received a copy of the GNU Lesser General Public License
 *     along with GeoLatte.  If not, see .
 *
 * Copyright (C) 2010 - 2010 and Ownership of code is shared by:
 * Qmino bvba - Romeinsestraat 18 - 3001 Heverlee  (http://www.qmino.com)
 * Geovise bvba - Generaal Eisenhowerlei 9 - 2140 Antwerpen (http://www.geovise.com)
 */

package org.geolatte.common.transformer;

import java.util.Iterator;

/**
 * This sink offers its collected input directly to a client through the Iterable interface. The input objects are not cached in an internal list first, but are available immediately.
 * Use this sink if you want to process the output of a transformer operation manually (not encapsulated in a dedicated sink).
 *
 * @param  The type of data processed by this sink.
 *
 * 

* Creation-Date: 13-Apr-2010
* Creation-Time: 12:32:40
*

* * @author Bert Vanhooff * @author Qmino bvba * @since SDK1.5 */ public class IterableTransformerSink extends TransformerSink implements Iterable { private Iterable input; private Iterator outputIterator; /** * Sets the input for this sink. * @param input The data source. */ public void setInput(Iterable input) { this.input = input; outputIterator = null; // invalidate output if new input is set } /** * Starts iterating over its input. */ public void start() { // nothing to do } /** * Provides immdediate access to the input elements collected by this sink. Each next() call will pull an new element from the input as long as there are elements. * * @return A read-only iterator over the input elements received by this sink. */ public Iterator iterator() { if (input == null) return null; if (outputIterator == null) outputIterator = new SinkIterator(input.iterator()); return outputIterator; } /** * This iterator wraps the input and provides its elements back to the client. * @param */ private class SinkIterator implements Iterator { private Iterator input; SinkIterator(Iterator input) { this.input = input; } /** * Determines whether there are more input elements available. * * @return true is there are more elements, false otherwise. */ public boolean hasNext() { return input.hasNext(); } /** * Gets the next input element. * * @return The next input element. */ public T next() { return input.next(); } /** * Not supported */ public void remove() { throw new UnsupportedOperationException(); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy