| /** |
| * 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.templeton; |
| |
| import java.util.List; |
| import java.util.Map; |
| import javax.xml.bind.annotation.XmlRootElement; |
| |
| /** |
| * A description of the table to create. |
| */ |
| @XmlRootElement |
| public class TableDesc extends GroupPermissionsDesc { |
| public boolean external = false; |
| public boolean ifNotExists = false; |
| public String table; |
| public String comment; |
| public List<ColumnDesc> columns; |
| public List<ColumnDesc> partitionedBy; |
| public ClusteredByDesc clusteredBy; |
| public StorageFormatDesc format; |
| public String location; |
| public Map<String, String> tableProperties; |
| |
| /** |
| * Create a new TableDesc |
| */ |
| public TableDesc() { |
| } |
| |
| public String toString() { |
| return String.format("TableDesc(table=%s, columns=%s)", table, columns); |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) |
| return true; |
| if (!(o instanceof TableDesc)) |
| return false; |
| TableDesc that = (TableDesc) o; |
| return xequals(this.external, that.external) |
| && xequals(this.ifNotExists, that.ifNotExists) |
| && xequals(this.table, that.table) |
| && xequals(this.comment, that.comment) |
| && xequals(this.columns, that.columns) |
| && xequals(this.partitionedBy, that.partitionedBy) |
| && xequals(this.clusteredBy, that.clusteredBy) |
| && xequals(this.format, that.format) |
| && xequals(this.location, that.location) |
| && xequals(this.tableProperties, that.tableProperties) |
| && super.equals(that) |
| ; |
| } |
| |
| /** |
| * How to cluster the table. |
| */ |
| @XmlRootElement |
| public static class ClusteredByDesc { |
| public List<String> columnNames; |
| public List<ClusterSortOrderDesc> sortedBy; |
| public int numberOfBuckets; |
| |
| public ClusteredByDesc() { |
| } |
| |
| public String toString() { |
| String fmt |
| = "ClusteredByDesc(columnNames=%s, sortedBy=%s, numberOfBuckets=%s)"; |
| return String.format(fmt, columnNames, sortedBy, numberOfBuckets); |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) |
| return true; |
| if (!(o instanceof ClusteredByDesc)) |
| return false; |
| ClusteredByDesc that = (ClusteredByDesc) o; |
| return xequals(this.columnNames, that.columnNames) |
| && xequals(this.sortedBy, that.sortedBy) |
| && xequals(this.numberOfBuckets, that.numberOfBuckets) |
| ; |
| } |
| } |
| |
| /** |
| * The clustered sort order. |
| */ |
| @XmlRootElement |
| public static class ClusterSortOrderDesc { |
| public String columnName; |
| public SortDirectionDesc order; |
| |
| public ClusterSortOrderDesc() { |
| } |
| |
| public ClusterSortOrderDesc(String columnName, SortDirectionDesc order) { |
| this.columnName = columnName; |
| this.order = order; |
| } |
| |
| public String toString() { |
| return String |
| .format("ClusterSortOrderDesc(columnName=%s, order=%s)", |
| columnName, order); |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) |
| return true; |
| if (!(o instanceof ClusterSortOrderDesc)) |
| return false; |
| ClusterSortOrderDesc that = (ClusterSortOrderDesc) o; |
| return xequals(this.columnName, that.columnName) |
| && xequals(this.order, that.order) |
| ; |
| } |
| } |
| |
| /** |
| * Ther ASC or DESC sort order. |
| */ |
| @XmlRootElement |
| public static enum SortDirectionDesc { |
| ASC, DESC |
| } |
| |
| /** |
| * The storage format. |
| */ |
| @XmlRootElement |
| public static class StorageFormatDesc { |
| public RowFormatDesc rowFormat; |
| public String storedAs; |
| public StoredByDesc storedBy; |
| |
| public StorageFormatDesc() { |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) |
| return true; |
| if (!(o instanceof StorageFormatDesc)) |
| return false; |
| StorageFormatDesc that = (StorageFormatDesc) o; |
| return xequals(this.rowFormat, that.rowFormat) |
| && xequals(this.storedAs, that.storedAs) |
| && xequals(this.storedBy, that.storedBy) |
| ; |
| } |
| } |
| |
| /** |
| * The Row Format. |
| */ |
| @XmlRootElement |
| public static class RowFormatDesc { |
| public String fieldsTerminatedBy; |
| public String collectionItemsTerminatedBy; |
| public String mapKeysTerminatedBy; |
| public String linesTerminatedBy; |
| public SerdeDesc serde; |
| |
| public RowFormatDesc() { |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) |
| return true; |
| if (!(o instanceof RowFormatDesc)) |
| return false; |
| RowFormatDesc that = (RowFormatDesc) o; |
| return xequals(this.fieldsTerminatedBy, that.fieldsTerminatedBy) |
| && xequals(this.collectionItemsTerminatedBy, |
| that.collectionItemsTerminatedBy) |
| && xequals(this.mapKeysTerminatedBy, that.mapKeysTerminatedBy) |
| && xequals(this.linesTerminatedBy, that.linesTerminatedBy) |
| && xequals(this.serde, that.serde) |
| ; |
| } |
| } |
| |
| /** |
| * The SERDE Row Format. |
| */ |
| @XmlRootElement |
| public static class SerdeDesc { |
| public String name; |
| public Map<String, String> properties; |
| |
| public SerdeDesc() { |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) |
| return true; |
| if (!(o instanceof SerdeDesc)) |
| return false; |
| SerdeDesc that = (SerdeDesc) o; |
| return xequals(this.name, that.name) |
| && xequals(this.properties, that.properties) |
| ; |
| } |
| } |
| |
| /** |
| * How to store the table. |
| */ |
| @XmlRootElement |
| public static class StoredByDesc { |
| public String className; |
| public Map<String, String> properties; |
| |
| public StoredByDesc() { |
| } |
| |
| public boolean equals(Object o) { |
| if (this == o) |
| return true; |
| if (!(o instanceof StoredByDesc)) |
| return false; |
| StoredByDesc that = (StoredByDesc) o; |
| return xequals(this.className, that.className) |
| && xequals(this.properties, that.properties) |
| ; |
| } |
| } |
| |
| } |