package org.gbif.occurrence.hive.udf; import org.gbif.api.vocabulary.BasisOfRecord; import org.gbif.common.parsers.BasisOfRecordParser; import org.gbif.common.parsers.core.ParseResult; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; import org.apache.hadoop.io.Text; /** * Parses raw basis of record into a textual version. */ @Description( name = "parseBoR", value = "_FUNC_(bor)") public class BasisOfRecordParseUDF extends UDF { private static final BasisOfRecordParser BOR_PARSER = BasisOfRecordParser.getInstance(); private static final Text BOR = new Text(); public Text evaluate(Text basisOfRecord) { BOR.set(BasisOfRecord.UNKNOWN.toString()); if (basisOfRecord != null) { ParseResult<BasisOfRecord> parsed = BOR_PARSER.parse(basisOfRecord.toString()); if (parsed.isSuccessful()) { BOR.set(parsed.getPayload().toString()); } } return BOR; } }