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) { public static Result getDatasetColumnsByID(int id) {
List<DatasetColumn> datasetColumnList = DatasetsDAO.getDatasetColumnsByID(id);
ObjectNode result = Json.newObject(); ObjectNode result = Json.newObject();
if (datasetColumnList != null && datasetColumnList.size() > 0) {
result.put("status", "ok"); String urn = DatasetsDAO.getDatasetUrnById(id);
result.set("columns", Json.toJson(datasetColumnList)); 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); return ok(result);
} }
// try to access dataset fields from Metadata Store schemaMetadata first
SchemaFieldArray datasetFields = null; SchemaFieldArray datasetFields = null;
if (datasetColumnList == null || datasetColumnList.size() == 0) { try {
String urn = DatasetsDAO.getDatasetUrnById(id); datasetFields = MetadataStoreDao.getLatestSchemaByWhUrn(urn).getFields();
if (urn != null && urn.length() > 6) { } catch (Exception e) {
try { Logger.debug("Can't find schema for URN: " + urn + ", Exception: " + e.getMessage());
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.");
}
} }
List<DatasetColumn> datasetColumnList;
if (datasetFields != null && datasetFields.size() > 0) { if (datasetFields != null && datasetFields.size() > 0) {
datasetColumnList = MetadataStoreDao.datasetColumnsMapper(datasetFields); 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.put("status", "ok");
result.set("columns", Json.toJson(datasetColumnList)); result.set("columns", Json.toJson(datasetColumnList));
} else { } else {