org.kitesdk.data.hbase.impl.EntitySchema Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kite-data-hbase Show documentation
Show all versions of kite-data-hbase Show documentation
The Kite Data HBase module provides integration with HBase.
/**
* Copyright 2013 Cloudera Inc.
*
* 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 org.kitesdk.data.hbase.impl;
import org.kitesdk.data.ColumnMapping;
/**
* An EntitySchema is the parsed schema that contains the properties of an HBase
* Common entity schema.
*/
public class EntitySchema {
private final ColumnMapping mapping;
private final String rawSchema;
private final String name;
/**
* Constructs the EntitySchema
*
* @param name
* The name of the entity schema
* @param rawSchema
* The raw schema type that underlies the EntitySchema implementation
* @param columnMapping
* The list of FieldMappings that specify how each field maps to an
* HBase row
*/
public EntitySchema(String name, String rawSchema, ColumnMapping columnMapping) {
this.name = name;
this.rawSchema = rawSchema;
this.mapping = columnMapping;
}
/**
* Get the name of this EntitySchema
*
* @return The name
*/
public String getName() {
return name;
}
public ColumnMapping getColumnMappingDescriptor() {
return mapping;
}
/**
* Get the raw schema that was parsed to create this schema.
*
* @return The raw scheam.
*/
public String getRawSchema() {
return rawSchema;
}
/**
* Method meant to determine if two EntitySchemas are compatible with each
* other for schema migration purposes. Classes that inherit EntitySchema
* should override this implementation, since this implemetnation isn't able
* to make that determination.
*
* TODO: Figure out a base set of properties that all entity schema
* implementations should share in their implementation of determining
* compatibility and execute that here.
*
* @param entitySchema
* The other EntitySchema to determine compatible with
* @return
*/
public boolean compatible(EntitySchema entitySchema) {
// throw an exception if anyone calls this directly, as this should be
// overridden in derived classes.
throw new UnsupportedOperationException(
"EntityScheam class can't determine if two entity schemas are compatible.");
}
}