Modify frontend API get columns to fetch from metadata store first (#368)

Try metadata store schemaMetadata first, if no fields then query WhereHows DB for dataset columns.
This commit is contained in:
Yi (Alan) Wang 2017-03-27 21:08:28 -07:00 committed by Mars Lan
parent 488e7bb067
commit f5a8b054b2

View File

@ -148,31 +148,32 @@ public class Dataset extends Controller
}
public static Result getDatasetColumnsByID(int id) {
List<DatasetColumn> datasetColumnList = DatasetsDAO.getDatasetColumnsByID(id);
ObjectNode result = Json.newObject();
if (datasetColumnList != null && datasetColumnList.size() > 0) {
result.put("status", "ok");
result.set("columns", Json.toJson(datasetColumnList));
String urn = DatasetsDAO.getDatasetUrnById(id);
if (urn == null || urn.length() < 6) {
Logger.debug("Dataset id " + id + " not found.");
result.put("status", "error");
result.put("message", "Dataset id not found");
return ok(result);
}
// try to access dataset fields from Metadata Store schemaMetadata first
SchemaFieldArray datasetFields = null;
if (datasetColumnList == null || datasetColumnList.size() == 0) {
String urn = DatasetsDAO.getDatasetUrnById(id);
if (urn != null && urn.length() > 6) {
try {
datasetFields = MetadataStoreDao.getLatestSchemaByWhUrn(urn).getFields();
} catch (Exception e) {
Logger.debug("Can't find schema for URN: " + urn + ", Exception: " + e.getMessage());
}
} else {
Logger.debug("Dataset id " + id + " not found.");
}
try {
datasetFields = MetadataStoreDao.getLatestSchemaByWhUrn(urn).getFields();
} catch (Exception e) {
Logger.debug("Can't find schema for URN: " + urn + ", Exception: " + e.getMessage());
}
List<DatasetColumn> datasetColumnList;
if (datasetFields != null && datasetFields.size() > 0) {
datasetColumnList = MetadataStoreDao.datasetColumnsMapper(datasetFields);
} else { // get fields from WH db if nothing in Metadata store
datasetColumnList = DatasetsDAO.getDatasetColumnsByID(id);
}
if (datasetColumnList != null && datasetColumnList.size() > 0) {
result.put("status", "ok");
result.set("columns", Json.toJson(datasetColumnList));
} else {