package org.gbif.occurrence.download.hive;
import org.gbif.api.vocabulary.Extension;
import org.gbif.api.vocabulary.OccurrenceIssue;
import org.gbif.dwc.terms.Term;
import com.google.common.collect.ImmutableSet;
/**
* Utilities related to columns in Hive.
*/
public final class HiveColumns {
// prefix for extension columns
static final String EXTENSION_PREFIX = "ext_";
// prefix for extension columns
static final String VERBATIM_COL_PREFIX = "v_";
// reserved hive words
private static final ImmutableSet<String> RESERVED_WORDS = ImmutableSet.of("date", "order", "format", "group");
/**
* Gets the Hive column name of the term parameter.
*/
public static String columnFor(Term term) {
return escapeColumnName(term.simpleName().toLowerCase());
}
/**
* Escapes the name if required.
*/
private static String escapeColumnName(String columnName) {
return RESERVED_WORDS.contains(columnName) ? columnName + '_' : columnName;
}
/**
* Gets the Hive column name of the extension parameter.
*/
public static String columnFor(Extension extension) {
return escapeColumnName(EXTENSION_PREFIX + extension.name().toLowerCase());
}
/**
* Gets the Hive column name of the occurrence issue parameter.
*/
public static String columnFor(OccurrenceIssue issue) {
return escapeColumnName(issue.name().toLowerCase());
}
private HiveColumns() {
// empty constructor
}
}