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.analyzer;
 
 
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
 public class Field
 {
     private final Optional<QualifiedNamerelationAlias;
     private final Optional<Stringname;
     private final Type type;
     private final boolean hidden;
 
     public static Field newUnqualified(String nameType type)
     {
         Preconditions.checkNotNull(name"name is null");
         Preconditions.checkNotNull(type"type is null");
 
         return new Field(Optional.empty(), Optional.of(name), typefalse);
     }
 
     public static Field newUnqualified(Optional<StringnameType type)
     {
         Preconditions.checkNotNull(name"name is null");
         Preconditions.checkNotNull(type"type is null");
 
         return new Field(Optional.empty(), nametypefalse);
     }
 
     public static Field newQualified(QualifiedName relationAliasOptional<StringnameType typeboolean hidden)
     {
         Preconditions.checkNotNull(relationAlias"relationAlias is null");
         Preconditions.checkNotNull(name"name is null");
         Preconditions.checkNotNull(type"type is null");
 
         return new Field(Optional.of(relationAlias), nametypehidden);
     }
 
     private Field(Optional<QualifiedNamerelationAliasOptional<StringnameType typeboolean hidden)
     {
         checkNotNull(relationAlias"relationAlias is null");
         checkNotNull(name"name is null");
         checkNotNull(type"type is null");
 
         this. = relationAlias;
         this. = name;
         this. = type;
         this. = hidden;
     }
 
     {
         return ;
     }
 
     public Optional<StringgetName()
     {
         return ;
     }
 
     public Type getType()
     {
         return ;
     }
 
     public boolean isHidden()
     {
         return ;
     }
 
     public boolean matchesPrefix(Optional<QualifiedNameprefix)
     {
         return !prefix.isPresent() || .isPresent() && .get().hasSuffix(prefix.get());
     }
 
     /*
       Namespaces can have names such as "x", "x.y" or "" if there's no name
       Name to resolve can have names like "a", "x.a", "x.y.a"
 
       namespace  name     possible match
        ""         "a"           y
        "x"        "a"           y
       "x.y"      "a"           y
       ""         "x.a"         n
       "x"        "x.a"         y
       "x.y"      "x.a"         n
       ""         "x.y.a"       n
       "x"        "x.y.a"       n
       "x.y"      "x.y.a"       n
       ""         "y.a"         n
       "x"        "y.a"         n
       "x.y"      "y.a"         y
     */
    public boolean canResolve(QualifiedName name)
    {
        if (!this..isPresent()) {
            return false;
        }
        // TODO: need to know whether the qualified name and the name of this field were quoted
        return matchesPrefix(name.getPrefix()) && this..get().equalsIgnoreCase(name.getSuffix());
    }
    @Override
    public String toString()
    {
        StringBuilder result = new StringBuilder();
        if (.isPresent()) {
            result.append(.get())
                    .append(".");
        }
        result.append(.orElse("<anonymous>"))
                .append(":")
                .append();
        return result.toString();
    }
New to GrepCode? Check out our FAQ X