| /** |
| * 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.hcatalog.api; |
| |
| import java.util.Map; |
| |
| import org.apache.hadoop.hive.metastore.api.Database; |
| import org.apache.hcatalog.common.HCatException; |
| |
| /** |
| * The Class HCatCreateDBDesc for defining database attributes. |
| */ |
| public class HCatCreateDBDesc { |
| |
| private String dbName; |
| private String locationUri; |
| private String comment; |
| private Map<String, String> dbProperties; |
| private boolean ifNotExits = false; |
| |
| /** |
| * Gets the database properties. |
| * |
| * @return the database properties |
| */ |
| public Map<String, String> getDatabaseProperties() { |
| return this.dbProperties; |
| } |
| |
| /** |
| * Gets the if not exists. |
| * |
| * @return the if not exists |
| */ |
| public boolean getIfNotExists() { |
| return this.ifNotExits; |
| } |
| |
| /** |
| * Gets the comments. |
| * |
| * @return the comments |
| */ |
| public String getComments() { |
| return this.comment; |
| } |
| |
| /** |
| * Gets the location. |
| * |
| * @return the location |
| */ |
| public String getLocation() { |
| return this.locationUri; |
| } |
| |
| /** |
| * Gets the database name. |
| * |
| * @return the database name |
| */ |
| public String getDatabaseName() { |
| return this.dbName; |
| } |
| |
| private HCatCreateDBDesc(String dbName) { |
| this.dbName = dbName; |
| } |
| |
| @Override |
| public String toString() { |
| return "HCatCreateDBDesc [" |
| + (dbName != null ? "dbName=" + dbName + ", " : "dbName=null") |
| + (locationUri != null ? "location=" + locationUri + ", " |
| : "location=null") |
| + (comment != null ? "comment=" + comment + ", " : "comment=null") |
| + (dbProperties != null ? "dbProperties=" + dbProperties + ", " |
| : "dbProperties=null") + "ifNotExits=" + ifNotExits + "]"; |
| } |
| |
| /** |
| * Creates the builder for defining attributes. |
| * |
| * @param dbName the db name |
| * @return the builder |
| */ |
| public static Builder create(String dbName) { |
| return new Builder(dbName); |
| } |
| |
| Database toHiveDb() { |
| Database hiveDB = new Database(); |
| hiveDB.setDescription(this.comment); |
| hiveDB.setLocationUri(this.locationUri); |
| hiveDB.setName(this.dbName); |
| hiveDB.setParameters(this.dbProperties); |
| return hiveDB; |
| } |
| |
| public static class Builder { |
| |
| private String innerLoc; |
| private String innerComment; |
| private Map<String, String> innerDBProps; |
| private String dbName; |
| private boolean ifNotExists = false; |
| |
| private Builder(String dbName) { |
| this.dbName = dbName; |
| } |
| |
| /** |
| * Location. |
| * |
| * @param value the location of the database. |
| * @return the builder |
| */ |
| public Builder location(String value) { |
| this.innerLoc = value; |
| return this; |
| } |
| |
| /** |
| * Comment. |
| * |
| * @param value comments. |
| * @return the builder |
| */ |
| public Builder comment(String value) { |
| this.innerComment = value; |
| return this; |
| } |
| |
| /** |
| * If not exists. |
| * @param ifNotExists If set to true, hive will not throw exception, if a |
| * database with the same name already exists. |
| * @return the builder |
| */ |
| public Builder ifNotExists(boolean ifNotExists) { |
| this.ifNotExists = ifNotExists; |
| return this; |
| } |
| |
| /** |
| * Database properties. |
| * |
| * @param dbProps the database properties |
| * @return the builder |
| */ |
| public Builder databaseProperties(Map<String, String> dbProps) { |
| this.innerDBProps = dbProps; |
| return this; |
| } |
| |
| |
| /** |
| * Builds the create database descriptor. |
| * |
| * @return An instance of HCatCreateDBDesc |
| * @throws HCatException |
| */ |
| public HCatCreateDBDesc build() throws HCatException { |
| if (this.dbName == null) { |
| throw new HCatException("Database name cannot be null."); |
| } |
| HCatCreateDBDesc desc = new HCatCreateDBDesc(this.dbName); |
| desc.comment = this.innerComment; |
| desc.locationUri = this.innerLoc; |
| desc.dbProperties = this.innerDBProps; |
| desc.ifNotExits = this.ifNotExists; |
| return desc; |
| |
| } |
| |
| } |
| |
| } |