Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Licensed under the Apache 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.apache.org/licenses/LICENSE-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 com.facebook.presto.util;
 
 
 import java.io.Reader;
 import java.util.List;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.collect.Iterables.transform;
 
 public class DelimitedRecordSet
         implements RecordSet
 {
     private final CharSource charSource;
     private final Splitter columnSplitter;
     private final List<ColumnMetadatacolumns;
     private final List<TypecolumnTypes;
 
     public DelimitedRecordSet(CharSource charSourceSplitter columnSplitterColumnMetadata... columns)
     {
         this(charSourcecolumnSplitter, ImmutableList.copyOf(columns));
     }
 
     public DelimitedRecordSet(CharSource charSourceSplitter columnSplitterIterable<ColumnMetadatacolumns)
     {
         this. = checkNotNull(charSource"charSource is null");
         this. = checkNotNull(columnSplitter"columnSplitter is null");
         this. = ImmutableList.copyOf(columns);
 
         this. = ImmutableList.copyOf(transform(columns, ColumnMetadata::getType));
     }
 
     @Override
     public List<TypegetColumnTypes()
     {
         return ;
     }
 
     @Override
     public RecordCursor cursor()
     {
         return new DelimitedRecordCursor();
     }
 
     private static class DelimitedRecordCursor
             implements RecordCursor
     {
         private final Reader reader;
         private final LineReader lineReader;
         private final Splitter columnSplitter;
         private final List<ColumnMetadatacolumns;
         private List<Stringrow;
 
         private DelimitedRecordCursor(CharSource charSourceSplitter columnSplitterList<ColumnMetadatacolumns)
         {
             try {
                 this. = charSource.openStream();
                 this. = new LineReader();
                 this. = columnSplitter;
                 this. = columns;
             }
             catch (IOException e) {
                 throw Throwables.propagate(e);
             }
         }
 
         @Override
         public long getTotalBytes()
         {
             return 0;
         }
 
         @Override
         public long getCompletedBytes()
         {
            return 0;
        }
        @Override
        public long getReadTimeNanos()
        {
            return 0;
        }
        @Override
        public Type getType(int field)
        {
            return .get(field).getType();
        }
        @Override
        public boolean advanceNextPosition()
        {
            try {
                String line = .readLine();
                if (line == null) {
                     = null;
                    return false;
                }
                 = ImmutableList.copyOf(.split(line));
                return true;
            }
            catch (IOException e) {
                throw Throwables.propagate(e);
            }
        }
        @Override
        public boolean getBoolean(int field)
        {
            return Boolean.parseBoolean(getField(field));
        }
        @Override
        public long getLong(int field)
        {
            return Long.parseLong(getField(field));
        }
        @Override
        public double getDouble(int field)
        {
            return Double.parseDouble(getField(field));
        }
        @Override
        public Slice getSlice(int field)
        {
            return Slices.utf8Slice(getField(field));
        }
        @Override
        public boolean isNull(int field)
        {
            return getField(field).isEmpty();
        }
        private String getField(int field)
        {
            ColumnMetadata columnMetadata = .get(field);
            return .get(columnMetadata.getOrdinalPosition());
        }
        @Override
        public void close()
        {
            try {
                .close();
            }
            catch (IOException e) {
                // ignored
            }
        }
    }
New to GrepCode? Check out our FAQ X