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.sql.planner;
 
 
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 public class InputExtractor
 {
     private final Metadata metadata;
 
     public InputExtractor(Metadata metadata)
     {
         this. = metadata;
     }
 
     public List<Inputextract(PlanNode root)
     {
         Visitor visitor = new Visitor();
         root.accept(visitornull);
 
         ImmutableList.Builder<InputinputBuilder = ImmutableList.builder();
         for (Map.Entry<TableEntrySet<Column>> entry : visitor.getInputs().entrySet()) {
             Input input = new Input(entry.getKey().getConnectorId(), entry.getKey().getSchema(), entry.getKey().getTable(), ImmutableList.copyOf(entry.getValue()));
             inputBuilder.add(input);
         }
 
         return inputBuilder.build();
     }
 
     private static Column createColumnEntry(ColumnMetadata columnMetadata)
     {
         return new Column(columnMetadata.getName(), columnMetadata.getType().toString(), Optional.empty());
     }
 
     private static TableEntry createTableEntry(TableMetadata table)
     {
         SchemaTableName schemaTable = table.getTable();
         return new TableEntry(table.getConnectorId(), schemaTable.getSchemaName(), schemaTable.getTableName());
     }
 
     private class Visitor
             extends PlanVisitor<VoidVoid>
     {
         private final Map<TableEntrySet<Column>> inputs = new HashMap<>();
 
         public Map<TableEntrySet<Column>> getInputs()
         {
             return ;
         }
 
         @Override
         public Void visitTableScan(TableScanNode nodeVoid context)
         {
             TableHandle tableHandle = node.getTable();
             Optional<ColumnHandlesampleWeightColumn = .getSampleWeightColumnHandle(tableHandle);
 
             Set<Columncolumns = new HashSet<>();
             for (ColumnHandle columnHandle : node.getAssignments().values()) {
                 if (!columnHandle.equals(sampleWeightColumn.orElse(null))) {
                     columns.add(createColumnEntry(.getColumnMetadata(tableHandlecolumnHandle)));
                 }
             }
 
             .put(createTableEntry(.getTableMetadata(tableHandle)), columns);
 
             return null;
         }
 
        @Override
        public Void visitIndexSource(IndexSourceNode nodeVoid context)
        {
            TableHandle tableHandle = node.getTableHandle();
            Optional<ColumnHandlesampleWeightColumn = .getSampleWeightColumnHandle(tableHandle);
            Set<Columncolumns = new HashSet<>();
            for (ColumnHandle columnHandle : node.getAssignments().values()) {
                if (!columnHandle.equals(sampleWeightColumn.orElse(null))) {
                    columns.add(createColumnEntry(.getColumnMetadata(tableHandlecolumnHandle)));
                }
            }
            .put(createTableEntry(.getTableMetadata(tableHandle)), columns);
            return null;
        }
        @Override
        protected Void visitPlan(PlanNode nodeVoid context)
        {
            for (PlanNode child : node.getSources()) {
                child.accept(thiscontext);
            }
            return null;
        }
    }
    private static final class TableEntry
    {
        private final String connectorId;
        private final String schema;
        private final String table;
        private TableEntry(String connectorIdString schemaString table)
        {
            this. = connectorId;
            this. = schema;
            this. = table;
        }
        public String getConnectorId()
        {
            return ;
        }
        public String getSchema()
        {
            return ;
        }
        public String getTable()
        {
            return ;
        }
        @Override
        public int hashCode()
        {
            return Objects.hash();
        }
        @Override
        public boolean equals(Object obj)
        {
            if (this == obj) {
                return true;
            }
            if (obj == null || getClass() != obj.getClass()) {
                return false;
            }
            final TableEntry other = (TableEntryobj;
            return Objects.equals(this.other.connectorId) &&
                    Objects.equals(this.other.schema) &&
                    Objects.equals(this.other.table);
        }
    }
New to GrepCode? Check out our FAQ X