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.testing;
 
 
 import java.sql.Date;
 import java.sql.Time;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 public class MaterializedResult
         implements Iterable<MaterializedRow>
 {
     public static final int DEFAULT_PRECISION = 5;
 
     private final List<MaterializedRowrows;
     private final List<Typetypes;
     private final Map<StringStringsetSessionProperties;
     private final Set<StringresetSessionProperties;
 
     public MaterializedResult(List<MaterializedRowrowsList<? extends Typetypes)
     {
         this(rowstypes, ImmutableMap.of(), ImmutableSet.of());
     }
 
     public MaterializedResult(List<MaterializedRowrowsList<? extends TypetypesMap<StringStringsetSessionPropertiesSet<StringresetSessionProperties)
     {
         this. = ImmutableList.copyOf(checkNotNull(rows"rows is null"));
         this. = ImmutableList.copyOf(checkNotNull(types"types is null"));
         this. = ImmutableMap.copyOf(checkNotNull(setSessionProperties"setSessionProperties is null"));
         this. = ImmutableSet.copyOf(checkNotNull(resetSessionProperties"resetSessionProperties is null"));
     }
 
     public int getRowCount()
     {
         return .size();
     }
 
     @Override
     public Iterator<MaterializedRowiterator()
     {
         return .iterator();
     }
 
     {
         return ;
     }
 
     public List<TypegetTypes()
     {
         return ;
     }
 
     public Map<StringStringgetSetSessionProperties()
     {
         return ;
     }
 
     public Set<StringgetResetSessionProperties()
     {
         return ;
    }
    @Override
    public boolean equals(Object obj)
    {
        if (obj == this) {
            return true;
        }
        if ((obj == null) || (getClass() != obj.getClass())) {
            return false;
        }
        MaterializedResult o = (MaterializedResultobj;
        return Objects.equal(o.types) &&
                Objects.equal(o.rows) &&
                Objects.equal(o.setSessionProperties) &&
                Objects.equal(o.resetSessionProperties);
    }
    @Override
    public int hashCode()
    {
        return Objects.hashCode();
    }
    @Override
    public String toString()
    {
        return toStringHelper(this)
                .add("rows")
                .add("types")
                .add("setSessionProperties")
                .add("resetSessionProperties")
                .toString();
    }
    {
        ImmutableList.Builder<MaterializedRowjdbcRows = ImmutableList.builder();
        for (MaterializedRow row : ) {
            jdbcRows.add(convertToJdbcTypes(row));
        }
        return new MaterializedResult(jdbcRows.build(), );
    }
    private static MaterializedRow convertToJdbcTypes(MaterializedRow prestoRow)
    {
        List<ObjectjdbcValues = new ArrayList<>();
        for (int field = 0; field < prestoRow.getFieldCount(); field++) {
            Object prestoValue = prestoRow.getField(field);
            Object jdbcValue;
            if (prestoValue instanceof SqlDate) {
                int days = ((SqlDateprestoValue).getDays();
                jdbcValue = new Date(..toMillis(days));
            }
            else if (prestoValue instanceof SqlTime) {
                jdbcValue = new Time(((SqlTimeprestoValue).getMillisUtc());
            }
            else if (prestoValue instanceof SqlTimeWithTimeZone) {
                jdbcValue = new Time(((SqlTimeWithTimeZoneprestoValue).getMillisUtc());
            }
            else if (prestoValue instanceof SqlTimestamp) {
                jdbcValue = new Timestamp(((SqlTimestampprestoValue).getMillisUtc());
            }
            else if (prestoValue instanceof SqlTimestampWithTimeZone) {
                jdbcValue = new Timestamp(((SqlTimestampWithTimeZoneprestoValue).getMillisUtc());
            }
            else {
                jdbcValue = prestoValue;
            }
            jdbcValues.add(jdbcValue);
        }
        return new MaterializedRow(prestoRow.getPrecision(), jdbcValues);
    }
    public MaterializedResult toTimeZone(DateTimeZone oldTimeZoneDateTimeZone newTimeZone)
    {
        ImmutableList.Builder<MaterializedRowjdbcRows = ImmutableList.builder();
        for (MaterializedRow row : ) {
            jdbcRows.add(toTimeZone(rowoldTimeZonenewTimeZone));
        }
        return new MaterializedResult(jdbcRows.build(), );
    }
    private static MaterializedRow toTimeZone(MaterializedRow prestoRowDateTimeZone oldTimeZoneDateTimeZone newTimeZone)
    {
        List<Objectvalues = new ArrayList<>();
        for (int field = 0; field < prestoRow.getFieldCount(); field++) {
            Object value = prestoRow.getField(field);
            if (value instanceof Date) {
                long oldMillis = ((Datevalue).getTime();
                long newMillis = oldTimeZone.getMillisKeepLocal(newTimeZoneoldMillis);
                value = new Date(newMillis);
            }
            values.add(value);
        }
        return new MaterializedRow(prestoRow.getPrecision(), values);
    }
    public static MaterializedResult materializeSourceDataStream(Session sessionConnectorPageSource pageSourceList<Typetypes)
    {
        return materializeSourceDataStream(session.toConnectorSession(), pageSourcetypes);
    }
    public static MaterializedResult materializeSourceDataStream(ConnectorSession sessionConnectorPageSource pageSourceList<Typetypes)
    {
        MaterializedResult.Builder builder = resultBuilder(sessiontypes);
        while (!pageSource.isFinished()) {
            Page outputPage = pageSource.getNextPage();
            if (outputPage == null) {
                break;
            }
            builder.page(outputPage);
        }
        return builder.build();
    }
    public static Builder resultBuilder(Session sessionType... types)
    {
        return resultBuilder(session.toConnectorSession(), types);
    }
    public static Builder resultBuilder(Session sessionIterable<? extends Typetypes)
    {
        return resultBuilder(session.toConnectorSession(), types);
    }
    public static Builder resultBuilder(ConnectorSession sessionType... types)
    {
        return resultBuilder(session, ImmutableList.copyOf(types));
    }
    public static Builder resultBuilder(ConnectorSession sessionIterable<? extends Typetypes)
    {
        return new Builder(session, ImmutableList.copyOf(types));
    }
    public static class Builder
    {
        private final ConnectorSession session;
        private final List<Typetypes;
        private final ImmutableList.Builder<MaterializedRowrows = ImmutableList.builder();
        Builder(ConnectorSession sessionList<Typetypes)
        {
            this. = session;
            this. = ImmutableList.copyOf(types);
        }
        public Builder row(Object... values)
        {
            .add(new MaterializedRow(values));
            return this;
        }
        public Builder pages(Iterable<Pagepages)
        {
            for (Page page : pages) {
                this.page(page);
            }
            return this;
        }
        public Builder page(Page page)
        {
            checkNotNull(page"page is null");
            checkArgument(page.getChannelCount() == .size(), "Expected a page with %s columns, but got %s columns".size(), page.getChannelCount());
            for (int position = 0; position < page.getPositionCount(); position++) {
                List<Objectvalues = new ArrayList<>(page.getChannelCount());
                for (int channel = 0; channel < page.getChannelCount(); channel++) {
                    Type type = .get(channel);
                    Block block = page.getBlock(channel);
                    values.add(type.getObjectValue(blockposition));
                }
                values = Collections.unmodifiableList(values);
                .add(new MaterializedRow(values));
            }
            return this;
        }
        public MaterializedResult build()
        {
            return new MaterializedResult(.build(), );
        }
    }
New to GrepCode? Check out our FAQ X