    001    /*
    002     * Copyright (c) 2007-2014 Concurrent, Inc. All Rights Reserved.
    003     *
    004     * Project and contact information: http://www.cascading.org/
    005     *
    006     * This file is part of the Cascading project.
    007     *
    008     * Licensed under the Apache License, Version 2.0 (the "License");
    009     * you may not use this file except in compliance with the License.
    010     * You may obtain a copy of the License at
    011     *
    012     *     http://www.apache.org/licenses/LICENSE-2.0
    013     *
    014     * Unless required by applicable law or agreed to in writing, software
    015     * distributed under the License is distributed on an "AS IS" BASIS,
    016     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    017     * See the License for the specific language governing permissions and
    018     * limitations under the License.
    019     */
    020
    021    package cascading.tuple;
    022
    023    import java.io.Closeable;
    024    import java.util.Iterator;
    025
    026    /**
    027     * Class TupleEntryIterator provides an efficient Iterator for returning {@link TupleEntry} elements in an
    028     * underlying {@link Tuple} collection.
    029     */
    030    public abstract class TupleEntryIterator implements Iterator<TupleEntry>, Closeable
    031      {
    032      /** Field entry */
    033      final TupleEntry entry;
    034
    035      /**
    036       * Constructor TupleEntryIterator creates a new TupleEntryIterator instance.
    037       *
    038       * @param fields of type Fields
    039       */
    040      public TupleEntryIterator( Fields fields )
    041        {
    042        this.entry = new TupleEntry( fields, Tuple.size( fields.size() ) );
    043        }
    044
    045      /**
    046       * Method getFields returns the fields of this TupleEntryIterator object.
    047       *
    048       * @return the fields (type Fields) of this TupleEntryIterator object.
    049       */
    050      public Fields getFields()
    051        {
    052        return entry.getFields();
    053        }
    054
    055      /**
    056       * Method getTupleEntry returns the entry of this TupleEntryIterator object.
    057       * <p/>
    058       * Since {@link TupleEntry} and the underlying {@link Tuple} instances are re-used, you must make a copy if you wish
    059       * to store the instances in a Collection for later use.
    060       *
    061       * @return the entry (type TupleEntry) of this TupleEntryIterator object.
    062       */
    063      public TupleEntry getTupleEntry()
    064        {
    065        return entry;
    066        }
    067      }