blob: 9636f6d22a345279f6cc314d5dbf43d931663243 [file] [log] [blame]
/**
* 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)
;
}
}
}