| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you 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 org.apache.impala.catalog; |
| |
| import org.apache.impala.thrift.TCatalogObject; |
| import org.apache.impala.thrift.TCatalogObjectType; |
| import org.apache.impala.thrift.TDataSource; |
| import com.google.common.base.Objects; |
| |
| /** |
| * Represents a data source in the catalog. Contains the data source name and all |
| * information needed to locate and load the data source. |
| */ |
| public class DataSource extends CatalogObjectImpl implements FeDataSource { |
| private final String dataSrcName_; |
| private final String className_; |
| private final String apiVersionString_; |
| // Qualified path to the data source. |
| private final String location_; |
| |
| public DataSource(String dataSrcName, String location, String className, |
| String apiVersionString) { |
| dataSrcName_ = dataSrcName; |
| location_ = location; |
| className_ = className; |
| apiVersionString_ = apiVersionString; |
| } |
| |
| public static DataSource fromThrift(TDataSource thrift) { |
| return new DataSource(thrift.getName(), thrift.getHdfs_location(), |
| thrift.getClass_name(), thrift.getApi_version()); |
| } |
| |
| @Override |
| public TCatalogObjectType getCatalogObjectType() { |
| return TCatalogObjectType.DATA_SOURCE; |
| } |
| |
| @Override |
| public String getName() { return dataSrcName_; } |
| @Override // FeDataSource |
| public String getLocation() { return location_; } |
| @Override // FeDataSource |
| public String getClassName() { return className_; } |
| @Override // FeDataSource |
| public String getApiVersion() { return apiVersionString_; } |
| |
| public TDataSource toThrift() { |
| return new TDataSource(getName(), location_, className_, apiVersionString_); |
| } |
| |
| public String debugString() { |
| return Objects.toStringHelper(this) |
| .add("name", dataSrcName_) |
| .add("location", location_) |
| .add("className", className_) |
| .add("apiVersion", apiVersionString_) |
| .toString(); |
| } |
| |
| public static String debugString(TDataSource thrift) { |
| return fromThrift(thrift).debugString(); |
| } |
| |
| @Override |
| protected void setTCatalogObject(TCatalogObject catalogObject) { |
| catalogObject.setData_source(toThrift()); |
| } |
| } |