diff --git a/wherehows-frontend/app/controllers/Application.java b/wherehows-frontend/app/controllers/Application.java index 5f239b4c5b..d41fc1280d 100644 --- a/wherehows-frontend/app/controllers/Application.java +++ b/wherehows-frontend/app/controllers/Application.java @@ -18,15 +18,12 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import dao.FlowsDAO; import dao.MetricsDAO; import dao.UserDAO; - -import java.io.IOException; -import java.io.InputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; - +import java.io.IOException; +import java.io.InputStream; import java.lang.reflect.Constructor; - import javax.persistence.EntityManagerFactory; import org.apache.commons.lang3.StringUtils; import org.hibernate.hikaricp.internal.HikariCPConnectionProvider; diff --git a/wherehows-frontend/app/controllers/Secured.java b/wherehows-frontend/app/controllers/Secured.java index 803ed98c5d..38c326cf04 100644 --- a/wherehows-frontend/app/controllers/Secured.java +++ b/wherehows-frontend/app/controllers/Secured.java @@ -13,12 +13,12 @@ */ package controllers; -import play.mvc.Security; import play.mvc.Http.Context; import play.mvc.Result; +import play.mvc.Security; -public class Secured extends Security.Authenticator -{ + +public class Secured extends Security.Authenticator { @Override public String getUsername(Context ctx) { return ctx.session().get("user"); diff --git a/wherehows-frontend/app/controllers/api/v1/AdvSearch.java b/wherehows-frontend/app/controllers/api/v1/AdvSearch.java index 6451bd2f22..47c8ef0363 100644 --- a/wherehows-frontend/app/controllers/api/v1/AdvSearch.java +++ b/wherehows-frontend/app/controllers/api/v1/AdvSearch.java @@ -24,198 +24,158 @@ import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -public class AdvSearch extends Controller -{ - public static Result getDatasetSources() - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("sources", Json.toJson(AdvSearchDAO.getDatasetSources())); +public class AdvSearch extends Controller { + public static Result getDatasetSources() { + ObjectNode result = Json.newObject(); - return ok(result); + result.put("status", "ok"); + result.set("sources", Json.toJson(AdvSearchDAO.getDatasetSources())); + + return ok(result); + } + + public static Result getDatasetScopes() { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("scopes", Json.toJson(AdvSearchDAO.getDatasetScopes())); + + return ok(result); + } + + public static Result getDatasetTableNames() { + ObjectNode result = Json.newObject(); + String scopes = request().getQueryString("scopes"); + result.put("status", "ok"); + result.set("tables", Json.toJson(AdvSearchDAO.getTableNames(scopes))); + + return ok(result); + } + + public static Result getDatasetFields() { + ObjectNode result = Json.newObject(); + String tables = request().getQueryString("tables"); + result.put("status", "ok"); + result.set("fields", Json.toJson(AdvSearchDAO.getFields(tables))); + + return ok(result); + } + + public static Result getFlowApplicationCodes() { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("appcodes", Json.toJson(AdvSearchDAO.getFlowApplicationCodes())); + + return ok(result); + } + + public static Result getFlowNames() { + ObjectNode result = Json.newObject(); + String apps = request().getQueryString("apps"); + result.put("status", "ok"); + result.set("flowNames", Json.toJson(AdvSearchDAO.getFlowNames(apps))); + + return ok(result); + } + + public static Result getJobNames() { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("jobNames", Json.toJson(AdvSearchDAO.getFlowJobNames())); + + return ok(result); + } + + public static Result getDashboardNames() { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("dashboardNames", Json.toJson(AdvSearchDAO.getMetricDashboardNames())); + + return ok(result); + } + + public static Result getMetricGroups() { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("metricGroups", Json.toJson(AdvSearchDAO.getMetricGroups())); + + return ok(result); + } + + public static Result getMetricCategories() { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("metricCategories", Json.toJson(AdvSearchDAO.getMetricCategories())); + + return ok(result); + } + + public static Result getMetricNames() { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("metricNames", Json.toJson(AdvSearchDAO.getMetricNames())); + + return ok(result); + } + + public static Result search() { + ObjectNode result = Json.newObject(); + String searchOptStr = request().getQueryString("searchOpts"); + JsonNode searchOpt = Json.parse(searchOptStr); + int page = 1; + int size = 10; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("AdvSearch Controller search wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getDatasetScopes() - { - ObjectNode result = Json.newObject(); - - result.put("status", "ok"); - result.set("scopes", Json.toJson(AdvSearchDAO.getDatasetScopes())); - - return ok(result); + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("AdvSearch Controller search wrong page parameter. Error message: " + e.getMessage()); + size = 10; + } } + result.put("status", "ok"); + String searchEngine = Play.application().configuration().getString(SearchDAO.WHEREHOWS_SEARCH_ENGINE_KEY); - public static Result getDatasetTableNames() - { - ObjectNode result = Json.newObject(); - String scopes = request().getQueryString("scopes"); - result.put("status", "ok"); - result.set("tables", Json.toJson(AdvSearchDAO.getTableNames(scopes))); - - return ok(result); - } - - public static Result getDatasetFields() - { - ObjectNode result = Json.newObject(); - String tables = request().getQueryString("tables"); - result.put("status", "ok"); - result.set("fields", Json.toJson(AdvSearchDAO.getFields(tables))); - - return ok(result); - } - - public static Result getFlowApplicationCodes() - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("appcodes", Json.toJson(AdvSearchDAO.getFlowApplicationCodes())); - - return ok(result); - } - - public static Result getFlowNames() - { - ObjectNode result = Json.newObject(); - String apps = request().getQueryString("apps"); - result.put("status", "ok"); - result.set("flowNames", Json.toJson(AdvSearchDAO.getFlowNames(apps))); - - return ok(result); - } - - public static Result getJobNames() - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("jobNames", Json.toJson(AdvSearchDAO.getFlowJobNames())); - - return ok(result); - } - - public static Result getDashboardNames() - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("dashboardNames", Json.toJson(AdvSearchDAO.getMetricDashboardNames())); - - return ok(result); - } - - public static Result getMetricGroups() - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("metricGroups", Json.toJson(AdvSearchDAO.getMetricGroups())); - - return ok(result); - } - - public static Result getMetricCategories() - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("metricCategories", Json.toJson(AdvSearchDAO.getMetricCategories())); - - return ok(result); - } - - public static Result getMetricNames() - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("metricNames", Json.toJson(AdvSearchDAO.getMetricNames())); - - return ok(result); - } - - public static Result search() - { - ObjectNode result = Json.newObject(); - String searchOptStr = request().getQueryString("searchOpts"); - JsonNode searchOpt = Json.parse(searchOptStr); - int page = 1; - int size = 10; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; + if (searchOpt != null && searchOpt.has("category")) { + String category = searchOpt.get("category").asText(); + if (category.equalsIgnoreCase("flow")) { + if (StringUtils.isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", Json.toJson(AdvSearchDAO.elasticSearchFlowJobs(searchOpt, page, size))); + } else { + result.set("result", Json.toJson(AdvSearchDAO.searchFlows(searchOpt, page, size))); } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("AdvSearch Controller search wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("AdvSearch Controller search wrong page parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - result.put("status", "ok"); - String searchEngine = Play.application().configuration().getString(SearchDAO.WHEREHOWS_SEARCH_ENGINE_KEY); - - if (searchOpt != null && searchOpt.has("category")) - { - String category = searchOpt.get("category").asText(); - if(category.equalsIgnoreCase("flow")) - { - if(StringUtils.isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", Json.toJson(AdvSearchDAO.elasticSearchFlowJobs(searchOpt, page, size))); - } - else - { - result.set("result", Json.toJson(AdvSearchDAO.searchFlows(searchOpt, page, size))); - } - return ok(result); - } - else if(category.equalsIgnoreCase("metric")) - { - if(StringUtils.isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", Json.toJson(AdvSearchDAO.elasticSearchMetric(searchOpt, page, size))); - } - else - { - result.set("result", Json.toJson(AdvSearchDAO.searchMetrics(searchOpt, page, size))); - } - return ok(result); - } - } - - if(StringUtils.isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", Json.toJson(AdvSearchDAO.elasticSearch(searchOpt, page, size))); - } - else - { - result.set("result", Json.toJson(AdvSearchDAO.search(searchOpt, page, size))); - } - return ok(result); + } else if (category.equalsIgnoreCase("metric")) { + if (StringUtils.isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", Json.toJson(AdvSearchDAO.elasticSearchMetric(searchOpt, page, size))); + } else { + result.set("result", Json.toJson(AdvSearchDAO.searchMetrics(searchOpt, page, size))); + } + return ok(result); + } } + if (StringUtils.isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", Json.toJson(AdvSearchDAO.elasticSearch(searchOpt, page, size))); + } else { + result.set("result", Json.toJson(AdvSearchDAO.search(searchOpt, page, size))); + } + + return ok(result); + } } diff --git a/wherehows-frontend/app/controllers/api/v1/Dashboard.java b/wherehows-frontend/app/controllers/api/v1/Dashboard.java index 0751d55ec3..3ce70d76f3 100644 --- a/wherehows-frontend/app/controllers/api/v1/Dashboard.java +++ b/wherehows-frontend/app/controllers/api/v1/Dashboard.java @@ -22,80 +22,80 @@ import play.mvc.Result; public class Dashboard extends Controller { - public static Result getOwnershipDatasetsPercentage(String managerId) { - String platform = request().getQueryString("platform"); - return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.Ownership)); - } - - public static Result getConfidentialDatasetsPercentage(String managerId) { - String platform = request().getQueryString("platform"); - return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.SecuritySpec)); - } - - public static Result getDescriptionDatasetsPercentage(String managerId) { - String platform = request().getQueryString("platform"); - return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.Description)); - } - - public static Result getIdpcComplianceDatasetsPercentage(String managerId) { - String platform = request().getQueryString("platform"); - return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.PrivacyCompliance)); - } - - public static Result getPagedOwnershipDatasets(String managerId) { - String platform = request().getQueryString("platform"); - int option = parseInt(request().getQueryString("option"), 1); - int page = parseInt(request().getQueryString("page"), 1); - int size = parseInt(request().getQueryString("size"), 10); - - return ok(DashboardDAO.getPagedOwnershipDatasetsByManagerId(managerId, platform, option, page, size)); - } - - public static Result getPagedConfidentialDatasets(String managerId) { - String platform = request().getQueryString("platform"); - int page = parseInt(request().getQueryString("page"), 1); - int size = parseInt(request().getQueryString("size"), 10); - - return ok(DashboardDAO.getPagedConfidentialDatasetsByManagerId(managerId, platform, page, size)); - } - - public static Result getPagedDescriptionDatasets(String managerId) { - String platform = request().getQueryString("platform"); - int option = parseInt(request().getQueryString("option"), 1); - int page = parseInt(request().getQueryString("page"), 1); - int size = parseInt(request().getQueryString("size"), 10); - - return ok(DashboardDAO.getPagedDescriptionDatasetsByManagerId(managerId, platform, option, page, size)); - } - - public static Result getPagedComplianceDatasets(String managerId) { - String platform = request().getQueryString("platform"); - String option = request().getQueryString("option"); - int page = parseInt(request().getQueryString("page"), 1); - int size = parseInt(request().getQueryString("size"), 10); - - return ok(DashboardDAO.getPagedComplianceDatasetsByManagerId(managerId, platform, option, page, size)); - } - - public static Result getOwnershipBarData(String managerId) { - return ok(DashboardDAO.getOwnershipBarChartData(managerId)); - } - - public static Result getDescriptionBarData(String managerId) { - int option = parseInt(request().getQueryString("option"), 1); - - return ok(DashboardDAO.getDescriptionBarChartData(managerId, option)); - } - - private static int parseInt(String queryString, int defaultValue) { - if (!StringUtils.isBlank(queryString)) { - try { - return Integer.parseInt(queryString); - } catch (NumberFormatException e) { - Logger.error("Dashboard Controller query string wrong parameter: " + queryString + ". Error message: " - + e.getMessage()); - } - } - return defaultValue; + public static Result getOwnershipDatasetsPercentage(String managerId) { + String platform = request().getQueryString("platform"); + return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.Ownership)); + } + + public static Result getConfidentialDatasetsPercentage(String managerId) { + String platform = request().getQueryString("platform"); + return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.SecuritySpec)); + } + + public static Result getDescriptionDatasetsPercentage(String managerId) { + String platform = request().getQueryString("platform"); + return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.Description)); + } + + public static Result getIdpcComplianceDatasetsPercentage(String managerId) { + String platform = request().getQueryString("platform"); + return ok(DashboardDAO.getDashboardStatByUserId(managerId, platform, DashboardDAO.Category.PrivacyCompliance)); + } + + public static Result getPagedOwnershipDatasets(String managerId) { + String platform = request().getQueryString("platform"); + int option = parseInt(request().getQueryString("option"), 1); + int page = parseInt(request().getQueryString("page"), 1); + int size = parseInt(request().getQueryString("size"), 10); + + return ok(DashboardDAO.getPagedOwnershipDatasetsByManagerId(managerId, platform, option, page, size)); + } + + public static Result getPagedConfidentialDatasets(String managerId) { + String platform = request().getQueryString("platform"); + int page = parseInt(request().getQueryString("page"), 1); + int size = parseInt(request().getQueryString("size"), 10); + + return ok(DashboardDAO.getPagedConfidentialDatasetsByManagerId(managerId, platform, page, size)); + } + + public static Result getPagedDescriptionDatasets(String managerId) { + String platform = request().getQueryString("platform"); + int option = parseInt(request().getQueryString("option"), 1); + int page = parseInt(request().getQueryString("page"), 1); + int size = parseInt(request().getQueryString("size"), 10); + + return ok(DashboardDAO.getPagedDescriptionDatasetsByManagerId(managerId, platform, option, page, size)); + } + + public static Result getPagedComplianceDatasets(String managerId) { + String platform = request().getQueryString("platform"); + String option = request().getQueryString("option"); + int page = parseInt(request().getQueryString("page"), 1); + int size = parseInt(request().getQueryString("size"), 10); + + return ok(DashboardDAO.getPagedComplianceDatasetsByManagerId(managerId, platform, option, page, size)); + } + + public static Result getOwnershipBarData(String managerId) { + return ok(DashboardDAO.getOwnershipBarChartData(managerId)); + } + + public static Result getDescriptionBarData(String managerId) { + int option = parseInt(request().getQueryString("option"), 1); + + return ok(DashboardDAO.getDescriptionBarChartData(managerId, option)); + } + + private static int parseInt(String queryString, int defaultValue) { + if (!StringUtils.isBlank(queryString)) { + try { + return Integer.parseInt(queryString); + } catch (NumberFormatException e) { + Logger.error( + "Dashboard Controller query string wrong parameter: " + queryString + ". Error message: " + e.getMessage()); + } } + return defaultValue; + } } diff --git a/wherehows-frontend/app/controllers/api/v1/Dataset.java b/wherehows-frontend/app/controllers/api/v1/Dataset.java index 95f2f4bcfe..b1736a95cc 100644 --- a/wherehows-frontend/app/controllers/api/v1/Dataset.java +++ b/wherehows-frontend/app/controllers/api/v1/Dataset.java @@ -26,941 +26,774 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; -import wherehows.dao.DatasetClassificationDao; -import wherehows.models.DatasetClassification; -import wherehows.models.DatasetCompliance; -import wherehows.models.DatasetDependency; -import wherehows.models.ImpactDataset; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import play.Logger; import play.libs.F.Promise; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; +import wherehows.dao.DatasetClassificationDao; import wherehows.dao.DatasetsDao; +import wherehows.models.DatasetClassification; import wherehows.models.DatasetColumn; +import wherehows.models.DatasetCompliance; +import wherehows.models.DatasetDependency; +import wherehows.models.ImpactDataset; -public class Dataset extends Controller -{ - private static final JdbcTemplate jdbcTemplate = AbstractMySQLOpenSourceDAO.getJdbcTemplate(); +public class Dataset extends Controller { + private static final JdbcTemplate JDBC_TEMPLATE = AbstractMySQLOpenSourceDAO.getJdbcTemplate(); - private static final NamedParameterJdbcTemplate namedJdbcTemplate = - AbstractMySQLOpenSourceDAO.getNamedParameterJdbcTemplate(); + private static final NamedParameterJdbcTemplate NAMED_JDBC_TEMPLATE = + AbstractMySQLOpenSourceDAO.getNamedParameterJdbcTemplate(); - private static final DatasetsDao datasetsDao = Application.DAO_FACTORY.getDatasetsDao(); + private static final DatasetsDao DATASETS_DAO = Application.DAO_FACTORY.getDatasetsDao(); - private static final DatasetClassificationDao CLASSIFICATION_DAO = - Application.DAO_FACTORY.getDatasetClassificationDao(); + private static final DatasetClassificationDao CLASSIFICATION_DAO = + Application.DAO_FACTORY.getDatasetClassificationDao(); - public static Result getDatasetOwnerTypes() - { - ObjectNode result = Json.newObject(); + public static Result getDatasetOwnerTypes() { + ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("ownerTypes", Json.toJson(DatasetsDAO.getDatasetOwnerTypes())); - return ok(result); + result.put("status", "ok"); + result.set("ownerTypes", Json.toJson(DatasetsDAO.getDatasetOwnerTypes())); + return ok(result); + } + + public static Result getPagedDatasets() { + ObjectNode result = Json.newObject(); + String urn = request().getQueryString("urn"); + + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("Dataset Controller getPagedDatasets wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getPagedDatasets() - { - ObjectNode result = Json.newObject(); - String urn = request().getQueryString("urn"); - - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller getPagedDatasets wrong page parameter. Error message: " + e.getMessage()); - page = 1; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller getPagedDatasets wrong size parameter. Error message: " + e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - String username = session("user"); - result.set("data", DatasetsDAO.getPagedDatasets(urn, page, size, username)); - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("Dataset Controller getPagedDatasets wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result getDatasetByID(int id) - { - String username = session("user"); - wherehows.models.Dataset dataset = DatasetsDAO.getDatasetByID(id, username); + result.put("status", "ok"); + String username = session("user"); + result.set("data", DatasetsDAO.getPagedDatasets(urn, page, size, username)); + return ok(result); + } - ObjectNode result = Json.newObject(); + public static Result getDatasetByID(int id) { + String username = session("user"); + wherehows.models.Dataset dataset = DatasetsDAO.getDatasetByID(id, username); - if (dataset != null) - { - result.put("status", "ok"); - result.set("dataset", Json.toJson(dataset)); - } - else - { - result.put("status", "error"); - result.put("message", "record not found"); - } + ObjectNode result = Json.newObject(); - return ok(result); + if (dataset != null) { + result.put("status", "ok"); + result.set("dataset", Json.toJson(dataset)); + } else { + result.put("status", "error"); + result.put("message", "record not found"); } - public static Result getDatasetColumnByID(int datasetId, int columnId) - { - List datasetColumnList = datasetsDao.getDatasetColumnByID(jdbcTemplate, datasetId, columnId); + return ok(result); + } - ObjectNode result = Json.newObject(); + public static Result getDatasetColumnByID(int datasetId, int columnId) { + List datasetColumnList = DATASETS_DAO.getDatasetColumnByID(JDBC_TEMPLATE, datasetId, columnId); - if (datasetColumnList != null && datasetColumnList.size() > 0) - { - result.put("status", "ok"); - result.set("columns", Json.toJson(datasetColumnList)); - } - else - { - result.put("status", "error"); - result.put("message", "record not found"); - } + ObjectNode result = Json.newObject(); - return ok(result); + if (datasetColumnList != null && datasetColumnList.size() > 0) { + result.put("status", "ok"); + result.set("columns", Json.toJson(datasetColumnList)); + } else { + result.put("status", "error"); + result.put("message", "record not found"); } - public static Result getDatasetColumnsByID(int id) { - ObjectNode result = Json.newObject(); + return ok(result); + } - List columns = datasetsDao.getDatasetColumnsByID(jdbcTemplate, id); - if (columns != null && columns.size() > 0) { - result.put("status", "ok"); - result.set("columns", Json.toJson(columns)); - } else { - result.put("status", "error"); - result.put("message", "record not found"); - } - return ok(result); + public static Result getDatasetColumnsByID(int id) { + ObjectNode result = Json.newObject(); + + List columns = DATASETS_DAO.getDatasetColumnsByID(JDBC_TEMPLATE, id); + if (columns != null && columns.size() > 0) { + result.put("status", "ok"); + result.set("columns", Json.toJson(columns)); + } else { + result.put("status", "error"); + result.put("message", "record not found"); + } + return ok(result); + } + + public static Result getDatasetPropertiesByID(int id) { + JsonNode properties = DatasetsDAO.getDatasetPropertiesByID(id); + + ObjectNode result = Json.newObject(); + + if (properties != null) { + result.put("status", "ok"); + result.set("properties", properties); + } else { + result.put("status", "error"); + result.put("message", "record not found"); } - public static Result getDatasetPropertiesByID(int id) - { - JsonNode properties = DatasetsDAO.getDatasetPropertiesByID(id); + return ok(result); + } - ObjectNode result = Json.newObject(); + public static Result getDatasetSampleDataByID(int id) { + JsonNode sampleData = DatasetsDAO.getDatasetSampleDataByID(id); - if (properties != null) - { - result.put("status", "ok"); - result.set("properties", properties); - } - else - { - result.put("status", "error"); - result.put("message", "record not found"); - } + ObjectNode result = Json.newObject(); - return ok(result); + if (sampleData != null) { + result.put("status", "ok"); + result.set("sampleData", sampleData); + } else { + result.put("status", "error"); + result.put("message", "record not found"); } - public static Result getDatasetSampleDataByID(int id) - { - JsonNode sampleData = DatasetsDAO.getDatasetSampleDataByID(id); + return ok(result); + } - ObjectNode result = Json.newObject(); + public static Result getDatasetOwnersByID(int id) { + ObjectNode result = Json.newObject(); - if (sampleData != null) - { - result.put("status", "ok"); - result.set("sampleData", sampleData); - } - else - { - result.put("status", "error"); - result.put("message", "record not found"); - } - - return ok(result); + try { + result.set("owners", Json.toJson(DatasetsDAO.getDatasetOwnersByID(id))); + result.put("status", "ok"); + } catch (Exception e) { + result.put("status", "failed"); + result.put("message", "Error: " + e.getMessage()); } - public static Result getDatasetOwnersByID(int id) - { - ObjectNode result = Json.newObject(); + return ok(result); + } - try { - result.set("owners", Json.toJson(DatasetsDAO.getDatasetOwnersByID(id))); - result.put("status", "ok"); - } catch (Exception e) { - result.put("status", "failed"); - result.put("message", "Error: " + e.getMessage()); - } + public static Result getDatasetImpactAnalysisByID(int id) { + List impactDatasetList = DatasetsDAO.getImpactAnalysisByID(id); - return ok(result); + ObjectNode result = Json.newObject(); + + if (impactDatasetList != null) { + result.put("status", "ok"); + result.set("impacts", Json.toJson(impactDatasetList)); + } else { + result.put("status", "error"); + result.put("message", "record not found"); } - public static Result getDatasetImpactAnalysisByID(int id) - { - List impactDatasetList = DatasetsDAO.getImpactAnalysisByID(id); + return ok(result); + } - ObjectNode result = Json.newObject(); + public static Result updateDatasetOwners(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + Map params = request().body().asFormUrlEncoded(); - if (impactDatasetList != null) - { - result.put("status", "ok"); - result.set("impacts", Json.toJson(impactDatasetList)); - } - else - { - result.put("status", "error"); - result.put("message", "record not found"); - } + if (StringUtils.isNotBlank(username)) { + ReturnCode code = DatasetsDAO.updateDatasetOwners(id, params, username); - return ok(result); - } - - public static Result updateDatasetOwners(int id) { - ObjectNode result = Json.newObject(); - String username = session("user"); - Map params = request().body().asFormUrlEncoded(); - - if (StringUtils.isNotBlank(username)) { - ReturnCode code = DatasetsDAO.updateDatasetOwners(id, params, username); - - if (code == ReturnCode.Success) { - result.put("status", "success"); - } else if (code == ReturnCode.RuleViolation) { - result.put("status", "failed"); - result.put("error", "true"); - result.put("msg", "Less than 2 confirmed owners."); - } else { - result.put("status", "failed"); - result.put("error", "true"); - result.put("msg", "Could not update dataset owners."); - } - } else { - result.put("status", "failed"); - result.put("error", "true"); - result.put("msg", "Unauthorized User."); - } - return ok(result); - } - - public static Result favoriteDataset(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - if (StringUtils.isNotBlank(username)) - { - if (DatasetsDAO.favorite(id, username)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - } - } - else - { - result.put("status", "failed"); - } - - return ok(result); - } - - public static Result unfavoriteDataset(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - if (StringUtils.isNotBlank(username)) - { - if (DatasetsDAO.unfavorite(id, username)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - } - } - else - { - result.put("status", "failed"); - } - - return ok(result); - } - - public static Result getDatasetOwnedBy(String userId) { - ObjectNode result = Json.newObject(); - int page = NumberUtils.toInt(request().getQueryString("page"), 1); - int size = NumberUtils.toInt(request().getQueryString("size"), 10); - - if (StringUtils.isNotBlank(userId)) { - result = DatasetsDAO.getDatasetOwnedBy(userId, page, size); - } else { - result.put("status", "failed, no user"); - } - return ok(result); - } - - public static Result ownDataset(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - if (StringUtils.isNotBlank(username)) - { - result = DatasetsDAO.ownDataset(id, username); - } - else - { - result.put("status", "failed"); - } - - return ok(result); - } - - public static Result unownDataset(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - if (StringUtils.isNotBlank(username)) - { - result = DatasetsDAO.unownDataset(id, username); - } - else - { - result.put("status", "failed"); - } - - return ok(result); - } - - public static Result getFavorites() - { - ObjectNode result = Json.newObject(); - String username = session("user"); - result.put("status", "ok"); - result.set("data", DatasetsDAO.getFavorites(username)); - return ok(result); - } - - public static Result getPagedDatasetComments(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - if (username == null) - { - username = ""; - } - - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller getPagedDatasetComments wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller getPagedDatasetComments wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", DatasetsDAO.getPagedDatasetComments(username, id, page, size)); - return ok(result); - } - - public static Result postDatasetComment(int id) - { - String body = request().body().asText(); - ObjectNode result = Json.newObject(); - String username = session("user"); - Map params = request().body().asFormUrlEncoded(); - - if (StringUtils.isNotBlank(username)) - { - if (DatasetsDAO.postComment(id, params, username)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - result.put("error", "true"); - result.put("msg", "Could not create comment."); - return badRequest(result); - } - } - else - { - result.put("status", "failed"); - result.put("error", "true"); - result.put("msg", "Unauthorized User."); - return badRequest(result); - } - - return ok(result); - } - - public static Result putDatasetComment(int id, int commentId) - { - String body = request().body().asText(); - ObjectNode result = Json.newObject(); - String username = session("user"); - Map params = request().body().asFormUrlEncoded(); - - if (StringUtils.isNotBlank(username)) - { - if (DatasetsDAO.postComment(id, params, username)) - { - result.put("status", "success"); - return ok(result); - } - else - { - result.put("status", "failed"); - result.put("error", "true"); - result.put("msg", "Could not create comment."); - return badRequest(result); - } - } - else - { - result.put("status", "failed"); - result.put("error", "true"); - result.put("msg", "Unauthorized User"); - return badRequest(result); - } - - } - - public static Result deleteDatasetComment(int id, int commentId) - { - ObjectNode result = Json.newObject(); - if (DatasetsDAO.deleteComment(commentId)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - } - - return ok(result); - } - - public static Result watchDataset(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - Map params = request().body().asFormUrlEncoded(); - if (StringUtils.isNotBlank(username)) - { - String message = DatasetsDAO.watchDataset(id, params, username); - if (StringUtils.isBlank(message)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - result.put("message", message); - } - } - else - { - result.put("status", "failed"); - result.put("message", "User is not authenticated"); - } - - return ok(result); - } - - public static Result getWatchedUrnId() - { - ObjectNode result = Json.newObject(); - String urn = request().getQueryString("urn"); + if (code == ReturnCode.Success) { result.put("status", "success"); - Long id = 0L; + } else if (code == ReturnCode.RuleViolation) { + result.put("status", "failed"); + result.put("error", "true"); + result.put("msg", "Less than 2 confirmed owners."); + } else { + result.put("status", "failed"); + result.put("error", "true"); + result.put("msg", "Could not update dataset owners."); + } + } else { + result.put("status", "failed"); + result.put("error", "true"); + result.put("msg", "Unauthorized User."); + } + return ok(result); + } - if (StringUtils.isNotBlank(urn)) - { - String username = session("user"); - if (StringUtils.isNotBlank(username)) - { - id = DatasetsDAO.getWatchId(urn, username); - } - } - result.put("id", id); - - return ok(result); + public static Result favoriteDataset(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + if (StringUtils.isNotBlank(username)) { + if (DatasetsDAO.favorite(id, username)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + } + } else { + result.put("status", "failed"); } - public static Result watchURN() - { - Map params = request().body().asFormUrlEncoded(); - ObjectNode result = Json.newObject(); + return ok(result); + } - String username = session("user"); - if (StringUtils.isNotBlank(username)) - { - String message = DatasetsDAO.watchURN(params, username); - if (StringUtils.isBlank(message)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - result.put("message", message); - } - } - else - { - result.put("status", "failed"); - result.put("message", "User is not authenticated"); - } - return ok(result); + public static Result unfavoriteDataset(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + if (StringUtils.isNotBlank(username)) { + if (DatasetsDAO.unfavorite(id, username)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + } + } else { + result.put("status", "failed"); } - public static Result unwatchDataset(int id, int watchId) - { - ObjectNode result = Json.newObject(); - if (DatasetsDAO.unwatch(watchId)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - } + return ok(result); + } - return ok(result); + public static Result getDatasetOwnedBy(String userId) { + ObjectNode result = Json.newObject(); + int page = NumberUtils.toInt(request().getQueryString("page"), 1); + int size = NumberUtils.toInt(request().getQueryString("size"), 10); + + if (StringUtils.isNotBlank(userId)) { + result = DatasetsDAO.getDatasetOwnedBy(userId, page, size); + } else { + result.put("status", "failed, no user"); + } + return ok(result); + } + + public static Result ownDataset(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + if (StringUtils.isNotBlank(username)) { + result = DatasetsDAO.ownDataset(id, username); + } else { + result.put("status", "failed"); } - public static Result unwatchURN(int watchId) - { - ObjectNode result = Json.newObject(); - if (DatasetsDAO.unwatch(watchId)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - } + return ok(result); + } - return ok(result); + public static Result unownDataset(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + if (StringUtils.isNotBlank(username)) { + result = DatasetsDAO.unownDataset(id, username); + } else { + result.put("status", "failed"); } - public static Result getPagedDatasetColumnComments(int datasetId, int columnId) - { - ObjectNode result = Json.newObject(); + return ok(result); + } - String username = session("user"); - if (username == null) - { - username = ""; - } + public static Result getFavorites() { + ObjectNode result = Json.newObject(); + String username = session("user"); + result.put("status", "ok"); + result.set("data", DatasetsDAO.getFavorites(username)); + return ok(result); + } - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller getPagedDatasetColumnComments wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller getPagedDatasetColumnComments wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", DatasetsDAO.getPagedDatasetColumnComments(username, datasetId, columnId, page, size)); - return ok(result); + public static Result getPagedDatasetComments(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + if (username == null) { + username = ""; } - public static Result postDatasetColumnComment(int id, int columnId) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - Map params = request().body().asFormUrlEncoded(); - if (StringUtils.isNotBlank(username)) - { - String errorMsg = DatasetsDAO.postColumnComment(id, columnId, params, username); - if (StringUtils.isBlank(errorMsg)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - result.put("msg", errorMsg); - } - } - else - { - result.put("status", "failed"); - result.put("msg", "Authentication Required"); - } - - return ok(result); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error( + "Dataset Controller getPagedDatasetComments wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result putDatasetColumnComment(int id, int columnId, int commentId) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - Map params = request().body().asFormUrlEncoded(); - if (StringUtils.isNotBlank(username)) - { - String errorMsg = DatasetsDAO.postColumnComment(id, commentId, params, username); - if (StringUtils.isBlank(errorMsg)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - result.put("msg", errorMsg); - } - } - else - { - result.put("status", "failed"); - result.put("msg", "Authentication Required"); - } - - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error( + "Dataset Controller getPagedDatasetComments wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result assignCommentToColumn(int datasetId, int columnId) - { - ObjectNode json = Json.newObject(); - ArrayNode res = json.arrayNode(); - JsonNode req = request().body().asJson(); - if (req == null) { - return badRequest("Expecting JSON data"); - } - if (req.isArray()) { - for (int i = 0; i < req.size(); i++) { - JsonNode obj = req.get(i); - Boolean isSuccess = DatasetsDAO.assignColumnComment( - obj.get("datasetId").asInt(), - obj.get("columnId").asInt(), - obj.get("commentId").asInt()); - ObjectNode itemResponse = Json.newObject(); - if (isSuccess) { - itemResponse.put("success", "true"); - } else { - itemResponse.put("error", "true"); - itemResponse.put("datasetId", datasetId); - itemResponse.put("columnId", columnId); - itemResponse.set("commentId", obj.get("comment_id")); - } - res.add(itemResponse); - } + result.put("status", "ok"); + result.set("data", DatasetsDAO.getPagedDatasetComments(username, id, page, size)); + return ok(result); + } + + public static Result postDatasetComment(int id) { + String body = request().body().asText(); + ObjectNode result = Json.newObject(); + String username = session("user"); + Map params = request().body().asFormUrlEncoded(); + + if (StringUtils.isNotBlank(username)) { + if (DatasetsDAO.postComment(id, params, username)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + result.put("error", "true"); + result.put("msg", "Could not create comment."); + return badRequest(result); + } + } else { + result.put("status", "failed"); + result.put("error", "true"); + result.put("msg", "Unauthorized User."); + return badRequest(result); + } + + return ok(result); + } + + public static Result putDatasetComment(int id, int commentId) { + String body = request().body().asText(); + ObjectNode result = Json.newObject(); + String username = session("user"); + Map params = request().body().asFormUrlEncoded(); + + if (StringUtils.isNotBlank(username)) { + if (DatasetsDAO.postComment(id, params, username)) { + result.put("status", "success"); + return ok(result); + } else { + result.put("status", "failed"); + result.put("error", "true"); + result.put("msg", "Could not create comment."); + return badRequest(result); + } + } else { + result.put("status", "failed"); + result.put("error", "true"); + result.put("msg", "Unauthorized User"); + return badRequest(result); + } + } + + public static Result deleteDatasetComment(int id, int commentId) { + ObjectNode result = Json.newObject(); + if (DatasetsDAO.deleteComment(commentId)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + } + + return ok(result); + } + + public static Result watchDataset(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + Map params = request().body().asFormUrlEncoded(); + if (StringUtils.isNotBlank(username)) { + String message = DatasetsDAO.watchDataset(id, params, username); + if (StringUtils.isBlank(message)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + result.put("message", message); + } + } else { + result.put("status", "failed"); + result.put("message", "User is not authenticated"); + } + + return ok(result); + } + + public static Result getWatchedUrnId() { + ObjectNode result = Json.newObject(); + String urn = request().getQueryString("urn"); + result.put("status", "success"); + Long id = 0L; + + if (StringUtils.isNotBlank(urn)) { + String username = session("user"); + if (StringUtils.isNotBlank(username)) { + id = DatasetsDAO.getWatchId(urn, username); + } + } + result.put("id", id); + + return ok(result); + } + + public static Result watchURN() { + Map params = request().body().asFormUrlEncoded(); + ObjectNode result = Json.newObject(); + + String username = session("user"); + if (StringUtils.isNotBlank(username)) { + String message = DatasetsDAO.watchURN(params, username); + if (StringUtils.isBlank(message)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + result.put("message", message); + } + } else { + result.put("status", "failed"); + result.put("message", "User is not authenticated"); + } + return ok(result); + } + + public static Result unwatchDataset(int id, int watchId) { + ObjectNode result = Json.newObject(); + if (DatasetsDAO.unwatch(watchId)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + } + + return ok(result); + } + + public static Result unwatchURN(int watchId) { + ObjectNode result = Json.newObject(); + if (DatasetsDAO.unwatch(watchId)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + } + + return ok(result); + } + + public static Result getPagedDatasetColumnComments(int datasetId, int columnId) { + ObjectNode result = Json.newObject(); + + String username = session("user"); + if (username == null) { + username = ""; + } + + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error( + "Dataset Controller getPagedDatasetColumnComments wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } + } + + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error( + "Dataset Controller getPagedDatasetColumnComments wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } + } + + result.put("status", "ok"); + result.set("data", DatasetsDAO.getPagedDatasetColumnComments(username, datasetId, columnId, page, size)); + return ok(result); + } + + public static Result postDatasetColumnComment(int id, int columnId) { + ObjectNode result = Json.newObject(); + String username = session("user"); + Map params = request().body().asFormUrlEncoded(); + if (StringUtils.isNotBlank(username)) { + String errorMsg = DatasetsDAO.postColumnComment(id, columnId, params, username); + if (StringUtils.isBlank(errorMsg)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + result.put("msg", errorMsg); + } + } else { + result.put("status", "failed"); + result.put("msg", "Authentication Required"); + } + + return ok(result); + } + + public static Result putDatasetColumnComment(int id, int columnId, int commentId) { + ObjectNode result = Json.newObject(); + String username = session("user"); + Map params = request().body().asFormUrlEncoded(); + if (StringUtils.isNotBlank(username)) { + String errorMsg = DatasetsDAO.postColumnComment(id, commentId, params, username); + if (StringUtils.isBlank(errorMsg)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + result.put("msg", errorMsg); + } + } else { + result.put("status", "failed"); + result.put("msg", "Authentication Required"); + } + + return ok(result); + } + + public static Result assignCommentToColumn(int datasetId, int columnId) { + ObjectNode json = Json.newObject(); + ArrayNode res = json.arrayNode(); + JsonNode req = request().body().asJson(); + if (req == null) { + return badRequest("Expecting JSON data"); + } + if (req.isArray()) { + for (int i = 0; i < req.size(); i++) { + JsonNode obj = req.get(i); + Boolean isSuccess = DatasetsDAO.assignColumnComment(obj.get("datasetId").asInt(), obj.get("columnId").asInt(), + obj.get("commentId").asInt()); + ObjectNode itemResponse = Json.newObject(); + if (isSuccess) { + itemResponse.put("success", "true"); } else { - Boolean isSuccess = DatasetsDAO.assignColumnComment( - datasetId, - columnId, - req.get("commentId").asInt()); - ObjectNode itemResponse = Json.newObject(); - if (isSuccess) { - itemResponse.put("success", "true"); - } else { - itemResponse.put("error", "true"); - itemResponse.put("datasetId", datasetId); - itemResponse.put("columnId", columnId); - itemResponse.set("commentId", req.get("commentId")); - } - res.add(itemResponse); + itemResponse.put("error", "true"); + itemResponse.put("datasetId", datasetId); + itemResponse.put("columnId", columnId); + itemResponse.set("commentId", obj.get("comment_id")); } - ObjectNode result = Json.newObject(); - result.putArray("results").addAll(res); - return ok(result); + res.add(itemResponse); + } + } else { + Boolean isSuccess = DatasetsDAO.assignColumnComment(datasetId, columnId, req.get("commentId").asInt()); + ObjectNode itemResponse = Json.newObject(); + if (isSuccess) { + itemResponse.put("success", "true"); + } else { + itemResponse.put("error", "true"); + itemResponse.put("datasetId", datasetId); + itemResponse.put("columnId", columnId); + itemResponse.set("commentId", req.get("commentId")); + } + res.add(itemResponse); + } + ObjectNode result = Json.newObject(); + result.putArray("results").addAll(res); + return ok(result); + } + + public static Result deleteDatasetColumnComment(int id, int columnId, int commentId) { + ObjectNode result = Json.newObject(); + if (DatasetsDAO.deleteColumnComment(id, columnId, commentId)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); } - public static Result deleteDatasetColumnComment(int id, int columnId, int commentId) - { - ObjectNode result = Json.newObject(); - if (DatasetsDAO.deleteColumnComment(id, columnId, commentId)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - } + return ok(result); + } - return ok(result); + public static Result getSimilarColumnComments(Long datasetId, int columnId) { + ObjectNode result = Json.newObject(); + result.set("similar", Json.toJson(DatasetsDAO.similarColumnComments(datasetId, columnId))); + return ok(result); + } + + public static Result getSimilarColumns(int datasetId, int columnId) { + ObjectNode result = Json.newObject(); + result.set("similar", Json.toJson(DatasetsDAO.similarColumns(datasetId, columnId))); + return ok(result); + } + + public static Result getDependViews(Long datasetId) { + ObjectNode result = Json.newObject(); + List depends = new ArrayList<>(); + DatasetsDAO.getDependencies(datasetId, depends); + result.put("status", "ok"); + result.set("depends", Json.toJson(depends)); + return ok(result); + } + + public static Result getReferenceViews(Long datasetId) { + ObjectNode result = Json.newObject(); + List references = new ArrayList<>(); + DatasetsDAO.getReferences(datasetId, references); + result.put("status", "ok"); + result.set("references", Json.toJson(references)); + return ok(result); + } + + public static Result getDatasetListNodes() { + ObjectNode result = Json.newObject(); + String urn = request().getQueryString("urn"); + result.put("status", "ok"); + result.set("nodes", Json.toJson(DatasetsDAO.getDatasetListViewNodes(urn))); + return ok(result); + } + + public static Result getDatasetVersions(Long datasetId, Integer dbId) { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("versions", Json.toJson(DatasetsDAO.getDatasetVersions(datasetId, dbId))); + return ok(result); + } + + public static Result getDatasetSchemaTextByVersion(Long datasetId, String version) { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("schema_text", Json.toJson(DatasetsDAO.getDatasetSchemaTextByVersion(datasetId, version))); + return ok(result); + } + + public static Result getDatasetInstances(Long datasetId) { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("instances", Json.toJson(DatasetsDAO.getDatasetInstances(datasetId))); + return ok(result); + } + + public static Result getDatasetPartitions(Long datasetId) { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("partitions", Json.toJson(DatasetsDAO.getDatasetPartitionGains(datasetId))); + return ok(result); + } + + public static Result getDatasetAccess(Long datasetId) { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("access", Json.toJson(DatasetsDAO.getDatasetAccessibilty(datasetId))); + return ok(result); + } + + public static Promise getDatasetCompliance(int datasetId) { + DatasetCompliance record = null; + try { + record = DATASETS_DAO.getDatasetComplianceInfoByDatasetId(JDBC_TEMPLATE, datasetId); + } catch (Exception e) { + JsonNode result = Json.newObject() + .put("status", "failed") + .put("error", "true") + .put("msg", "Fetch data Error: " + e.getMessage()); + + return Promise.promise(() -> ok(result)); } - public static Result getSimilarColumnComments(Long datasetId, int columnId) { - ObjectNode result = Json.newObject(); - result.set("similar", Json.toJson(DatasetsDAO.similarColumnComments(datasetId, columnId))); - return ok(result); + JsonNode result = Json.newObject().put("status", "ok").set("complianceInfo", Json.toJson(record)); + + return Promise.promise(() -> ok(result)); + } + + public static Promise updateDatasetCompliance(int datasetId) { + String username = session("user"); + if (StringUtils.isBlank(username)) { + JsonNode result = Json.newObject().put("status", "failed").put("error", "true").put("msg", "Unauthorized User."); + + return Promise.promise(() -> ok(result)); } - public static Result getSimilarColumns(int datasetId, int columnId) - { - ObjectNode result = Json.newObject(); - result.set("similar", Json.toJson(DatasetsDAO.similarColumns(datasetId, columnId))); - return ok(result); + try { + DATASETS_DAO.updateDatasetComplianceInfo(JDBC_TEMPLATE, NAMED_JDBC_TEMPLATE, datasetId, request().body().asJson(), + username); + } catch (Exception e) { + JsonNode result = Json.newObject() + .put("status", "failed") + .put("error", "true") + .put("msg", "Update Compliance Info Error: " + e.getMessage()); + + Logger.warn("Update Compliance Info fail", e); + + return Promise.promise(() -> ok(result)); } - public static Result getDependViews(Long datasetId) - { - ObjectNode result = Json.newObject(); - List depends = new ArrayList<>(); - DatasetsDAO.getDependencies(datasetId, depends); - result.put("status", "ok"); - result.set("depends", Json.toJson(depends)); - return ok(result); + return Promise.promise(() -> ok(Json.newObject().put("status", "ok"))); + } + + public static Promise getDatasetAutoClassification(int datasetId) { + DatasetClassification record = null; + try { + String urn = DATASETS_DAO.getDatasetUrnById(JDBC_TEMPLATE, datasetId); + if (urn == null) { + throw new IllegalArgumentException("Dataset not found, ID: " + datasetId); + } + + record = trimDatasetClassification(CLASSIFICATION_DAO.getDatasetClassification(urn)); + } catch (Exception e) { + JsonNode result = Json.newObject() + .put("status", "failed") + .put("error", "true") + .put("msg", "Fetch data Error: " + e.getMessage()); + + return Promise.promise(() -> ok(result)); } - public static Result getReferenceViews(Long datasetId) - { - ObjectNode result = Json.newObject(); - List references = new ArrayList<>(); - DatasetsDAO.getReferences(datasetId, references); - result.put("status", "ok"); - result.set("references", Json.toJson(references)); - return ok(result); + JsonNode result = Json.newObject().put("status", "ok").set("autoClassification", Json.toJson(record)); + + return Promise.promise(() -> ok(result)); + } + + /** + * Trim not required information from DatasetClassification for UI, return a new record. + * @param record DatasetClassification + * @return DatasetClassification + * @throws IOException + */ + private static DatasetClassification trimDatasetClassification(DatasetClassification record) throws IOException { + ObjectMapper mapper = Json.mapper(); + DatasetClassification newRecord = new DatasetClassification(record.getUrn(), null, record.getLastModified()); + + List> entities = + mapper.readValue(record.getClassificationResult(), new TypeReference>>() { + }); + + for (Map entity : entities) { + entity.remove("dataType"); + Map identifierTypePrediction = (Map) entity.get("identifierTypePrediction"); + if (identifierTypePrediction != null) { + identifierTypePrediction.remove("priority"); + identifierTypePrediction.remove("type"); + identifierTypePrediction.remove("exclusive"); + } + Map logicalTypePrediction = (Map) entity.get("logicalTypePrediction"); + if (logicalTypePrediction != null) { + logicalTypePrediction.remove("priority"); + logicalTypePrediction.remove("type"); + logicalTypePrediction.remove("exclusive"); + } } - public static Result getDatasetListNodes() - { - ObjectNode result = Json.newObject(); - String urn = request().getQueryString("urn"); - result.put("status", "ok"); - result.set("nodes", Json.toJson(DatasetsDAO.getDatasetListViewNodes(urn))); - return ok(result); - } - - public static Result getDatasetVersions(Long datasetId, Integer dbId) - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("versions", Json.toJson(DatasetsDAO.getDatasetVersions(datasetId, dbId))); - return ok(result); - } - - public static Result getDatasetSchemaTextByVersion(Long datasetId, String version) - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("schema_text", Json.toJson(DatasetsDAO.getDatasetSchemaTextByVersion(datasetId, version))); - return ok(result); - } - - public static Result getDatasetInstances(Long datasetId) - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("instances", Json.toJson(DatasetsDAO.getDatasetInstances(datasetId))); - return ok(result); - } - - public static Result getDatasetPartitions(Long datasetId) - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("partitions", Json.toJson(DatasetsDAO.getDatasetPartitionGains(datasetId))); - return ok(result); - } - - public static Result getDatasetAccess(Long datasetId) - { - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("access", Json.toJson(DatasetsDAO.getDatasetAccessibilty(datasetId))); - return ok(result); - } - - public static Promise getDatasetCompliance(int datasetId) { - DatasetCompliance record = null; - try { - record = datasetsDao.getDatasetComplianceInfoByDatasetId(jdbcTemplate, datasetId); - } catch (Exception e) { - JsonNode result = Json.newObject() - .put("status", "failed") - .put("error", "true") - .put("msg", "Fetch data Error: " + e.getMessage()); - - return Promise.promise(() -> ok(result)); - } - - JsonNode result = Json.newObject().put("status", "ok") - .set("complianceInfo", Json.toJson(record)); - - return Promise.promise(() -> ok(result)); - } - - public static Promise updateDatasetCompliance(int datasetId) { - String username = session("user"); - if (StringUtils.isBlank(username)) { - JsonNode result = - Json.newObject().put("status", "failed") - .put("error", "true") - .put("msg", "Unauthorized User."); - - return Promise.promise(() -> ok(result)); - } - - try { - datasetsDao.updateDatasetComplianceInfo(jdbcTemplate, namedJdbcTemplate, datasetId, - request().body().asJson(), username); - } catch (Exception e) { - JsonNode result = Json.newObject() - .put("status", "failed") - .put("error", "true") - .put("msg", "Update Compliance Info Error: " + e.getMessage()); - - Logger.warn("Update Compliance Info fail", e); - - return Promise.promise(() -> ok(result)); - } - - return Promise.promise(() -> ok(Json.newObject().put("status", "ok"))); - } - - public static Promise getDatasetAutoClassification(int datasetId) { - DatasetClassification record = null; - try { - String urn = datasetsDao.getDatasetUrnById(jdbcTemplate, datasetId); - if (urn == null) { - throw new IllegalArgumentException("Dataset not found, ID: " + datasetId); - } - - record = trimDatasetClassification(CLASSIFICATION_DAO.getDatasetClassification(urn)); - } catch (Exception e) { - JsonNode result = Json.newObject() - .put("status", "failed") - .put("error", "true") - .put("msg", "Fetch data Error: " + e.getMessage()); - - return Promise.promise(() -> ok(result)); - } - - JsonNode result = Json.newObject().put("status", "ok").set("autoClassification", Json.toJson(record)); - - return Promise.promise(() -> ok(result)); - } - - /** - * Trim not required information from DatasetClassification for UI, return a new record. - * @param record DatasetClassification - * @return DatasetClassification - * @throws IOException - */ - private static DatasetClassification trimDatasetClassification(DatasetClassification record) throws IOException { - ObjectMapper mapper = Json.mapper(); - DatasetClassification newRecord = new DatasetClassification(record.getUrn(), null, record.getLastModified()); - - List> entities = - mapper.readValue(record.getClassificationResult(), new TypeReference>>() { }); - - for (Map entity : entities) { - entity.remove("dataType"); - Map identifierTypePrediction = (Map) entity.get("identifierTypePrediction"); - if (identifierTypePrediction != null) { - identifierTypePrediction.remove("priority"); - identifierTypePrediction.remove("type"); - identifierTypePrediction.remove("exclusive"); - } - Map logicalTypePrediction = (Map) entity.get("logicalTypePrediction"); - if (logicalTypePrediction != null) { - logicalTypePrediction.remove("priority"); - logicalTypePrediction.remove("type"); - logicalTypePrediction.remove("exclusive"); - } - } - - newRecord.setClassificationResult(mapper.writeValueAsString(entities)); - return newRecord; - } + newRecord.setClassificationResult(mapper.writeValueAsString(entities)); + return newRecord; + } } diff --git a/wherehows-frontend/app/controllers/api/v1/Flow.java b/wherehows-frontend/app/controllers/api/v1/Flow.java index 480a48ed01..b587e604c8 100644 --- a/wherehows-frontend/app/controllers/api/v1/Flow.java +++ b/wherehows-frontend/app/controllers/api/v1/Flow.java @@ -15,230 +15,167 @@ package controllers.api.v1; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.FlowsDAO; +import org.apache.commons.lang3.StringUtils; +import play.Logger; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import play.Logger; -import org.apache.commons.lang3.StringUtils; -public class Flow extends Controller -{ - public static Result getPagedRootProjects() - { - ObjectNode result = Json.newObject(); - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedRootProjects wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedRootProjects wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", FlowsDAO.getPagedProjects(page, size)); - return ok(result); +public class Flow extends Controller { + public static Result getPagedRootProjects() { + ObjectNode result = Json.newObject(); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedRootProjects wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getPagedProjects(String application) - { - ObjectNode result = Json.newObject(); - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedDatasets wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedDatasets wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", FlowsDAO.getPagedProjectsByApplication(application, page, size)); - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedRootProjects wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result getPagedFlows(String application, String project) - { - ObjectNode result = Json.newObject(); - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedDatasets wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } + result.put("status", "ok"); + result.set("data", FlowsDAO.getPagedProjects(page, size)); + return ok(result); + } - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedDatasets wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", FlowsDAO.getPagedFlowsByProject(application, project, page, size)); - return ok(result); + public static Result getPagedProjects(String application) { + ObjectNode result = Json.newObject(); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedDatasets wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getPagedJobs(String application, Long flowId) - { - ObjectNode result = Json.newObject(); - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedDatasets wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Flow Controller getPagedDatasets wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", FlowsDAO.getPagedJobsByFlow(application, flowId, page, size)); - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedDatasets wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result getFlowListViewClusters() - { - ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("data", FlowsDAO.getPagedProjectsByApplication(application, page, size)); + return ok(result); + } - result.put("status", "ok"); - result.set("nodes", Json.toJson(FlowsDAO.getFlowListViewClusters())); - return ok(result); + public static Result getPagedFlows(String application, String project) { + ObjectNode result = Json.newObject(); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedDatasets wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getFlowListViewProjects(String application) - { - ObjectNode result = Json.newObject(); - - result.put("status", "ok"); - result.set("nodes", Json.toJson(FlowsDAO.getFlowListViewProjects(application))); - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedDatasets wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result getFlowListViewFlows(String application, String project) - { - ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("data", FlowsDAO.getPagedFlowsByProject(application, project, page, size)); + return ok(result); + } - result.put("status", "ok"); - result.set("nodes", Json.toJson(FlowsDAO.getFlowListViewFlows(application, project))); - return ok(result); + public static Result getPagedJobs(String application, Long flowId) { + ObjectNode result = Json.newObject(); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedDatasets wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } + + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("Flow Controller getPagedDatasets wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } + } + + result.put("status", "ok"); + result.set("data", FlowsDAO.getPagedJobsByFlow(application, flowId, page, size)); + return ok(result); + } + + public static Result getFlowListViewClusters() { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("nodes", Json.toJson(FlowsDAO.getFlowListViewClusters())); + return ok(result); + } + + public static Result getFlowListViewProjects(String application) { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("nodes", Json.toJson(FlowsDAO.getFlowListViewProjects(application))); + return ok(result); + } + + public static Result getFlowListViewFlows(String application, String project) { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("nodes", Json.toJson(FlowsDAO.getFlowListViewFlows(application, project))); + return ok(result); + } } diff --git a/wherehows-frontend/app/controllers/api/v1/Jira.java b/wherehows-frontend/app/controllers/api/v1/Jira.java index 7f8ff201ad..6d1dd03acd 100644 --- a/wherehows-frontend/app/controllers/api/v1/Jira.java +++ b/wherehows-frontend/app/controllers/api/v1/Jira.java @@ -15,62 +15,52 @@ package controllers.api.v1; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.JiraDAO; -import wherehows.models.JiraTicket; +import java.util.ArrayList; +import java.util.List; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; +import wherehows.models.JiraTicket; -import java.util.ArrayList; -import java.util.List; -public class Jira extends Controller -{ - public static String HEADLESS_COMPONENT = "Auto Purge Program - Headless"; +public class Jira extends Controller { + public static String HEADLESS_COMPONENT = "Auto Purge Program - Headless"; - public static Result getLdapInfo() - { - ObjectNode result = Json.newObject(); + public static Result getLdapInfo() { + ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("ldapinfo", Json.toJson(JiraDAO.getLdapInfo())); - return ok(result); - } + result.put("status", "ok"); + result.set("ldapinfo", Json.toJson(JiraDAO.getLdapInfo())); + return ok(result); + } - public static Result getFirstLevelLdapInfo(String managerId) - { - ObjectNode result = Json.newObject(); + public static Result getFirstLevelLdapInfo(String managerId) { + ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("currentUser", Json.toJson(JiraDAO.getCurrentUserLdapInfo(managerId))); - result.set("members", Json.toJson(JiraDAO.getFirstLevelLdapInfo(managerId))); - return ok(result); - } + result.put("status", "ok"); + result.set("currentUser", Json.toJson(JiraDAO.getCurrentUserLdapInfo(managerId))); + result.set("members", Json.toJson(JiraDAO.getFirstLevelLdapInfo(managerId))); + return ok(result); + } - public static Result getJiraTickets(String managerId) - { - ObjectNode result = Json.newObject(); + public static Result getJiraTickets(String managerId) { + ObjectNode result = Json.newObject(); - List headlessTickets = new ArrayList(); - List userTickets = new ArrayList(); - List tickets = JiraDAO.getUserTicketsByManagerId(managerId); - if ( tickets != null && tickets.size() > 0) - { - for( JiraTicket ticket : tickets) - { - if (ticket.ticketComponent.equalsIgnoreCase(HEADLESS_COMPONENT)) - { - headlessTickets.add(ticket); - } - else - { - userTickets.add(ticket); - } - } + List headlessTickets = new ArrayList(); + List userTickets = new ArrayList(); + List tickets = JiraDAO.getUserTicketsByManagerId(managerId); + if (tickets != null && tickets.size() > 0) { + for (JiraTicket ticket : tickets) { + if (ticket.ticketComponent.equalsIgnoreCase(HEADLESS_COMPONENT)) { + headlessTickets.add(ticket); + } else { + userTickets.add(ticket); } - result.put("status", "ok"); - result.set("headlessTickets", Json.toJson(headlessTickets)); - result.set("userTickets", Json.toJson(userTickets)); - return ok(result); + } } - + result.put("status", "ok"); + result.set("headlessTickets", Json.toJson(headlessTickets)); + result.set("userTickets", Json.toJson(userTickets)); + return ok(result); + } } diff --git a/wherehows-frontend/app/controllers/api/v1/Lineage.java b/wherehows-frontend/app/controllers/api/v1/Lineage.java index 7faeb468e7..9e70d095dd 100644 --- a/wherehows-frontend/app/controllers/api/v1/Lineage.java +++ b/wherehows-frontend/app/controllers/api/v1/Lineage.java @@ -16,109 +16,91 @@ package controllers.api.v1; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.DatasetsDAO; import dao.LineageDAO; +import org.apache.commons.lang3.StringUtils; +import play.Logger; import play.Play; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import play.Logger; -import org.apache.commons.lang3.StringUtils; -public class Lineage extends Controller -{ - private static final String LINEAGE_LOOK_BACK_TIME_KEY = "lineage.look.back.time"; - public static Result getDatasetLineageGraphData(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - if (id < 1) - { - result.put("status", "error"); - result.put("message", "wrong dataset id"); - return ok(result); - } +public class Lineage extends Controller { + private static final String LINEAGE_LOOK_BACK_TIME_KEY = "lineage.look.back.time"; - wherehows.models.Dataset dataset = DatasetsDAO.getDatasetByID(id, username); - if (dataset == null || StringUtils.isBlank(dataset.urn)) - { - result.put("status", "error"); - result.put("message", "wrong dataset id"); - return ok(result); - } - - int upLevel = 1; - String upLevelStr = request().getQueryString("upLevel"); - if (StringUtils.isBlank(upLevelStr)) - { - upLevel = 1; - } - else - { - try - { - upLevel = Integer.parseInt(upLevelStr); - } - catch(NumberFormatException e) - { - Logger.error("Lineage Controller getDatasetLineageGraphData wrong upLevel parameter. Error message: " - + e.getMessage()); - upLevel = 1; - } - } - if (upLevel < 1) - upLevel = 1; - - int downLevel = 1; - String downLevelStr = request().getQueryString("downLevel"); - if (StringUtils.isBlank(downLevelStr)) - { - downLevel = 1; - } - else - { - try - { - downLevel = Integer.parseInt(downLevelStr); - } - catch(NumberFormatException e) - { - Logger.error("Lineage Controller getDatasetLineageGraphData wrong downLevel parameter. Error message: " - + e.getMessage()); - downLevel = 1; - } - } - if (downLevel < 1) - downLevel = 1; - - int lookBackTimeDefault = Integer.valueOf(Play.application().configuration().getString(LINEAGE_LOOK_BACK_TIME_KEY, "30")); - int lookBackTime = lookBackTimeDefault; - String lookBackTimeStr = request().getQueryString("period"); - if (!StringUtils.isBlank(lookBackTimeStr)) - { - try - { - lookBackTime = Integer.parseInt(lookBackTimeStr); - } - catch(NumberFormatException e) - { - Logger.error("Lineage Controller getDatasetLineageGraphData wrong period parameter. Error message: " - + e.getMessage()); - lookBackTime = lookBackTimeDefault; - } - } - - result.put("status", "ok"); - result.set("data", Json.toJson(LineageDAO.getObjectAdjacnet(dataset.urn, upLevel, downLevel, lookBackTime))); - return ok(result); + public static Result getDatasetLineageGraphData(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + if (id < 1) { + result.put("status", "error"); + result.put("message", "wrong dataset id"); + return ok(result); } - public static Result getFlowLineageGraphData(String application, String project, Long flowId) - { - ObjectNode result = Json.newObject(); - - result.put("status", "ok"); - result.set("data", Json.toJson(LineageDAO.getFlowLineage(application, project, flowId))); - return ok(result); + wherehows.models.Dataset dataset = DatasetsDAO.getDatasetByID(id, username); + if (dataset == null || StringUtils.isBlank(dataset.urn)) { + result.put("status", "error"); + result.put("message", "wrong dataset id"); + return ok(result); } + int upLevel = 1; + String upLevelStr = request().getQueryString("upLevel"); + if (StringUtils.isBlank(upLevelStr)) { + upLevel = 1; + } else { + try { + upLevel = Integer.parseInt(upLevelStr); + } catch (NumberFormatException e) { + Logger.error( + "Lineage Controller getDatasetLineageGraphData wrong upLevel parameter. Error message: " + e.getMessage()); + upLevel = 1; + } + } + if (upLevel < 1) { + upLevel = 1; + } + + int downLevel = 1; + String downLevelStr = request().getQueryString("downLevel"); + if (StringUtils.isBlank(downLevelStr)) { + downLevel = 1; + } else { + try { + downLevel = Integer.parseInt(downLevelStr); + } catch (NumberFormatException e) { + Logger.error("Lineage Controller getDatasetLineageGraphData wrong downLevel parameter. Error message: " + + e.getMessage()); + downLevel = 1; + } + } + if (downLevel < 1) { + downLevel = 1; + } + + int lookBackTimeDefault = + Integer.valueOf(Play.application().configuration().getString(LINEAGE_LOOK_BACK_TIME_KEY, "30")); + int lookBackTime = lookBackTimeDefault; + String lookBackTimeStr = request().getQueryString("period"); + if (!StringUtils.isBlank(lookBackTimeStr)) { + try { + lookBackTime = Integer.parseInt(lookBackTimeStr); + } catch (NumberFormatException e) { + Logger.error( + "Lineage Controller getDatasetLineageGraphData wrong period parameter. Error message: " + e.getMessage()); + lookBackTime = lookBackTimeDefault; + } + } + + result.put("status", "ok"); + result.set("data", Json.toJson(LineageDAO.getObjectAdjacnet(dataset.urn, upLevel, downLevel, lookBackTime))); + return ok(result); + } + + public static Result getFlowLineageGraphData(String application, String project, Long flowId) { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("data", Json.toJson(LineageDAO.getFlowLineage(application, project, flowId))); + return ok(result); + } } diff --git a/wherehows-frontend/app/controllers/api/v1/Metric.java b/wherehows-frontend/app/controllers/api/v1/Metric.java index f5c7b32781..0d18c8eb59 100644 --- a/wherehows-frontend/app/controllers/api/v1/Metric.java +++ b/wherehows-frontend/app/controllers/api/v1/Metric.java @@ -15,283 +15,219 @@ package controllers.api.v1; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.MetricsDAO; +import java.util.Map; +import org.apache.commons.lang3.StringUtils; +import play.Logger; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import play.Logger; -import org.apache.commons.lang3.StringUtils; -import java.util.Map; -public class Metric extends Controller -{ - public static Result getPagedMetrics() - { - ObjectNode result = Json.newObject(); - String username = session("user"); +public class Metric extends Controller { + public static Result getPagedMetrics() { - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.warn("Metric Controller getPagedMetrics wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } + ObjectNode result = Json.newObject(); + String username = session("user"); - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.warn("Metric Controller getPagedMetrics wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", MetricsDAO.getPagedMetrics("", "", page, size, username)); - return ok(result); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.warn("Metric Controller getPagedMetrics wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getPagedMetricsByDashboard(String dashboardName) - { - - ObjectNode result = Json.newObject(); - String username = session("user"); - - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.warn("Metric Controller getPagedMetricsByDashboard wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.warn("Metric Controller getPagedMetricsByDashboard wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", MetricsDAO.getPagedMetrics(dashboardName, "", page, size, username)); - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.warn("Metric Controller getPagedMetrics wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result getPagedMetricsByDashboardandGroup(String dashboardName, String group) - { + result.put("status", "ok"); + result.set("data", MetricsDAO.getPagedMetrics("", "", page, size, username)); + return ok(result); + } - ObjectNode result = Json.newObject(); - String username = session("user"); + public static Result getPagedMetricsByDashboard(String dashboardName) { - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.warn("Metric Controller getPagedMetricsByDashboardandGroup wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } + ObjectNode result = Json.newObject(); + String username = session("user"); - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.warn("Metric Controller getPagedMetricsByDashboardandGroup wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", MetricsDAO.getPagedMetrics(dashboardName, group, page, size, username)); - return ok(result); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.warn( + "Metric Controller getPagedMetricsByDashboard wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getMetricByID(int id) - { - String user = session("user"); - wherehows.models.Metric metric = MetricsDAO.getMetricByID(id, user); - - ObjectNode result = Json.newObject(); - - if (metric != null) - { - result.put("status", "ok"); - result.set("metric", Json.toJson(metric)); - } - else - { - result.put("status", "error"); - result.put("message", "record not found"); - } - - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.warn( + "Metric Controller getPagedMetricsByDashboard wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result watchMetric(int id) - { - ObjectNode result = Json.newObject(); - String username = session("user"); - Map params = request().body().asFormUrlEncoded(); - if (StringUtils.isNotBlank(username)) - { - String message = MetricsDAO.watchMetric(id, params, username); - if (StringUtils.isBlank(message)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - result.put("message", message); - } - } - else - { - result.put("status", "failed"); - result.put("message", "User is not authenticated"); - } + result.put("status", "ok"); + result.set("data", MetricsDAO.getPagedMetrics(dashboardName, "", page, size, username)); + return ok(result); + } - return ok(result); + public static Result getPagedMetricsByDashboardandGroup(String dashboardName, String group) { + + ObjectNode result = Json.newObject(); + String username = session("user"); + + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.warn("Metric Controller getPagedMetricsByDashboardandGroup wrong page parameter. Error message: " + + e.getMessage()); + page = 1; + } } - public static Result unwatchMetric(int id, int watchId) - { - ObjectNode result = Json.newObject(); - if (MetricsDAO.unwatch(watchId)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - } - - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.warn("Metric Controller getPagedMetricsByDashboardandGroup wrong size parameter. Error message: " + + e.getMessage()); + size = 10; + } } - public static Result updateMetric(int id) - { - ObjectNode result = Json.newObject(); - Map params = request().body().asFormUrlEncoded(); + result.put("status", "ok"); + result.set("data", MetricsDAO.getPagedMetrics(dashboardName, group, page, size, username)); + return ok(result); + } - String message = MetricsDAO.updateMetricValues(id, params); - if (StringUtils.isBlank(message)) - { - result.put("status", "success"); - return ok(result); - } - else - { - result.put("status", "failed"); - result.put("message", message); - return badRequest(result); - } + public static Result getMetricByID(int id) { + String user = session("user"); + wherehows.models.Metric metric = MetricsDAO.getMetricByID(id, user); + + ObjectNode result = Json.newObject(); + + if (metric != null) { + result.put("status", "ok"); + result.set("metric", Json.toJson(metric)); + } else { + result.put("status", "error"); + result.put("message", "record not found"); } - public static Result getMetricListViewByMetricId(Integer id) - { - ObjectNode result = Json.newObject(); + return ok(result); + } - result.put("status", "ok"); - result.set("nodes", MetricsDAO.getMetricListViewMetricNodesByMetricId(id)); - return ok(result); + public static Result watchMetric(int id) { + ObjectNode result = Json.newObject(); + String username = session("user"); + Map params = request().body().asFormUrlEncoded(); + if (StringUtils.isNotBlank(username)) { + String message = MetricsDAO.watchMetric(id, params, username); + if (StringUtils.isBlank(message)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + result.put("message", message); + } + } else { + result.put("status", "failed"); + result.put("message", "User is not authenticated"); } - public static Result getMetricListViewDashboards() - { - ObjectNode result = Json.newObject(); + return ok(result); + } - result.put("status", "ok"); - result.set("nodes", MetricsDAO.getMetricListViewDashboardNodes()); - return ok(result); + public static Result unwatchMetric(int id, int watchId) { + ObjectNode result = Json.newObject(); + if (MetricsDAO.unwatch(watchId)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); } - public static Result getMetricListViewGroups(String dashboard) - { - ObjectNode result = Json.newObject(); + return ok(result); + } - result.put("status", "ok"); - result.set("nodes", MetricsDAO.getMetricListViewGroupsNodes(dashboard)); - return ok(result); + public static Result updateMetric(int id) { + ObjectNode result = Json.newObject(); + Map params = request().body().asFormUrlEncoded(); + + String message = MetricsDAO.updateMetricValues(id, params); + if (StringUtils.isBlank(message)) { + result.put("status", "success"); + return ok(result); + } else { + result.put("status", "failed"); + result.put("message", message); + return badRequest(result); } + } - public static Result getMetricListViewNodes(String dashboard, String group) - { - ObjectNode result = Json.newObject(); + public static Result getMetricListViewByMetricId(Integer id) { + ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("nodes", MetricsDAO.getMetricListViewMetricNodes(dashboard, group)); - return ok(result); - } + result.put("status", "ok"); + result.set("nodes", MetricsDAO.getMetricListViewMetricNodesByMetricId(id)); + return ok(result); + } + + public static Result getMetricListViewDashboards() { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("nodes", MetricsDAO.getMetricListViewDashboardNodes()); + return ok(result); + } + + public static Result getMetricListViewGroups(String dashboard) { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("nodes", MetricsDAO.getMetricListViewGroupsNodes(dashboard)); + return ok(result); + } + + public static Result getMetricListViewNodes(String dashboard, String group) { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("nodes", MetricsDAO.getMetricListViewMetricNodes(dashboard, group)); + return ok(result); + } } diff --git a/wherehows-frontend/app/controllers/api/v1/SchemaHistory.java b/wherehows-frontend/app/controllers/api/v1/SchemaHistory.java index 323a97c350..baf789dfa1 100644 --- a/wherehows-frontend/app/controllers/api/v1/SchemaHistory.java +++ b/wherehows-frontend/app/controllers/api/v1/SchemaHistory.java @@ -15,85 +15,67 @@ package controllers.api.v1; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.SchemaHistoryDAO; +import org.apache.commons.lang3.StringUtils; +import play.Logger; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import play.Logger; -import org.apache.commons.lang3.StringUtils; -public class SchemaHistory extends Controller -{ - public static Result getPagedDatasets() - { - ObjectNode result = Json.newObject(); +public class SchemaHistory extends Controller { - String name = request().getQueryString("name"); - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("SchemaHistory Controller getPagedDatasets wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } + public static Result getPagedDatasets() { + ObjectNode result = Json.newObject(); - Long datasetId = 0L; - String datasetIdStr = request().getQueryString("datasetId"); - if (StringUtils.isNotBlank(datasetIdStr)) - { - try - { - datasetId = Long.parseLong(datasetIdStr); - } - catch(NumberFormatException e) - { - datasetId = 0L; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("SchemaHistory Controller getPagedDatasets wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - result.set("data", SchemaHistoryDAO.getPagedSchemaDataset(name, datasetId, page, size)); - return ok(result); + String name = request().getQueryString("name"); + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error( + "SchemaHistory Controller getPagedDatasets wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getSchemaHistory(int id) - { - ObjectNode result = Json.newObject(); - - result.put("status", "ok"); - result.set("data", Json.toJson(SchemaHistoryDAO.getSchemaHistoryByDatasetID(id))); - return ok(result); + Long datasetId = 0L; + String datasetIdStr = request().getQueryString("datasetId"); + if (StringUtils.isNotBlank(datasetIdStr)) { + try { + datasetId = Long.parseLong(datasetIdStr); + } catch (NumberFormatException e) { + datasetId = 0L; + } } + + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error( + "SchemaHistory Controller getPagedDatasets wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } + } + + result.put("status", "ok"); + result.set("data", SchemaHistoryDAO.getPagedSchemaDataset(name, datasetId, page, size)); + return ok(result); + } + + public static Result getSchemaHistory(int id) { + ObjectNode result = Json.newObject(); + + result.put("status", "ok"); + result.set("data", Json.toJson(SchemaHistoryDAO.getSchemaHistoryByDatasetID(id))); + return ok(result); + } } \ No newline at end of file diff --git a/wherehows-frontend/app/controllers/api/v1/ScriptFinder.java b/wherehows-frontend/app/controllers/api/v1/ScriptFinder.java index a57217b85d..9f27376a6c 100644 --- a/wherehows-frontend/app/controllers/api/v1/ScriptFinder.java +++ b/wherehows-frontend/app/controllers/api/v1/ScriptFinder.java @@ -17,143 +17,107 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.ScriptFinderDAO; import java.net.URLDecoder; +import org.apache.commons.lang3.StringUtils; +import play.Logger; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import play.Logger; -import org.apache.commons.lang3.StringUtils; -public class ScriptFinder extends Controller -{ - public static Result getAllScriptTypes() - { - ObjectNode result = Json.newObject(); +public class ScriptFinder extends Controller { - result.put("status", "ok"); - result.set("scriptTypes", Json.toJson(ScriptFinderDAO.getAllScriptTypes())); - return ok(result); + public static Result getAllScriptTypes() { + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("scriptTypes", Json.toJson(ScriptFinderDAO.getAllScriptTypes())); + return ok(result); + } + + public static Result getScripts() { + ObjectNode result = Json.newObject(); + + int page = 1; + String pageStr = request().getQueryString("page"); + if (StringUtils.isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("ScriptFinder Controller getPagedScripts wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } } - public static Result getScripts() - { - ObjectNode result = Json.newObject(); - - int page = 1; - String pageStr = request().getQueryString("page"); - if (StringUtils.isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("ScriptFinder Controller getPagedScripts wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - int size = 10; - String sizeStr = request().getQueryString("size"); - if (StringUtils.isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("ScriptFinder Controller getPagedScripts wrong size parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - String filterOptStr = request().getQueryString("query"); - JsonNode filterOpt = null; - try - { - String filterOptStrDecode = URLDecoder.decode(filterOptStr, "UTF-8"); - filterOpt = Json.parse(filterOptStrDecode); - } - catch (Exception e) - { - Logger.error("ScriptFinder Controller getScripts query filterOpt wrong JSON format. Error message: " + - e.getMessage()); - filterOpt = null; - } - - result.put("status", "ok"); - result.set("data", ScriptFinderDAO.getPagedScripts(filterOpt, page, size)); - return ok(result); + int size = 10; + String sizeStr = request().getQueryString("size"); + if (StringUtils.isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("ScriptFinder Controller getPagedScripts wrong size parameter. Error message: " + e.getMessage()); + size = 10; + } } - public static Result getScriptRuntimeByJobID(int applicationID, int jobID) - { - ObjectNode result = Json.newObject(); - - int attemptNumber = 0; - String attemptStr = request().getQueryString("attempt_number"); - if (StringUtils.isBlank(attemptStr)) - { - attemptNumber = 0; - } - else - { - try - { - attemptNumber = Integer.parseInt(attemptStr); - } - catch(NumberFormatException e) - { - Logger.error("ScriptFinder Controller getPagedScripts wrong page parameter. Error message: " + - e.getMessage()); - attemptNumber = 0; - } - } - - result.put("status", "ok"); - result.set("data", Json.toJson(ScriptFinderDAO.getPagedScriptRuntime(applicationID, jobID))); - return ok(result); + String filterOptStr = request().getQueryString("query"); + JsonNode filterOpt = null; + try { + String filterOptStrDecode = URLDecoder.decode(filterOptStr, "UTF-8"); + filterOpt = Json.parse(filterOptStrDecode); + } catch (Exception e) { + Logger.error( + "ScriptFinder Controller getScripts query filterOpt wrong JSON format. Error message: " + e.getMessage()); + filterOpt = null; } - public static Result getScriptLineageByJobID(int applicationID, int jobID) - { - ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("data", ScriptFinderDAO.getPagedScripts(filterOpt, page, size)); + return ok(result); + } - int attemptNumber = 0; - String attemptStr = request().getQueryString("attempt_number"); - if (StringUtils.isBlank(attemptStr)) - { - attemptNumber = 0; - } - else - { - try - { - attemptNumber = Integer.parseInt(attemptStr); - } - catch(NumberFormatException e) - { - Logger.error("ScriptFinder Controller getPagedScripts wrong page parameter. Error message: " + - e.getMessage()); - attemptNumber = 0; - } - } + public static Result getScriptRuntimeByJobID(int applicationID, int jobID) { + ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("data", Json.toJson(ScriptFinderDAO.getScriptLineage(applicationID, jobID))); - return ok(result); + int attemptNumber = 0; + String attemptStr = request().getQueryString("attempt_number"); + if (StringUtils.isBlank(attemptStr)) { + attemptNumber = 0; + } else { + try { + attemptNumber = Integer.parseInt(attemptStr); + } catch (NumberFormatException e) { + Logger.error("ScriptFinder Controller getPagedScripts wrong page parameter. Error message: " + e.getMessage()); + attemptNumber = 0; + } } + + result.put("status", "ok"); + result.set("data", Json.toJson(ScriptFinderDAO.getPagedScriptRuntime(applicationID, jobID))); + return ok(result); + } + + public static Result getScriptLineageByJobID(int applicationID, int jobID) { + ObjectNode result = Json.newObject(); + + int attemptNumber = 0; + String attemptStr = request().getQueryString("attempt_number"); + if (StringUtils.isBlank(attemptStr)) { + attemptNumber = 0; + } else { + try { + attemptNumber = Integer.parseInt(attemptStr); + } catch (NumberFormatException e) { + Logger.error("ScriptFinder Controller getPagedScripts wrong page parameter. Error message: " + e.getMessage()); + attemptNumber = 0; + } + } + + result.put("status", "ok"); + result.set("data", Json.toJson(ScriptFinderDAO.getScriptLineage(applicationID, jobID))); + return ok(result); + } } \ No newline at end of file diff --git a/wherehows-frontend/app/controllers/api/v1/Search.java b/wherehows-frontend/app/controllers/api/v1/Search.java index e660baf911..8b2bb4bbf6 100644 --- a/wherehows-frontend/app/controllers/api/v1/Search.java +++ b/wherehows-frontend/app/controllers/api/v1/Search.java @@ -17,237 +17,187 @@ import com.fasterxml.jackson.databind.node.ObjectNode; import dao.SearchDAO; import java.util.List; import org.apache.commons.lang3.math.NumberUtils; +import play.Logger; import play.Play; import play.cache.Cache; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import play.Logger; -import static org.apache.commons.lang3.StringUtils.isNotBlank; -import static org.apache.commons.lang3.StringUtils.isBlank; +import static org.apache.commons.lang3.StringUtils.*; -public class Search extends Controller -{ - private static final String AUTOCOMPLETE_ALL_KEY = "autocomplete.all"; - private static final String AUTOCOMPLETE_DATASET_KEY = "autocomplete.dataset"; - private static final String AUTOCOMPLETE_FLOW_KEY = "autocomplete.flow"; - private static final String AUTOCOMPLETE_METRIC_KEY = "autocomplete.metric"; - private static final int DEFAULT_AUTOCOMPLETE_SIZE = 20; - private static final int DEFAULT_AUTOCOMPLETE_CACHE_TIME = 3600; // cache for an hour +public class Search extends Controller { + private static final String AUTOCOMPLETE_ALL_KEY = "autocomplete.all"; + private static final String AUTOCOMPLETE_DATASET_KEY = "autocomplete.dataset"; + private static final String AUTOCOMPLETE_FLOW_KEY = "autocomplete.flow"; + private static final String AUTOCOMPLETE_METRIC_KEY = "autocomplete.metric"; + private static final int DEFAULT_AUTOCOMPLETE_SIZE = 20; + private static final int DEFAULT_AUTOCOMPLETE_CACHE_TIME = 3600; // cache for an hour - public static Result getSearchAutoComplete() { - // if not input, then get all search names (without limit). - String input = request().getQueryString("input"); - int size = 0; // size 0 means no limit - if (isNotBlank(input)) { - size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); - } - - String cacheKey = AUTOCOMPLETE_ALL_KEY + (isNotBlank(input) ? "." + input : "-all"); - List names = (List) Cache.get(cacheKey); - if (names == null || names.size() == 0) { - names = SearchDAO.getAutoCompleteList(input, size); - Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); - } - - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.put("input", input); - result.set("source", Json.toJson(names)); - return ok(result); + public static Result getSearchAutoComplete() { + // if not input, then get all search names (without limit). + String input = request().getQueryString("input"); + int size = 0; // size 0 means no limit + if (isNotBlank(input)) { + size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); } - public static Result getSearchAutoCompleteForDataset() { - // if not input, then get all search names (without limit). - String input = request().getQueryString("input"); - int size = 0; // size 0 means no limit - if (isNotBlank(input)) { - size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); - } - - String cacheKey = AUTOCOMPLETE_DATASET_KEY + (isNotBlank(input) ? "." + input : "-all"); - List names = (List) Cache.get(cacheKey); - if (names == null || names.size() == 0) { - names = SearchDAO.getAutoCompleteListDataset(input, size); - Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); - } - - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.put("input", input); - result.set("source", Json.toJson(names)); - return ok(result); + String cacheKey = AUTOCOMPLETE_ALL_KEY + (isNotBlank(input) ? "." + input : "-all"); + List names = (List) Cache.get(cacheKey); + if (names == null || names.size() == 0) { + names = SearchDAO.getAutoCompleteList(input, size); + Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); } - public static Result getSearchAutoCompleteForMetric() { - // if not input, then get all search names (without limit). - String input = request().getQueryString("input"); - int size = 0; // size 0 means no limit - if (isNotBlank(input)) { - size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); - } + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.put("input", input); + result.set("source", Json.toJson(names)); + return ok(result); + } - String cacheKey = AUTOCOMPLETE_METRIC_KEY + (isNotBlank(input) ? "." + input : "-all"); - List names = (List) Cache.get(cacheKey); - if (names == null || names.size() == 0) { - names = SearchDAO.getAutoCompleteListMetric(input, size); - Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); - } - - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.put("input", input); - result.set("source", Json.toJson(names)); - return ok(result); + public static Result getSearchAutoCompleteForDataset() { + // if not input, then get all search names (without limit). + String input = request().getQueryString("input"); + int size = 0; // size 0 means no limit + if (isNotBlank(input)) { + size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); } - public static Result getSearchAutoCompleteForFlow() { - // if not input, then get all search names (without limit). - String input = request().getQueryString("input"); - int size = 0; // size 0 means no limit - if (isNotBlank(input)) { - size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); - } - - String cacheKey = AUTOCOMPLETE_FLOW_KEY + (isNotBlank(input) ? "." + input : "-all"); - List names = (List) Cache.get(cacheKey); - if (names == null || names.size() == 0) { - names = SearchDAO.getAutoCompleteListFlow(input, size); - Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); - } - - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.put("input", input); - result.set("source", Json.toJson(names)); - return ok(result); + String cacheKey = AUTOCOMPLETE_DATASET_KEY + (isNotBlank(input) ? "." + input : "-all"); + List names = (List) Cache.get(cacheKey); + if (names == null || names.size() == 0) { + names = SearchDAO.getAutoCompleteListDataset(input, size); + Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); } - public static Result searchByKeyword() - { - ObjectNode result = Json.newObject(); + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.put("input", input); + result.set("source", Json.toJson(names)); + return ok(result); + } - int page = 1; - int size = 10; - String keyword = request().getQueryString("keyword"); - String category = request().getQueryString("category"); - String source = request().getQueryString("source"); - String pageStr = request().getQueryString("page"); - if (isBlank(pageStr)) - { - page = 1; - } - else - { - try - { - page = Integer.parseInt(pageStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller searchByKeyword wrong page parameter. Error message: " + - e.getMessage()); - page = 1; - } - } - - - String sizeStr = request().getQueryString("size"); - if (isBlank(sizeStr)) - { - size = 10; - } - else - { - try - { - size = Integer.parseInt(sizeStr); - } - catch(NumberFormatException e) - { - Logger.error("Dataset Controller searchByKeyword wrong page parameter. Error message: " + - e.getMessage()); - size = 10; - } - } - - result.put("status", "ok"); - Boolean isDefault = false; - if (isBlank(category)) - { - category = "datasets"; - } - if (isBlank(source) || source.equalsIgnoreCase("all") || source.equalsIgnoreCase("default")) - { - source = null; - } - - String searchEngine = Play.application().configuration().getString(SearchDAO.WHEREHOWS_SEARCH_ENGINE_KEY); - - if (category.toLowerCase().equalsIgnoreCase("metrics")) - { - if(isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", SearchDAO.elasticSearchMetricByKeyword(category, keyword, page, size)); - - } - else - { - result.set("result", SearchDAO.getPagedMetricByKeyword(category, keyword, page, size)); - } - } - else if (category.toLowerCase().equalsIgnoreCase("flows")) - { - if(isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", SearchDAO.elasticSearchFlowByKeyword(category, keyword, page, size)); - - } - else - { - result.set("result", SearchDAO.getPagedFlowByKeyword(category, keyword, page, size)); - } - } - else if (category.toLowerCase().equalsIgnoreCase("jobs")) - { - if(isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", SearchDAO.elasticSearchFlowByKeyword(category, keyword, page, size)); - - } - else - { - result.set("result", SearchDAO.getPagedJobByKeyword(category, keyword, page, size)); - } - } - else if (category.toLowerCase().equalsIgnoreCase("comments")) - { - if(isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", SearchDAO.elasticSearchDatasetByKeyword(category, keyword, null, page, size)); - } - else - { - result.set("result", SearchDAO.getPagedCommentsByKeyword(category, keyword, page, size)); - } - - } - else - { - if(isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) - { - result.set("result", SearchDAO.elasticSearchDatasetByKeyword(category, keyword, source, page, size)); - } - else - { - result.set("result", SearchDAO.getPagedDatasetByKeyword(category, keyword, source, page, size)); - } - } - - return ok(result); + public static Result getSearchAutoCompleteForMetric() { + // if not input, then get all search names (without limit). + String input = request().getQueryString("input"); + int size = 0; // size 0 means no limit + if (isNotBlank(input)) { + size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); } + String cacheKey = AUTOCOMPLETE_METRIC_KEY + (isNotBlank(input) ? "." + input : "-all"); + List names = (List) Cache.get(cacheKey); + if (names == null || names.size() == 0) { + names = SearchDAO.getAutoCompleteListMetric(input, size); + Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); + } + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.put("input", input); + result.set("source", Json.toJson(names)); + return ok(result); + } + + public static Result getSearchAutoCompleteForFlow() { + // if not input, then get all search names (without limit). + String input = request().getQueryString("input"); + int size = 0; // size 0 means no limit + if (isNotBlank(input)) { + size = NumberUtils.toInt(request().getQueryString("size"), DEFAULT_AUTOCOMPLETE_SIZE); + } + + String cacheKey = AUTOCOMPLETE_FLOW_KEY + (isNotBlank(input) ? "." + input : "-all"); + List names = (List) Cache.get(cacheKey); + if (names == null || names.size() == 0) { + names = SearchDAO.getAutoCompleteListFlow(input, size); + Cache.set(cacheKey, names, DEFAULT_AUTOCOMPLETE_CACHE_TIME); + } + + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.put("input", input); + result.set("source", Json.toJson(names)); + return ok(result); + } + + public static Result searchByKeyword() { + ObjectNode result = Json.newObject(); + + int page = 1; + int size = 10; + String keyword = request().getQueryString("keyword"); + String category = request().getQueryString("category"); + String source = request().getQueryString("source"); + String pageStr = request().getQueryString("page"); + if (isBlank(pageStr)) { + page = 1; + } else { + try { + page = Integer.parseInt(pageStr); + } catch (NumberFormatException e) { + Logger.error("Dataset Controller searchByKeyword wrong page parameter. Error message: " + e.getMessage()); + page = 1; + } + } + + String sizeStr = request().getQueryString("size"); + if (isBlank(sizeStr)) { + size = 10; + } else { + try { + size = Integer.parseInt(sizeStr); + } catch (NumberFormatException e) { + Logger.error("Dataset Controller searchByKeyword wrong page parameter. Error message: " + e.getMessage()); + size = 10; + } + } + + result.put("status", "ok"); + Boolean isDefault = false; + if (isBlank(category)) { + category = "datasets"; + } + if (isBlank(source) || source.equalsIgnoreCase("all") || source.equalsIgnoreCase("default")) { + source = null; + } + + String searchEngine = Play.application().configuration().getString(SearchDAO.WHEREHOWS_SEARCH_ENGINE_KEY); + + if (category.toLowerCase().equalsIgnoreCase("metrics")) { + if (isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", SearchDAO.elasticSearchMetricByKeyword(category, keyword, page, size)); + } else { + result.set("result", SearchDAO.getPagedMetricByKeyword(category, keyword, page, size)); + } + } else if (category.toLowerCase().equalsIgnoreCase("flows")) { + if (isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", SearchDAO.elasticSearchFlowByKeyword(category, keyword, page, size)); + } else { + result.set("result", SearchDAO.getPagedFlowByKeyword(category, keyword, page, size)); + } + } else if (category.toLowerCase().equalsIgnoreCase("jobs")) { + if (isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", SearchDAO.elasticSearchFlowByKeyword(category, keyword, page, size)); + } else { + result.set("result", SearchDAO.getPagedJobByKeyword(category, keyword, page, size)); + } + } else if (category.toLowerCase().equalsIgnoreCase("comments")) { + if (isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", SearchDAO.elasticSearchDatasetByKeyword(category, keyword, null, page, size)); + } else { + result.set("result", SearchDAO.getPagedCommentsByKeyword(category, keyword, page, size)); + } + } else { + if (isNotBlank(searchEngine) && searchEngine.equalsIgnoreCase("elasticsearch")) { + result.set("result", SearchDAO.elasticSearchDatasetByKeyword(category, keyword, source, page, size)); + } else { + result.set("result", SearchDAO.getPagedDatasetByKeyword(category, keyword, source, page, size)); + } + } + + return ok(result); + } } diff --git a/wherehows-frontend/app/controllers/api/v1/Tracking.java b/wherehows-frontend/app/controllers/api/v1/Tracking.java index bf55c5652d..0bb45d974e 100644 --- a/wherehows-frontend/app/controllers/api/v1/Tracking.java +++ b/wherehows-frontend/app/controllers/api/v1/Tracking.java @@ -17,42 +17,35 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.TrackingDAO; +import org.apache.commons.lang3.StringUtils; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import org.apache.commons.lang3.StringUtils; -public class Tracking extends Controller -{ - public static Result addTrackingEvent() - { - ObjectNode result = Json.newObject(); - String username = session("user"); - ObjectNode json = Json.newObject(); - ArrayNode res = json.arrayNode(); - JsonNode requestNode = request().body().asJson(); +public class Tracking extends Controller { - if (StringUtils.isNotBlank(username)) - { - String message = TrackingDAO.addTrackingEvent(requestNode, username); - if (StringUtils.isBlank(message)) - { - result.put("status", "success"); - return ok(result); - } - else - { - result.put("status", "failed"); - result.put("message", message); - return badRequest(result); - } - } - else - { - result.put("status", "failed"); - result.put("message", "User is not authenticated"); - return unauthorized(result); - } + public static Result addTrackingEvent() { + ObjectNode result = Json.newObject(); + String username = session("user"); + ObjectNode json = Json.newObject(); + ArrayNode res = json.arrayNode(); + JsonNode requestNode = request().body().asJson(); + + if (StringUtils.isNotBlank(username)) { + String message = TrackingDAO.addTrackingEvent(requestNode, username); + if (StringUtils.isBlank(message)) { + result.put("status", "success"); + return ok(result); + } else { + result.put("status", "failed"); + result.put("message", message); + return badRequest(result); + } + } else { + result.put("status", "failed"); + result.put("message", "User is not authenticated"); + return unauthorized(result); } + } } diff --git a/wherehows-frontend/app/controllers/api/v1/User.java b/wherehows-frontend/app/controllers/api/v1/User.java index bd8f979caa..0fd5a44921 100644 --- a/wherehows-frontend/app/controllers/api/v1/User.java +++ b/wherehows-frontend/app/controllers/api/v1/User.java @@ -16,108 +16,97 @@ package controllers.api.v1; import com.fasterxml.jackson.databind.node.ObjectNode; import dao.UserDAO; import java.util.List; -import wherehows.models.CompanyUser; -import wherehows.models.Group; -import wherehows.models.UserEntity; +import java.util.Map; import org.apache.commons.lang3.StringUtils; import play.cache.Cache; import play.libs.Json; import play.mvc.Controller; import play.mvc.Result; -import java.util.Map; +import wherehows.models.CompanyUser; +import wherehows.models.Group; +import wherehows.models.UserEntity; -public class User extends Controller -{ - private static final String CACHE_INTERNAL_USERS = "internal.users.cache"; - private static final String CACHE_INTERNAL_GROUPS = "internal.groups.cache"; - private static final String CACHE_INTERNAL_ENTITIES = "internal.entities.cache"; +public class User extends Controller { + private static final String CACHE_INTERNAL_USERS = "internal.users.cache"; + private static final String CACHE_INTERNAL_GROUPS = "internal.groups.cache"; + private static final String CACHE_INTERNAL_ENTITIES = "internal.entities.cache"; - public static Result getLoggedInUser() - { - ObjectNode result = Json.newObject(); + public static Result getLoggedInUser() { + ObjectNode result = Json.newObject(); - String username = session("user"); - if (StringUtils.isBlank(username)) - { - result.put("status", "failed"); - result.put("message", "no user in session"); - return ok(result); - } - - wherehows.models.User user = UserDAO.getCurrentUser(username); - if (StringUtils.isBlank(user.userName)) - { - result.put("status", "failed"); - result.put("message", "can't find user info"); - return ok(result); - } - - result.set("user", Json.toJson(user)); - result.put("status", "ok"); - return ok(result); + String username = session("user"); + if (StringUtils.isBlank(username)) { + result.put("status", "failed"); + result.put("message", "no user in session"); + return ok(result); } - public static Result updateSettings() - { - Map params = request().body().asFormUrlEncoded(); - ObjectNode result = Json.newObject(); - - String username = session("user"); - if (StringUtils.isNotBlank(username)) - { - String message = UserDAO.updateUserSettings(params, username); - if (StringUtils.isBlank(message)) - { - result.put("status", "success"); - } - else - { - result.put("status", "failed"); - result.put("message", message); - } - } - else - { - result.put("status", "failed"); - result.put("message", "User is not authenticated"); - } - return ok(result); + wherehows.models.User user = UserDAO.getCurrentUser(username); + if (StringUtils.isBlank(user.userName)) { + result.put("status", "failed"); + result.put("message", "can't find user info"); + return ok(result); } - public static Result getAllCompanyUsers() { - List users = (List) Cache.get(CACHE_INTERNAL_USERS); - if (users == null || users.size() == 0) { - users = UserDAO.getAllCompanyUsers(); - Cache.set(CACHE_INTERNAL_USERS, users, 24 * 3600); // cache for 24 hours - } - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("employees", Json.toJson(users)); - return ok(result); - } + result.set("user", Json.toJson(user)); + result.put("status", "ok"); + return ok(result); + } - public static Result getAllGroups() { - List groups = (List) Cache.get(CACHE_INTERNAL_GROUPS); - if (groups == null || groups.size() == 0) { - groups = UserDAO.getAllGroups(); - Cache.set(CACHE_INTERNAL_GROUPS, groups, 24 * 3600); // cache for 24 hours - } - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("groups", Json.toJson(groups)); - return ok(result); - } + public static Result updateSettings() { + Map params = request().body().asFormUrlEncoded(); + ObjectNode result = Json.newObject(); - public static Result getAllUserEntities() { - List entities = (List) Cache.get(CACHE_INTERNAL_ENTITIES); - if (entities == null || entities.size() == 0) { - entities = UserDAO.getAllUserEntities(); - Cache.set(CACHE_INTERNAL_ENTITIES, entities, 24 * 3600); // cache for 24 hours - } - ObjectNode result = Json.newObject(); - result.put("status", "ok"); - result.set("userEntities", Json.toJson(entities)); - return ok(result); + String username = session("user"); + if (StringUtils.isNotBlank(username)) { + String message = UserDAO.updateUserSettings(params, username); + if (StringUtils.isBlank(message)) { + result.put("status", "success"); + } else { + result.put("status", "failed"); + result.put("message", message); + } + } else { + result.put("status", "failed"); + result.put("message", "User is not authenticated"); } + return ok(result); + } + + public static Result getAllCompanyUsers() { + List users = (List) Cache.get(CACHE_INTERNAL_USERS); + if (users == null || users.size() == 0) { + users = UserDAO.getAllCompanyUsers(); + Cache.set(CACHE_INTERNAL_USERS, users, 24 * 3600); // cache for 24 hours + } + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("employees", Json.toJson(users)); + return ok(result); + } + + public static Result getAllGroups() { + List groups = (List) Cache.get(CACHE_INTERNAL_GROUPS); + if (groups == null || groups.size() == 0) { + groups = UserDAO.getAllGroups(); + Cache.set(CACHE_INTERNAL_GROUPS, groups, 24 * 3600); // cache for 24 hours + } + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("groups", Json.toJson(groups)); + return ok(result); + } + + public static Result getAllUserEntities() { + List entities = (List) Cache.get(CACHE_INTERNAL_ENTITIES); + if (entities == null || entities.size() == 0) { + entities = UserDAO.getAllUserEntities(); + Cache.set(CACHE_INTERNAL_ENTITIES, entities, 24 * 3600); // cache for 24 hours + } + ObjectNode result = Json.newObject(); + result.put("status", "ok"); + result.set("userEntities", Json.toJson(entities)); + return ok(result); + } } diff --git a/wherehows-frontend/app/utils/Dataset.java b/wherehows-frontend/app/utils/Dataset.java index 6f735e457d..fed7ea5e5c 100644 --- a/wherehows-frontend/app/utils/Dataset.java +++ b/wherehows-frontend/app/utils/Dataset.java @@ -15,99 +15,79 @@ package utils; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; -import org.apache.commons.lang3.StringUtils; - -import play.Logger; -import play.cache.Cache; import java.io.BufferedReader; import java.io.FileReader; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import org.apache.commons.lang3.StringUtils; +import play.Logger; +import play.cache.Cache; -public class Dataset -{ - private static Cache currentCache = null; - public static final String URNIDMAPKey = "impactUrnIDMap"; +public class Dataset { + public static final String URNIDMAPKey = "impactUrnIDMap"; + private static Cache currentCache = null; - public static Cache getChacheInstance() - { - if (currentCache == null) - { - currentCache = new Cache(); - } - return currentCache; + public static Cache getChacheInstance() { + if (currentCache == null) { + currentCache = new Cache(); + } + return currentCache; + } + + public static JsonNode addDatasetIDtoImpactAnalysisResult(JsonNode impacts) { + if (impacts == null || (!impacts.isArray())) { + return impacts; } - public static JsonNode addDatasetIDtoImpactAnalysisResult(JsonNode impacts) - { - if (impacts == null || (!impacts.isArray())) - { - return impacts; - } + try { + Map urnIDMap = new HashMap(); + if (getChacheInstance().get("URNIDMAPKey") != null) { + urnIDMap = (Map) getChacheInstance().get("URNIDMAPKey"); + } else { + FileReader fr = new FileReader("/var/tmp/wherehows/resource/dataset_urn_list.txt"); + BufferedReader br = new BufferedReader(fr); + String line; - try - { - Map urnIDMap = new HashMap(); - if (getChacheInstance().get("URNIDMAPKey") != null) - { - urnIDMap = (Map)getChacheInstance().get("URNIDMAPKey"); - } - else - { - FileReader fr = new FileReader("/var/tmp/wherehows/resource/dataset_urn_list.txt"); - BufferedReader br = new BufferedReader(fr); - String line; - - while((line = br.readLine()) != null) - { - String record = line.substring(0, line.length()); - String[] values = record.split("\t"); - if (values != null && values.length == 2) - { - String urn = values[0]; - Integer id = Integer.parseInt(values[1]); - if (StringUtils.isNotBlank(urn) && id != null && id != 0) - { - urnIDMap.put(urn, id); - } - } - } - if (urnIDMap != null && urnIDMap.size() > 0) - { - getChacheInstance().set(URNIDMAPKey, urnIDMap); - } - } - - if (urnIDMap != null && urnIDMap.size() > 0) - { - Iterator arrayIterator = impacts.elements(); - if (arrayIterator != null) - { - while (arrayIterator.hasNext()) - { - JsonNode node = arrayIterator.next(); - if (node.isContainerNode() && node.has("urn")) - { - String urn = node.get("urn").asText(); - ObjectNode objectNode = (ObjectNode)node; - int index = urn.lastIndexOf("/"); - String name = urn.substring(index+1); - objectNode.put("name", name); - if (urnIDMap.containsKey(urn)) - { - Integer id = urnIDMap.get(urn); - objectNode.put("id", id); - } - } - } - } + while ((line = br.readLine()) != null) { + String record = line.substring(0, line.length()); + String[] values = record.split("\t"); + if (values != null && values.length == 2) { + String urn = values[0]; + Integer id = Integer.parseInt(values[1]); + if (StringUtils.isNotBlank(urn) && id != null && id != 0) { + urnIDMap.put(urn, id); } + } } - catch (Exception e) { - Logger.error(e.getMessage()); + if (urnIDMap != null && urnIDMap.size() > 0) { + getChacheInstance().set(URNIDMAPKey, urnIDMap); } - return impacts; + } + + if (urnIDMap != null && urnIDMap.size() > 0) { + Iterator arrayIterator = impacts.elements(); + if (arrayIterator != null) { + while (arrayIterator.hasNext()) { + JsonNode node = arrayIterator.next(); + if (node.isContainerNode() && node.has("urn")) { + String urn = node.get("urn").asText(); + ObjectNode objectNode = (ObjectNode) node; + int index = urn.lastIndexOf("/"); + String name = urn.substring(index + 1); + objectNode.put("name", name); + if (urnIDMap.containsKey(urn)) { + Integer id = urnIDMap.get(urn); + objectNode.put("id", id); + } + } + } + } + } + } catch (Exception e) { + Logger.error(e.getMessage()); } + return impacts; + } } \ No newline at end of file diff --git a/wherehows-frontend/app/utils/Lineage.java b/wherehows-frontend/app/utils/Lineage.java index dbd74eebfd..541ab07a6a 100644 --- a/wherehows-frontend/app/utils/Lineage.java +++ b/wherehows-frontend/app/utils/Lineage.java @@ -13,85 +13,69 @@ */ package utils; -import wherehows.models.LineagePathInfo; -import org.apache.commons.lang3.StringUtils; - import java.util.List; +import org.apache.commons.lang3.StringUtils; +import wherehows.models.LineagePathInfo; -public class Lineage -{ - public static final String URNIDMAPKey = "impactUrnIDMap"; +public class Lineage { - public static LineagePathInfo convertFromURN(String urn) - { - if (StringUtils.isBlank(urn)) - return null; + public static final String URNIDMAPKey = "impactUrnIDMap"; - LineagePathInfo pathInfo = new LineagePathInfo(); - - String[] pathArray = urn.split(":///"); - if (pathArray != null && pathArray.length > 0) - { - String storageType = pathArray[0]; - pathInfo.storageType = storageType; - if (StringUtils.isNotBlank(storageType)) - { - if (pathArray.length > 1 && StringUtils.isNotBlank(pathArray[1])) - { - pathInfo.filePath = "/" + pathArray[1]; - } - else - { - pathInfo.storageType = null; - pathInfo.schemaName = null; - pathInfo.filePath = urn; - } - } - else - { - pathInfo.storageType = null; - pathInfo.schemaName = null; - pathInfo.filePath = urn; - } - } - - return pathInfo; + public static LineagePathInfo convertFromURN(String urn) { + if (StringUtils.isBlank(urn)) { + return null; } - public static String convertToURN(LineagePathInfo pathInfo) - { - if (pathInfo == null) - return null; + LineagePathInfo pathInfo = new LineagePathInfo(); - String filePath = ""; - if (StringUtils.isNotBlank(pathInfo.filePath)) - { - if(pathInfo.filePath.charAt(0) == '/') - { - filePath = pathInfo.filePath.substring(1); - } - else - { - filePath = pathInfo.filePath; - } + String[] pathArray = urn.split(":///"); + if (pathArray != null && pathArray.length > 0) { + String storageType = pathArray[0]; + pathInfo.storageType = storageType; + if (StringUtils.isNotBlank(storageType)) { + if (pathArray.length > 1 && StringUtils.isNotBlank(pathArray[1])) { + pathInfo.filePath = "/" + pathArray[1]; + } else { + pathInfo.storageType = null; + pathInfo.schemaName = null; + pathInfo.filePath = urn; } - return pathInfo.storageType.toLowerCase() + ":///" + filePath; + } else { + pathInfo.storageType = null; + pathInfo.schemaName = null; + pathInfo.filePath = urn; + } } - public static boolean isInList(List list, String source) - { - if (list == null || list.size() == 0 || StringUtils.isBlank(source)) - { - return false; - } - for(String s : list) - { - if (source.equalsIgnoreCase(s)) - { - return true; - } - } - return false; + return pathInfo; + } + + public static String convertToURN(LineagePathInfo pathInfo) { + if (pathInfo == null) { + return null; } + + String filePath = ""; + if (StringUtils.isNotBlank(pathInfo.filePath)) { + if (pathInfo.filePath.charAt(0) == '/') { + filePath = pathInfo.filePath.substring(1); + } else { + filePath = pathInfo.filePath; + } + } + return pathInfo.storageType.toLowerCase() + ":///" + filePath; + } + + public static boolean isInList(List list, String source) { + if (list == null || list.size() == 0 || StringUtils.isBlank(source)) { + return false; + } + for (String s : list) { + if (source.equalsIgnoreCase(s)) { + return true; + } + } + return false; + } } diff --git a/wherehows-frontend/app/utils/SampleData.java b/wherehows-frontend/app/utils/SampleData.java index 28f0146583..6d73c5bfdc 100644 --- a/wherehows-frontend/app/utils/SampleData.java +++ b/wherehows-frontend/app/utils/SampleData.java @@ -17,205 +17,170 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.TextNode; -import org.apache.commons.lang3.StringUtils; - import java.util.Arrays; import java.util.Iterator; +import org.apache.commons.lang3.StringUtils; -public class SampleData -{ - private final static String MEMBER_ID = "memberId"; - private final static String TREE_ID = "treeId"; - private final static String TRACKING_ID = "trackingId"; - private final static String IP_AS_BYTES_1 = "ipAsBytes"; - private final static String IP_AS_BYTES = "ip_as_bytes"; - private final static String ATTACHMENTS = "attachments"; - private final static String PAYLOAD = "payload"; - private final static String MEDIA = "MEDIA"; - private final static String HEADER = "header"; - private final static String GUID = "guid"; - private final static String AUDITHEADER = "auditHeader"; - private final static String MESSAGE_ID = "messageId"; - private final static String REQUEST = "request"; - private final static String REQUEST_HEADER = "requestHeader"; - public static String convertToHexString(JsonNode node) - { - String result = null; - if (node != null) - { - if (node.isArray()) - { - Iterator arrayIterator = node.elements(); - StringBuilder sb = new StringBuilder(); - while (arrayIterator.hasNext()) { - JsonNode elementNode = arrayIterator.next(); - if (elementNode != null) - { - String text = elementNode.asText(); - if (StringUtils.isNotBlank(text)) - { - byte[] bytes = text.getBytes(); - if (bytes != null && bytes.length > 0) - { - sb.append(String.format("%02x", text.getBytes()[0])); - } - } - } - } - result = sb.toString(); - } - else - { - result = node.asText(); +public class SampleData { + private final static String MEMBER_ID = "memberId"; + private final static String TREE_ID = "treeId"; + private final static String TRACKING_ID = "trackingId"; + private final static String IP_AS_BYTES_1 = "ipAsBytes"; + private final static String IP_AS_BYTES = "ip_as_bytes"; + private final static String ATTACHMENTS = "attachments"; + private final static String PAYLOAD = "payload"; + private final static String MEDIA = "MEDIA"; + private final static String HEADER = "header"; + private final static String GUID = "guid"; + private final static String AUDITHEADER = "auditHeader"; + private final static String MESSAGE_ID = "messageId"; + private final static String REQUEST = "request"; + private final static String REQUEST_HEADER = "requestHeader"; + + public static String convertToHexString(JsonNode node) { + String result = null; + if (node != null) { + if (node.isArray()) { + Iterator arrayIterator = node.elements(); + StringBuilder sb = new StringBuilder(); + while (arrayIterator.hasNext()) { + JsonNode elementNode = arrayIterator.next(); + if (elementNode != null) { + String text = elementNode.asText(); + if (StringUtils.isNotBlank(text)) { + byte[] bytes = text.getBytes(); + if (bytes != null && bytes.length > 0) { + sb.append(String.format("%02x", text.getBytes()[0])); + } } + } } - - return result; + result = sb.toString(); + } else { + result = node.asText(); + } } - public static JsonNode secureSampleData(JsonNode sample) { + return result; + } - String[] nameArray = new String[]{"member_sk", "membersk", "member_id", "memberid", "mem_sk", "mem_id"}; - if (sample != null && sample.has("sample")) { - JsonNode sampleNode = sample.get("sample"); - if (sampleNode != null && sampleNode.has("columnNames") && sampleNode.has("data")) { - JsonNode namesNode = sampleNode.get("columnNames"); - JsonNode dataNode = sampleNode.get("data"); - if (namesNode != null && namesNode.isArray()) { - for (int i = 0; i < namesNode.size(); i++) { - if (Arrays.asList(nameArray).contains(namesNode.get(i).asText().toLowerCase())) { - if (dataNode != null && dataNode.isArray()) { - for (JsonNode node : dataNode) { - JsonNode valueNode = node.get(i); - ((ArrayNode) node).set(i, new TextNode("********")); - } - } - } - } - } - } - else - { - int index = 0; - Iterator arrayIterator = sampleNode.elements(); - while (arrayIterator.hasNext()) { - JsonNode sampleRowNode = arrayIterator.next(); - if (sampleRowNode != null) - { - if (sampleRowNode.has(MEMBER_ID)) - { - ((ObjectNode) sampleRowNode).set(MEMBER_ID, new TextNode("********")); - } - if (sampleRowNode.has(TREE_ID)) - { - JsonNode treeIdNode = sampleRowNode.get(TREE_ID); - String convertedValue = convertToHexString(treeIdNode); - ((ObjectNode) sampleRowNode).set(TREE_ID, new TextNode(convertedValue)); - } - if (sampleRowNode.has(TRACKING_ID)) - { - JsonNode trackingIdNode = sampleRowNode.get(TRACKING_ID); - String convertedValue = convertToHexString(trackingIdNode); - ((ObjectNode) sampleRowNode).set(TRACKING_ID, new TextNode(convertedValue)); - } - if (sampleRowNode.has(IP_AS_BYTES)) - { - JsonNode ipNode = sampleRowNode.get(IP_AS_BYTES); - String convertedValue = convertToHexString(ipNode); - ((ObjectNode) sampleRowNode).set(IP_AS_BYTES, new TextNode(convertedValue)); - } - if (sampleRowNode.has(IP_AS_BYTES_1)) - { - JsonNode ipNode = sampleRowNode.get(IP_AS_BYTES_1); - String convertedValue = convertToHexString(ipNode); - ((ObjectNode) sampleRowNode).set(IP_AS_BYTES_1, new TextNode(convertedValue)); - } - if (sampleRowNode.has(ATTACHMENTS)) - { - JsonNode attachmentNode = sampleRowNode.get(ATTACHMENTS); - if (attachmentNode.has(PAYLOAD)) - { - JsonNode payloadNode = attachmentNode.get(PAYLOAD); - String value = "** " + Integer.toString(payloadNode.size()) + " bytes binary data **"; - ((ObjectNode) attachmentNode).set(PAYLOAD, new TextNode(value)); - } - } - if (sampleRowNode.has(MEDIA)) - { - JsonNode mediaNode = sampleRowNode.get(MEDIA); - String convertedValue = convertToHexString(mediaNode); - ((ObjectNode) sampleRowNode).set(MEDIA, new TextNode(convertedValue)); - } - if (sampleRowNode.has(HEADER)) - { - JsonNode headerNode = sampleRowNode.get(HEADER); - if (headerNode != null) - { - if (headerNode.has(MEMBER_ID)) - { - ((ObjectNode) headerNode).set(MEMBER_ID, new TextNode("********")); - } - if (headerNode.has(GUID)) - { - JsonNode guidNode = headerNode.get(GUID); - String convertedValue = convertToHexString(guidNode); - ((ObjectNode) headerNode).set(GUID, new TextNode(convertedValue)); - } - if (headerNode.has(TREE_ID)) - { - JsonNode headerTreeIdNode = headerNode.get(TREE_ID); - String convertedValue = convertToHexString(headerTreeIdNode); - ((ObjectNode) headerNode).set(TREE_ID, new TextNode(convertedValue)); - } - if (headerNode.has(AUDITHEADER)) - { - JsonNode auditHeaderNode = headerNode.get(AUDITHEADER); - if (auditHeaderNode != null && auditHeaderNode.has(MESSAGE_ID)) - { - JsonNode messageIdNode = auditHeaderNode.get(MESSAGE_ID); - String convertedValue = convertToHexString(messageIdNode); - ((ObjectNode) auditHeaderNode).set(MESSAGE_ID, new TextNode(convertedValue)); - } - } - } - } - if (sampleRowNode.has(REQUEST)) - { - JsonNode requestNode = sampleRowNode.get(REQUEST); - if (requestNode != null && requestNode.has(ATTACHMENTS)) - { - JsonNode attachmentsNode = requestNode.get(ATTACHMENTS); - if (attachmentsNode != null && attachmentsNode.has(PAYLOAD)) - { - JsonNode payloadNode = attachmentsNode.get(PAYLOAD); - String value = "** " + - Integer.toString(payloadNode.size()) + - " bytes binary data **"; - ((ObjectNode) attachmentsNode).set(PAYLOAD, new TextNode(value)); - } - } - } - if (sampleRowNode.has(REQUEST_HEADER)) - { - JsonNode requestHeaderNode = sampleRowNode.get(REQUEST_HEADER); - if (requestHeaderNode != null && requestHeaderNode.has(IP_AS_BYTES)) - { - JsonNode ipNode = requestHeaderNode.get(IP_AS_BYTES); - String convertedValue = convertToHexString(ipNode); - ((ObjectNode) requestHeaderNode).set(IP_AS_BYTES, new TextNode(convertedValue)); - } - if (requestHeaderNode != null && requestHeaderNode.has(IP_AS_BYTES_1)) - { - JsonNode ipNode = requestHeaderNode.get(IP_AS_BYTES_1); - String convertedValue = convertToHexString(ipNode); - ((ObjectNode) requestHeaderNode).set(IP_AS_BYTES_1, new TextNode(convertedValue)); - } - } - } + public static JsonNode secureSampleData(JsonNode sample) { + + String[] nameArray = new String[]{"member_sk", "membersk", "member_id", "memberid", "mem_sk", "mem_id"}; + if (sample != null && sample.has("sample")) { + JsonNode sampleNode = sample.get("sample"); + if (sampleNode != null && sampleNode.has("columnNames") && sampleNode.has("data")) { + JsonNode namesNode = sampleNode.get("columnNames"); + JsonNode dataNode = sampleNode.get("data"); + if (namesNode != null && namesNode.isArray()) { + for (int i = 0; i < namesNode.size(); i++) { + if (Arrays.asList(nameArray).contains(namesNode.get(i).asText().toLowerCase())) { + if (dataNode != null && dataNode.isArray()) { + for (JsonNode node : dataNode) { + JsonNode valueNode = node.get(i); + ((ArrayNode) node).set(i, new TextNode("********")); } + } } + } } - return sample; + } else { + int index = 0; + Iterator arrayIterator = sampleNode.elements(); + while (arrayIterator.hasNext()) { + JsonNode sampleRowNode = arrayIterator.next(); + if (sampleRowNode != null) { + if (sampleRowNode.has(MEMBER_ID)) { + ((ObjectNode) sampleRowNode).set(MEMBER_ID, new TextNode("********")); + } + if (sampleRowNode.has(TREE_ID)) { + JsonNode treeIdNode = sampleRowNode.get(TREE_ID); + String convertedValue = convertToHexString(treeIdNode); + ((ObjectNode) sampleRowNode).set(TREE_ID, new TextNode(convertedValue)); + } + if (sampleRowNode.has(TRACKING_ID)) { + JsonNode trackingIdNode = sampleRowNode.get(TRACKING_ID); + String convertedValue = convertToHexString(trackingIdNode); + ((ObjectNode) sampleRowNode).set(TRACKING_ID, new TextNode(convertedValue)); + } + if (sampleRowNode.has(IP_AS_BYTES)) { + JsonNode ipNode = sampleRowNode.get(IP_AS_BYTES); + String convertedValue = convertToHexString(ipNode); + ((ObjectNode) sampleRowNode).set(IP_AS_BYTES, new TextNode(convertedValue)); + } + if (sampleRowNode.has(IP_AS_BYTES_1)) { + JsonNode ipNode = sampleRowNode.get(IP_AS_BYTES_1); + String convertedValue = convertToHexString(ipNode); + ((ObjectNode) sampleRowNode).set(IP_AS_BYTES_1, new TextNode(convertedValue)); + } + if (sampleRowNode.has(ATTACHMENTS)) { + JsonNode attachmentNode = sampleRowNode.get(ATTACHMENTS); + if (attachmentNode.has(PAYLOAD)) { + JsonNode payloadNode = attachmentNode.get(PAYLOAD); + String value = "** " + Integer.toString(payloadNode.size()) + " bytes binary data **"; + ((ObjectNode) attachmentNode).set(PAYLOAD, new TextNode(value)); + } + } + if (sampleRowNode.has(MEDIA)) { + JsonNode mediaNode = sampleRowNode.get(MEDIA); + String convertedValue = convertToHexString(mediaNode); + ((ObjectNode) sampleRowNode).set(MEDIA, new TextNode(convertedValue)); + } + if (sampleRowNode.has(HEADER)) { + JsonNode headerNode = sampleRowNode.get(HEADER); + if (headerNode != null) { + if (headerNode.has(MEMBER_ID)) { + ((ObjectNode) headerNode).set(MEMBER_ID, new TextNode("********")); + } + if (headerNode.has(GUID)) { + JsonNode guidNode = headerNode.get(GUID); + String convertedValue = convertToHexString(guidNode); + ((ObjectNode) headerNode).set(GUID, new TextNode(convertedValue)); + } + if (headerNode.has(TREE_ID)) { + JsonNode headerTreeIdNode = headerNode.get(TREE_ID); + String convertedValue = convertToHexString(headerTreeIdNode); + ((ObjectNode) headerNode).set(TREE_ID, new TextNode(convertedValue)); + } + if (headerNode.has(AUDITHEADER)) { + JsonNode auditHeaderNode = headerNode.get(AUDITHEADER); + if (auditHeaderNode != null && auditHeaderNode.has(MESSAGE_ID)) { + JsonNode messageIdNode = auditHeaderNode.get(MESSAGE_ID); + String convertedValue = convertToHexString(messageIdNode); + ((ObjectNode) auditHeaderNode).set(MESSAGE_ID, new TextNode(convertedValue)); + } + } + } + } + if (sampleRowNode.has(REQUEST)) { + JsonNode requestNode = sampleRowNode.get(REQUEST); + if (requestNode != null && requestNode.has(ATTACHMENTS)) { + JsonNode attachmentsNode = requestNode.get(ATTACHMENTS); + if (attachmentsNode != null && attachmentsNode.has(PAYLOAD)) { + JsonNode payloadNode = attachmentsNode.get(PAYLOAD); + String value = "** " + Integer.toString(payloadNode.size()) + " bytes binary data **"; + ((ObjectNode) attachmentsNode).set(PAYLOAD, new TextNode(value)); + } + } + } + if (sampleRowNode.has(REQUEST_HEADER)) { + JsonNode requestHeaderNode = sampleRowNode.get(REQUEST_HEADER); + if (requestHeaderNode != null && requestHeaderNode.has(IP_AS_BYTES)) { + JsonNode ipNode = requestHeaderNode.get(IP_AS_BYTES); + String convertedValue = convertToHexString(ipNode); + ((ObjectNode) requestHeaderNode).set(IP_AS_BYTES, new TextNode(convertedValue)); + } + if (requestHeaderNode != null && requestHeaderNode.has(IP_AS_BYTES_1)) { + JsonNode ipNode = requestHeaderNode.get(IP_AS_BYTES_1); + String convertedValue = convertToHexString(ipNode); + ((ObjectNode) requestHeaderNode).set(IP_AS_BYTES_1, new TextNode(convertedValue)); + } + } + } + } + } } + return sample; + } } \ No newline at end of file diff --git a/wherehows-frontend/app/utils/SchemaHistory.java b/wherehows-frontend/app/utils/SchemaHistory.java index 856197da37..945e14336a 100644 --- a/wherehows-frontend/app/utils/SchemaHistory.java +++ b/wherehows-frontend/app/utils/SchemaHistory.java @@ -14,104 +14,87 @@ package utils; import com.fasterxml.jackson.databind.JsonNode; - import java.util.Iterator; import java.util.Map; -public class SchemaHistory -{ - public static int calculateDict(JsonNode node) { - int count = 0; - Iterator> iterator = node.fields(); - while (iterator.hasNext()) - { - Map.Entry element = iterator.next(); - if (element.getValue().isArray()) { - if (element.getKey().toLowerCase() == "fields") - { - count += element.getValue().size(); - } - count += calculateList(element.getValue()); - } else if (element.getValue().isContainerNode()) { - if (element.getKey().toLowerCase() == "fields") - { - count += element.getValue().size(); - } - count += calculateDict(element.getValue()); - } - else if (element.getKey().toLowerCase() == "fields") - { - count += 1; - } +public class SchemaHistory { + + public static int calculateDict(JsonNode node) { + int count = 0; + Iterator> iterator = node.fields(); + while (iterator.hasNext()) { + Map.Entry element = iterator.next(); + if (element.getValue().isArray()) { + if (element.getKey().toLowerCase() == "fields") { + count += element.getValue().size(); } - return count; + count += calculateList(element.getValue()); + } else if (element.getValue().isContainerNode()) { + if (element.getKey().toLowerCase() == "fields") { + count += element.getValue().size(); + } + count += calculateDict(element.getValue()); + } else if (element.getKey().toLowerCase() == "fields") { + count += 1; + } } + return count; + } - public static int calculateList(JsonNode node) { - int count = 0; - Iterator arrayIterator = node.elements(); - while (arrayIterator.hasNext()) { - JsonNode element = arrayIterator.next(); - if (element.isArray()) { - count += calculateList(element); - } else if (element.isContainerNode()) { - count += calculateDict(element); - } - } - return count; + public static int calculateList(JsonNode node) { + int count = 0; + Iterator arrayIterator = node.elements(); + while (arrayIterator.hasNext()) { + JsonNode element = arrayIterator.next(); + if (element.isArray()) { + count += calculateList(element); + } else if (element.isContainerNode()) { + count += calculateDict(element); + } } + return count; + } - public static int calculateFieldCount(JsonNode node) - { - int count = 0; - JsonNode schemaNode = null; - - if (node != null && node.has("schema")) { - schemaNode = node.get("schema"); - } - else - { - schemaNode = node; - } - if (schemaNode.isArray()) { - - Iterator arrayIterator = schemaNode.elements(); - while (arrayIterator.hasNext()) { - JsonNode element = arrayIterator.next(); - if (element.isArray()) { - count += calculateList(element); - } else if (element.isContainerNode()) { - count += calculateDict(element); - } - } - } - else if (schemaNode.isContainerNode()) - { - Iterator> iterator = schemaNode.fields(); - while (iterator.hasNext()) - { - Map.Entry element = iterator.next(); - if (element.getValue().isArray()) { - if (element.getKey().toLowerCase() == "fields") - { - count += element.getValue().size(); - } - count += calculateList(element.getValue()); - } else if (element.getValue().isContainerNode()) { - if (element.getKey().toLowerCase() == "fields") - { - count += element.getValue().size(); - } - count += calculateDict(element.getValue()); - } - else if (element.getKey().toLowerCase() == "fields") - { - count += 1; - } - } - } - return count; + public static int calculateFieldCount(JsonNode node) { + int count = 0; + JsonNode schemaNode = null; + if (node != null && node.has("schema")) { + schemaNode = node.get("schema"); + } else { + schemaNode = node; } + if (schemaNode.isArray()) { + + Iterator arrayIterator = schemaNode.elements(); + while (arrayIterator.hasNext()) { + JsonNode element = arrayIterator.next(); + if (element.isArray()) { + count += calculateList(element); + } else if (element.isContainerNode()) { + count += calculateDict(element); + } + } + } else if (schemaNode.isContainerNode()) { + Iterator> iterator = schemaNode.fields(); + while (iterator.hasNext()) { + Map.Entry element = iterator.next(); + if (element.getValue().isArray()) { + if (element.getKey().toLowerCase() == "fields") { + count += element.getValue().size(); + } + count += calculateList(element.getValue()); + } else if (element.getValue().isContainerNode()) { + if (element.getKey().toLowerCase() == "fields") { + count += element.getValue().size(); + } + count += calculateDict(element.getValue()); + } else if (element.getKey().toLowerCase() == "fields") { + count += 1; + } + } + } + return count; + } } \ No newline at end of file diff --git a/wherehows-frontend/app/utils/Search.java b/wherehows-frontend/app/utils/Search.java index 261963f35c..9a932fcb2c 100644 --- a/wherehows-frontend/app/utils/Search.java +++ b/wherehows-frontend/app/utils/Search.java @@ -14,1274 +14,1052 @@ package utils; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ObjectNode; +import java.util.ArrayList; +import java.util.List; import org.apache.commons.lang3.StringUtils; - import play.Logger; -import play.cache.Cache; import play.libs.Json; -import java.io.BufferedReader; -import java.io.FileReader; -import java.util.*; -public class Search -{ - private final static String datasetShouldQueryUnit = - "{\"bool\": " + - "{\"should\": [" + - "{\"wildcard\": {\"name\": {\"value\": \"*$VALUE*\", \"boost\": 16}}}, " + - "{\"prefix\": {\"name\": {\"value\": \"$VALUE\", \"boost\": 32}}}, " + - "{\"match\": {\"name\": {\"query\": \"$VALUE\", \"boost\": 48}}}, " + - "{\"match\": {\"name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 64}}}, " + - "{\"wildcard\": {\"urn\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + - "{\"wildcard\": {\"field\": {\"value\": \"*$VALUE*\", \"boost\": 4}}}, " + - "{\"wildcard\": {\"properties\": {\"value\": \"*$VALUE*\", \"boost\": 2}}}, " + - "{\"wildcard\": {\"schema\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}" + - "]}" + - "}"; +public class Search { + public final static String DATASET_CATEGORY = "datasets"; + public final static String METRIC_CATEGORY = "metrics"; + public final static String COMMENT_CATEGORY = "comments"; + public final static String FLOW_CATEGORY = "flows"; + public final static String JOB_CATEGORY = "jobs"; + private final static String datasetShouldQueryUnit = + "{\"bool\": " + "{\"should\": [" + "{\"wildcard\": {\"name\": {\"value\": \"*$VALUE*\", \"boost\": 16}}}, " + + "{\"prefix\": {\"name\": {\"value\": \"$VALUE\", \"boost\": 32}}}, " + + "{\"match\": {\"name\": {\"query\": \"$VALUE\", \"boost\": 48}}}, " + + "{\"match\": {\"name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 64}}}, " + + "{\"wildcard\": {\"urn\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + + "{\"wildcard\": {\"field\": {\"value\": \"*$VALUE*\", \"boost\": 4}}}, " + + "{\"wildcard\": {\"properties\": {\"value\": \"*$VALUE*\", \"boost\": 2}}}, " + + "{\"wildcard\": {\"schema\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}" + "]}" + "}"; + private final static String metricShouldQueryUnit = + "{\"bool\": " + "{\"should\": [" + "{\"wildcard\": {\"metric_name\": {\"value\": \"*$VALUE*\", \"boost\": 32}}}, " + + "{\"prefix\": {\"metric_name\": {\"value\": \"$VALUE\", \"boost\": 36}}}, " + + "{\"match\": {\"metric_name\": {\"query\": \"$VALUE\", \"boost\": 48}}}, " + + "{\"match\": {\"metric_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 64}}}, " + + "{\"wildcard\": {\"dashboard_name\": {\"value\": \"*$VALUE*\", \"boost\": 20}}}," + + "{\"prefix\": {\"dashboard_name\": {\"value\": \"$VALUE\", \"boost\": 24}}}, " + + "{\"match\": {\"dashboard_name\": {\"query\": \"$VALUE\", \"boost\": 26}}}, " + + "{\"match\": {\"dashboard_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 28}}}, " + + "{\"wildcard\": {\"metric_group\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + + "{\"prefix\": {\"metric_group\": {\"value\": \"$VALUE\", \"boost\": 12}}}, " + + "{\"match\": {\"metric_group\": {\"query\": \"$VALUE\", \"boost\": 14}}}, " + + "{\"match\": {\"metric_group\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 16}}}, " + + "{\"wildcard\": {\"metric_category\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + + "{\"prefix\": {\"metric_category\": {\"value\": \"$VALUE\", \"boost\": 2}}}, " + + "{\"match\": {\"metric_category\": {\"query\": \"$VALUE\", \"boost\": 3}}}, " + + "{\"match\": {\"metric_category\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 4}}}" + "]" + + "}" + "}"; + private final static String commentsQuery = "{\"bool\":" + "{ \"should\": [" + + "{\"has_child\": {\"type\": \"comment\", \"query\": {\"match\" : {\"text\" : \"$VALUE\"}}}}, " + + "{\"has_child\": {\"type\": \"field\", \"query\": {\"match\": {\"comments\" : \"$VALUE\" }}}}" + "]" + "}" + + "}"; + private final static String flowShouldQueryUnit = + "{\"bool\": " + "{\"should\": " + "[{\"wildcard\": {\"app_code\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + + "{\"prefix\": {\"app_code\": {\"value\": \"$VALUE\", \"boost\": 2}}}, " + + "{\"match\": {\"app_code\": {\"query\": \"$VALUE\", \"boost\": 3}}}, " + + "{\"match\": {\"app_code\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 4}}}, " + + "{\"wildcard\": {\"flow_name\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + + "{\"prefix\": {\"flow_name\": {\"value\": \"$VALUE\", \"boost\": 16}}}, " + + "{\"match\": {\"flow_name\": {\"query\": \"$VALUE\", \"boost\": 24}}}, " + + "{\"match\": {\"flow_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 32}}}, " + + "{\"wildcard\": {\"jobs.job_name\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + + "{\"prefix\": {\"jobs.job_name\": {\"value\": \"$VALUE\", \"boost\": 16}}}, " + + "{\"match\": {\"jobs.job_name\": {\"query\": \"$VALUE\", \"boost\": 24}}}, " + + "{\"match\": {\"jobs.job_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 32}}}" + "]" + "}" + + "}"; + private final static String suggesterQueryTemplateSub = + "{" + "\"text\": \"$SEARCHKEYWORD\", " + "\"simple_phrase\": { " + "\"phrase\": { " + "\"field\": \"$FIELD\", " + + "\"size\": 1, " + "\"direct_generator\": [ " + "{ " + "\"field\": \"$FIELD\", " + + "\"suggest_mode\": \"always\", " + "\"min_word_length\": 1 " + "}" + "]" + "}" + "}" + "}"; + private final static String completionSuggesterQuery = + "{" + "\"wh-suggest\": { " + "\"text\": \"$SEARCHKEYWORD\", " + "\"completion\": { " + "\"field\": \"$FIELD\", " + + "\"size\": $LIMIT " + "} " + "} " + "}"; + private final static String datasetFilterQueryUnit = "{" + "\"match\": { " + "\"source\": \"$SOURCE\" " + "} " + "}"; + public static ObjectNode generateElasticSearchCompletionSuggesterQuery(String field, String searchKeyword, + int limit) { + if (StringUtils.isBlank(searchKeyword)) { + return null; + } - private final static String metricShouldQueryUnit = - "{\"bool\": " + - "{\"should\": [" + - "{\"wildcard\": {\"metric_name\": {\"value\": \"*$VALUE*\", \"boost\": 32}}}, " + - "{\"prefix\": {\"metric_name\": {\"value\": \"$VALUE\", \"boost\": 36}}}, " + - "{\"match\": {\"metric_name\": {\"query\": \"$VALUE\", \"boost\": 48}}}, " + - "{\"match\": {\"metric_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 64}}}, " + - "{\"wildcard\": {\"dashboard_name\": {\"value\": \"*$VALUE*\", \"boost\": 20}}}," + - "{\"prefix\": {\"dashboard_name\": {\"value\": \"$VALUE\", \"boost\": 24}}}, " + - "{\"match\": {\"dashboard_name\": {\"query\": \"$VALUE\", \"boost\": 26}}}, " + - "{\"match\": {\"dashboard_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 28}}}, " + - "{\"wildcard\": {\"metric_group\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + - "{\"prefix\": {\"metric_group\": {\"value\": \"$VALUE\", \"boost\": 12}}}, " + - "{\"match\": {\"metric_group\": {\"query\": \"$VALUE\", \"boost\": 14}}}, " + - "{\"match\": {\"metric_group\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 16}}}, " + - "{\"wildcard\": {\"metric_category\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + - "{\"prefix\": {\"metric_category\": {\"value\": \"$VALUE\", \"boost\": 2}}}, " + - "{\"match\": {\"metric_category\": {\"query\": \"$VALUE\", \"boost\": 3}}}, " + - "{\"match\": {\"metric_category\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 4}}}" + - "]" + - "}" + - "}"; + String queryTemplate = completionSuggesterQuery; + String query = queryTemplate.replace("$SEARCHKEYWORD", searchKeyword.toLowerCase()); - private final static String commentsQuery = - "{\"bool\":" + - "{ \"should\": [" + - "{\"has_child\": {\"type\": \"comment\", \"query\": {\"match\" : {\"text\" : \"$VALUE\"}}}}, " + - "{\"has_child\": {\"type\": \"field\", \"query\": {\"match\": {\"comments\" : \"$VALUE\" }}}}" + - "]" + - "}" + - "}"; + if (StringUtils.isNotBlank(field)) { + query = query.replace("$FIELD", field.toLowerCase()); + } - private final static String flowShouldQueryUnit = - "{\"bool\": " + - "{\"should\": " + - "[{\"wildcard\": {\"app_code\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + - "{\"prefix\": {\"app_code\": {\"value\": \"$VALUE\", \"boost\": 2}}}, " + - "{\"match\": {\"app_code\": {\"query\": \"$VALUE\", \"boost\": 3}}}, " + - "{\"match\": {\"app_code\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 4}}}, " + - "{\"wildcard\": {\"flow_name\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + - "{\"prefix\": {\"flow_name\": {\"value\": \"$VALUE\", \"boost\": 16}}}, " + - "{\"match\": {\"flow_name\": {\"query\": \"$VALUE\", \"boost\": 24}}}, " + - "{\"match\": {\"flow_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 32}}}, " + - "{\"wildcard\": {\"jobs.job_name\": {\"value\": \"*$VALUE*\", \"boost\": 8}}}, " + - "{\"prefix\": {\"jobs.job_name\": {\"value\": \"$VALUE\", \"boost\": 16}}}, " + - "{\"match\": {\"jobs.job_name\": {\"query\": \"$VALUE\", \"boost\": 24}}}, " + - "{\"match\": {\"jobs.job_name\": {\"query\": \"$VALUE\", \"type\": \"phrase\", \"boost\": 32}}}" + - "]" + - "}" + - "}"; + query = query.replace("$LIMIT", Integer.toString(limit)); - private final static String suggesterQueryTemplateSub = - "{" + - "\"text\": \"$SEARCHKEYWORD\", " + - "\"simple_phrase\": { " + - "\"phrase\": { " + - "\"field\": \"$FIELD\", " + - "\"size\": 1, " + - "\"direct_generator\": [ " + - "{ " + - "\"field\": \"$FIELD\", " + - "\"suggest_mode\": \"always\", " + - "\"min_word_length\": 1 " + - "}" + - "]" + - "}" + - "}" + - "}"; + ObjectNode suggestNode = Json.newObject(); + ObjectNode textNode = Json.newObject(); + try { + textNode = (ObjectNode) new ObjectMapper().readTree(query); + suggestNode.put("suggest", textNode); + } catch (Exception e) { + Logger.error("suggest Exception = " + e.getMessage()); + } - private final static String completionSuggesterQuery = - "{" + - "\"wh-suggest\": { " + - "\"text\": \"$SEARCHKEYWORD\", " + - "\"completion\": { " + - "\"field\": \"$FIELD\", " + - "\"size\": $LIMIT " + - "} "+ - "} " + - "}"; + return suggestNode; + } + public static ObjectNode generateElasticSearchPhraseSuggesterQuery(String category, String field, + String searchKeyword) { + if (StringUtils.isBlank(searchKeyword)) { + return null; + } - private final static String datasetFilterQueryUnit = - "{" + - "\"match\": { " + - "\"source\": \"$SOURCE\" " + - "} "+ - "}"; + String queryTemplate = suggesterQueryTemplateSub; + String query = queryTemplate.replace("$SEARCHKEYWORD", searchKeyword.toLowerCase()); + if (StringUtils.isNotBlank(field)) { + query = query.replace("$FIELD", field.toLowerCase()); + } - public final static String DATASET_CATEGORY = "datasets"; + ObjectNode suggestNode = Json.newObject(); + ObjectNode textNode = Json.newObject(); + try { + textNode = (ObjectNode) new ObjectMapper().readTree(query); + suggestNode.put("suggest", textNode); + } catch (Exception e) { + Logger.error("suggest Exception = " + e.getMessage()); + } + Logger.info("suggestNode is " + suggestNode.toString()); + return suggestNode; + } - public final static String METRIC_CATEGORY = "metrics"; + public static ObjectNode generateElasticSearchQueryString(String category, String source, String keywords) { + if (StringUtils.isBlank(keywords)) { + return null; + } - public final static String COMMENT_CATEGORY = "comments"; + List shouldValueList = new ArrayList(); - public final static String FLOW_CATEGORY = "flows"; + String queryTemplate = datasetShouldQueryUnit; + String[] values = keywords.trim().split(","); + if (StringUtils.isNotBlank(category)) { + if (category.equalsIgnoreCase(METRIC_CATEGORY)) { + queryTemplate = metricShouldQueryUnit; + } else if (category.equalsIgnoreCase(COMMENT_CATEGORY)) { + queryTemplate = commentsQuery; + } else if (category.equalsIgnoreCase(FLOW_CATEGORY) || category.equalsIgnoreCase(JOB_CATEGORY)) { + queryTemplate = flowShouldQueryUnit; + } + } - public final static String JOB_CATEGORY = "jobs"; + for (String value : values) { + if (StringUtils.isNotBlank(value)) { + String query = queryTemplate.replace("$VALUE", value.replace("\"", "").toLowerCase().trim()); + shouldValueList.add(Json.parse(query)); + } + } - public static ObjectNode generateElasticSearchCompletionSuggesterQuery(String field, String searchKeyword, - int limit) - { - if (StringUtils.isBlank(searchKeyword)) { - return null; + ObjectNode shouldNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + ObjectNode queryNode = Json.newObject(); + queryNode.put("bool", shouldNode); + return queryNode; + } + + public static ObjectNode generateDatasetAdvSearchQueryString(JsonNode searchOpt) { + List scopeInList = new ArrayList(); + List scopeNotInList = new ArrayList(); + List tableInList = new ArrayList(); + List tableNotInList = new ArrayList(); + List fieldAnyList = new ArrayList(); + List fieldAllList = new ArrayList(); + List fieldNotInList = new ArrayList(); + String comments = null; + String datasetSources = null; + + if (searchOpt != null && (searchOpt.isContainerNode())) { + if (searchOpt.has("scope")) { + JsonNode scopeNode = searchOpt.get("scope"); + if (scopeNode != null && scopeNode.isContainerNode()) { + if (scopeNode.has("in")) { + JsonNode scopeInNode = scopeNode.get("in"); + if (scopeInNode != null) { + String scopeInStr = scopeInNode.asText(); + if (StringUtils.isNotBlank(scopeInStr)) { + String[] scopeInArray = scopeInStr.split(","); + if (scopeInArray != null) { + for (String value : scopeInArray) { + if (StringUtils.isNotBlank(value)) { + scopeInList.add(value.trim()); + } + } + } + } + } + } + if (scopeNode.has("not")) { + JsonNode scopeNotInNode = scopeNode.get("not"); + if (scopeNotInNode != null) { + String scopeNotInStr = scopeNotInNode.asText(); + if (StringUtils.isNotBlank(scopeNotInStr)) { + String[] scopeNotInArray = scopeNotInStr.split(","); + if (scopeNotInArray != null) { + for (String value : scopeNotInArray) { + if (StringUtils.isNotBlank(value)) { + scopeNotInList.add(value.trim()); + } + } + } + } + } + } } + } - String queryTemplate = completionSuggesterQuery; - String query = queryTemplate.replace("$SEARCHKEYWORD", searchKeyword.toLowerCase()); + if (searchOpt.has("table")) { + JsonNode tableNode = searchOpt.get("table"); + if (tableNode != null && tableNode.isContainerNode()) { + if (tableNode.has("in")) { + JsonNode tableInNode = tableNode.get("in"); + if (tableInNode != null) { + String tableInStr = tableInNode.asText(); + if (StringUtils.isNotBlank(tableInStr)) { + String[] tableInArray = tableInStr.split(","); + if (tableInArray != null) { + for (String value : tableInArray) { + if (StringUtils.isNotBlank(value)) { + tableInList.add(value.trim()); + } + } + } + } + } + } + if (tableNode.has("not")) { + JsonNode tableNotInNode = tableNode.get("not"); + if (tableNotInNode != null) { + String tableNotInStr = tableNotInNode.asText(); + if (StringUtils.isNotBlank(tableNotInStr)) { + String[] tableNotInArray = tableNotInStr.split(","); + if (tableNotInArray != null) { + for (String value : tableNotInArray) { + if (StringUtils.isNotBlank(value)) { + tableNotInList.add(value.trim()); + } + } + } + } + } + } + } + } + if (searchOpt.has("fields")) { + JsonNode fieldNode = searchOpt.get("fields"); + if (fieldNode != null && fieldNode.isContainerNode()) { + if (fieldNode.has("any")) { + JsonNode fieldAnyNode = fieldNode.get("any"); + if (fieldAnyNode != null) { + String fieldAnyStr = fieldAnyNode.asText(); + if (StringUtils.isNotBlank(fieldAnyStr)) { + String[] fieldAnyArray = fieldAnyStr.split(","); + if (fieldAnyArray != null) { + for (String value : fieldAnyArray) { + if (StringUtils.isNotBlank(value)) { + fieldAnyList.add(value.trim()); + } + } + } + } + } + } + if (fieldNode.has("all")) { + JsonNode fieldAllNode = fieldNode.get("all"); + if (fieldAllNode != null) { + String fieldAllStr = fieldAllNode.asText(); + if (StringUtils.isNotBlank(fieldAllStr)) { + String[] fieldAllArray = fieldAllStr.split(","); + if (fieldAllArray != null) { + for (String value : fieldAllArray) { + if (StringUtils.isNotBlank(value)) { + fieldAllList.add(value.trim()); + } + } + } + } + } + } + if (fieldNode.has("not")) { + JsonNode fieldNotInNode = fieldNode.get("not"); + if (fieldNotInNode != null) { + String fieldNotInStr = fieldNotInNode.asText(); + if (StringUtils.isNotBlank(fieldNotInStr)) { + String[] fieldNotInArray = fieldNotInStr.split(","); + if (fieldNotInArray != null) { + for (String value : fieldNotInArray) { + if (StringUtils.isNotBlank(value)) { + fieldNotInList.add(value.trim()); + } + } + } + } + } + } + } + } + if (searchOpt.has("sources")) { + JsonNode sourcesNode = searchOpt.get("sources"); + if (sourcesNode != null) { + datasetSources = sourcesNode.asText(); + } + } + if (searchOpt.has("comments")) { + JsonNode commentsNode = searchOpt.get("comments"); + if (commentsNode != null) { + comments = commentsNode.asText(); + } + } + } + + List mustValueList = new ArrayList(); + List mustNotValueList = new ArrayList(); + List shouldValueList = new ArrayList(); + String hasChildValue = + "{\"has_child\": " + "{\"type\": \"$TYPE\", \"query\": {\"match\" : {\"$FIELD\" : \"$VALUE\"}}}}"; + String matchQueryUnit = "{\"query\": {\"match\" : {\"$FIELD\" : \"$VALUE\"}}}"; + + String shouldQueryUnit = + "{\"bool\": " + "{\"should\": [" + "{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + + "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + + "{\"term\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 16}}}" + "]}}"; + String mustNotQueryUnit = "{\"term\" : {\"$FIELD\" : \"$VALUE\"}}"; + + if (scopeInList != null && scopeInList.size() > 0) { + for (String scope : scopeInList) { + if (StringUtils.isNotBlank(scope)) { + shouldValueList.add(Json.parse(shouldQueryUnit.replace("$FIELD", "parent_name"). + replace("$VALUE", scope.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (scopeNotInList != null && scopeNotInList.size() > 0) { + shouldValueList.clear(); + for (String scope : scopeNotInList) { + if (StringUtils.isNotBlank(scope)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "parent_name"). + replace("$VALUE", scope.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); + } + if (tableInList != null && tableInList.size() > 0) { + shouldValueList.clear(); + for (String table : tableInList) { + if (StringUtils.isNotBlank(table)) { + shouldValueList.add(Json.parse(shouldQueryUnit.replace("$FIELD", "name"). + replace("$VALUE", table.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (tableNotInList != null && tableNotInList.size() > 0) { + shouldValueList.clear(); + for (String table : tableNotInList) { + if (StringUtils.isNotBlank(table)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "name"). + replace("$VALUE", table.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); + } + if (fieldAnyList != null && fieldAnyList.size() > 0) { + shouldValueList.clear(); + for (String field : fieldAnyList) { if (StringUtils.isNotBlank(field)) { - query = query.replace("$FIELD", field.toLowerCase()); + shouldValueList.add(Json.parse(hasChildValue.replace("$TYPE", "field"). + replace("$FIELD", "field_name"). + replace("$VALUE", field.toLowerCase().trim()))); } - - query = query.replace("$LIMIT", Integer.toString(limit)); - - ObjectNode suggestNode = Json.newObject(); - ObjectNode textNode = Json.newObject(); - try { - textNode = (ObjectNode) new ObjectMapper().readTree(query); - suggestNode.put("suggest", textNode); - } catch (Exception e) { - Logger.error("suggest Exception = " + e.getMessage()); - } - - return suggestNode; + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); } - - public static ObjectNode generateElasticSearchPhraseSuggesterQuery(String category, String field, - String searchKeyword) - { - if (StringUtils.isBlank(searchKeyword)) { - return null; - } - - String queryTemplate = suggesterQueryTemplateSub; - String query = queryTemplate.replace("$SEARCHKEYWORD", searchKeyword.toLowerCase()); - + if (fieldAllList != null && fieldAllList.size() > 0) { + for (String field : fieldAllList) { if (StringUtils.isNotBlank(field)) { - query = query.replace("$FIELD", field.toLowerCase()); + mustValueList.add(Json.parse(hasChildValue.replace("$TYPE", "field"). + replace("$FIELD", "field_name"). + replace("$VALUE", field.toLowerCase().trim()))); } - - ObjectNode suggestNode = Json.newObject(); - ObjectNode textNode = Json.newObject(); - try { - textNode = (ObjectNode) new ObjectMapper().readTree(query); - suggestNode.put("suggest", textNode); - } catch (Exception e) { - Logger.error("suggest Exception = " + e.getMessage()); + } + } + if (fieldNotInList != null && fieldNotInList.size() > 0) { + shouldValueList.clear(); + for (String field : fieldNotInList) { + if (StringUtils.isNotBlank(field)) { + shouldValueList.add(Json.parse(hasChildValue.replace("$TYPE", "field"). + replace("$FIELD", "field_name"). + replace("$VALUE", field.toLowerCase().trim()))); } - Logger.info("suggestNode is " + suggestNode.toString()); - return suggestNode; + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); + } + if (StringUtils.isNotBlank(comments)) { + shouldValueList.clear(); + String inputComments[] = comments.trim().split(","); + for (String comment : inputComments) { + if (StringUtils.isNotBlank(comment)) { + shouldValueList.add(Json.parse(hasChildValue.replace("$TYPE", "comment"). + replace("$FIELD", "text"). + replace("$VALUE", comment.toLowerCase().trim()))); + shouldValueList.add(Json.parse(hasChildValue.replace("$TYPE", "field"). + replace("$FIELD", "comments"). + replace("$VALUE", comment.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (StringUtils.isNotBlank(datasetSources)) { + String inputSources[] = datasetSources.trim().split(","); + shouldValueList.clear(); + for (String source : inputSources) { + if (StringUtils.isNotBlank(source)) { + shouldValueList.add(Json.parse(matchQueryUnit.replace("$FIELD", "source"). + replace("$VALUE", source.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); } - public static ObjectNode generateElasticSearchQueryString(String category, String source, String keywords) - { - if (StringUtils.isBlank(keywords)) - return null; - - List shouldValueList = new ArrayList(); - - String queryTemplate = datasetShouldQueryUnit; - String[] values = keywords.trim().split(","); - if (StringUtils.isNotBlank(category)) - { - if (category.equalsIgnoreCase(METRIC_CATEGORY)) - { - queryTemplate = metricShouldQueryUnit; - } - else if (category.equalsIgnoreCase(COMMENT_CATEGORY)) - { - queryTemplate = commentsQuery; - } - else if (category.equalsIgnoreCase(FLOW_CATEGORY) || category.equalsIgnoreCase(JOB_CATEGORY)) - { - queryTemplate = flowShouldQueryUnit; - } - } - - for(String value : values) - { - if (StringUtils.isNotBlank(value)) { - String query= queryTemplate.replace("$VALUE", value.replace("\"", "").toLowerCase().trim()); - shouldValueList.add(Json.parse(query)); - } - } - - ObjectNode shouldNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - ObjectNode queryNode = Json.newObject(); - queryNode.put("bool", shouldNode); - return queryNode; + ObjectNode boolNode = Json.newObject(); + ObjectNode queryNode = Json.newObject(); + if (mustValueList.size() > 0 && mustNotValueList.size() > 0) { + boolNode.set("must", Json.toJson(mustValueList)); + boolNode.set("must_not", Json.toJson(mustNotValueList)); + queryNode.put("bool", boolNode); + } else if (mustValueList.size() > 0) { + boolNode.set("must", Json.toJson(mustValueList)); + queryNode.put("bool", boolNode); + } else if (mustNotValueList.size() > 0) { + boolNode.set("must_not", Json.toJson(mustNotValueList)); + queryNode.put("bool", boolNode); } - public static ObjectNode generateDatasetAdvSearchQueryString(JsonNode searchOpt) - { - List scopeInList = new ArrayList(); - List scopeNotInList = new ArrayList(); - List tableInList = new ArrayList(); - List tableNotInList = new ArrayList(); - List fieldAnyList = new ArrayList(); - List fieldAllList = new ArrayList(); - List fieldNotInList = new ArrayList(); - String comments = null; - String datasetSources = null; + return queryNode; + } - if (searchOpt != null && (searchOpt.isContainerNode())) { - if (searchOpt.has("scope")) { - JsonNode scopeNode = searchOpt.get("scope"); - if (scopeNode != null && scopeNode.isContainerNode()) { - if (scopeNode.has("in")) { - JsonNode scopeInNode = scopeNode.get("in"); - if (scopeInNode != null) { - String scopeInStr = scopeInNode.asText(); - if (StringUtils.isNotBlank(scopeInStr)) { - String[] scopeInArray = scopeInStr.split(","); - if (scopeInArray != null) { - for (String value : scopeInArray) { - if (StringUtils.isNotBlank(value)) { - scopeInList.add(value.trim()); - } - } - } - } - } + public static ObjectNode generateMetricAdvSearchQueryString(JsonNode searchOpt) { + List dashboardInList = new ArrayList(); + List dashboardNotInList = new ArrayList(); + List groupInList = new ArrayList(); + List groupNotInList = new ArrayList(); + List categoryInList = new ArrayList(); + List categoryNotInList = new ArrayList(); + List metricInList = new ArrayList(); + List metricNotInList = new ArrayList(); + + if (searchOpt != null && (searchOpt.isContainerNode())) { + if (searchOpt.has("dashboard")) { + JsonNode dashboardNode = searchOpt.get("dashboard"); + if (dashboardNode != null && dashboardNode.isContainerNode()) { + if (dashboardNode.has("in")) { + JsonNode dashboardInNode = dashboardNode.get("in"); + if (dashboardInNode != null) { + String dashboardInStr = dashboardInNode.asText(); + if (StringUtils.isNotBlank(dashboardInStr)) { + String[] dashboardInArray = dashboardInStr.split(","); + if (dashboardInArray != null) { + for (String value : dashboardInArray) { + if (StringUtils.isNotBlank(value)) { + dashboardInList.add(value.trim()); } - if (scopeNode.has("not")) { - JsonNode scopeNotInNode = scopeNode.get("not"); - if (scopeNotInNode != null) { - String scopeNotInStr = scopeNotInNode.asText(); - if (StringUtils.isNotBlank(scopeNotInStr)) { - String[] scopeNotInArray = scopeNotInStr.split(","); - if (scopeNotInArray != null) { - for (String value : scopeNotInArray) { - if (StringUtils.isNotBlank(value)) { - scopeNotInList.add(value.trim()); - } - } - } - } - } + } + } + } + } + } + if (dashboardNode.has("not")) { + JsonNode dashboardNotInNode = dashboardNode.get("not"); + if (dashboardNotInNode != null) { + String dashboardNotInStr = dashboardNotInNode.asText(); + if (StringUtils.isNotBlank(dashboardNotInStr)) { + String[] dashboardNotInArray = dashboardNotInStr.split(","); + if (dashboardNotInArray != null) { + for (String value : dashboardNotInArray) { + if (StringUtils.isNotBlank(value)) { + dashboardNotInList.add(value.trim()); } + } } + } } + } + } + } - if (searchOpt.has("table")) { - JsonNode tableNode = searchOpt.get("table"); - if (tableNode != null && tableNode.isContainerNode()) { - if (tableNode.has("in")) { - JsonNode tableInNode = tableNode.get("in"); - if (tableInNode != null) { - String tableInStr = tableInNode.asText(); - if (StringUtils.isNotBlank(tableInStr)) { - String[] tableInArray = tableInStr.split(","); - if (tableInArray != null) { - for (String value : tableInArray) { - if (StringUtils.isNotBlank(value)) { - tableInList.add(value.trim()); - } - } - } - } - } + if (searchOpt.has("group")) { + JsonNode groupNode = searchOpt.get("group"); + if (groupNode != null && groupNode.isContainerNode()) { + if (groupNode.has("in")) { + JsonNode groupInNode = groupNode.get("in"); + if (groupInNode != null) { + String groupInStr = groupInNode.asText(); + if (StringUtils.isNotBlank(groupInStr)) { + String[] groupInArray = groupInStr.split(","); + if (groupInArray != null) { + for (String value : groupInArray) { + if (StringUtils.isNotBlank(value)) { + groupInList.add(value.trim()); } - if (tableNode.has("not")) { - JsonNode tableNotInNode = tableNode.get("not"); - if (tableNotInNode != null) { - String tableNotInStr = tableNotInNode.asText(); - if (StringUtils.isNotBlank(tableNotInStr)) { - String[] tableNotInArray = tableNotInStr.split(","); - if (tableNotInArray != null) { - for (String value : tableNotInArray) { - if (StringUtils.isNotBlank(value)) { - tableNotInList.add(value.trim()); - } - } - } - } - } + } + } + } + } + } + if (groupNode.has("not")) { + JsonNode groupNotInNode = groupNode.get("not"); + if (groupNotInNode != null) { + String groupNotInStr = groupNotInNode.asText(); + if (StringUtils.isNotBlank(groupNotInStr)) { + String[] groupNotInArray = groupNotInStr.split(","); + if (groupNotInArray != null) { + for (String value : groupNotInArray) { + if (StringUtils.isNotBlank(value)) { + groupNotInList.add(value.trim()); } + } } + } } + } + } + } - if (searchOpt.has("fields")) { - JsonNode fieldNode = searchOpt.get("fields"); - if (fieldNode != null && fieldNode.isContainerNode()) { - if (fieldNode.has("any")) { - JsonNode fieldAnyNode = fieldNode.get("any"); - if (fieldAnyNode != null) { - String fieldAnyStr = fieldAnyNode.asText(); - if (StringUtils.isNotBlank(fieldAnyStr)) { - String[] fieldAnyArray = fieldAnyStr.split(","); - if (fieldAnyArray != null) { - for (String value : fieldAnyArray) { - if (StringUtils.isNotBlank(value)) { - fieldAnyList.add(value.trim()); - } - } - } - } - } + if (searchOpt.has("cat")) { + JsonNode categoryNode = searchOpt.get("cat"); + if (categoryNode != null && categoryNode.isContainerNode()) { + if (categoryNode.has("in")) { + JsonNode categoryInNode = categoryNode.get("in"); + if (categoryInNode != null) { + String categoryInStr = categoryInNode.asText(); + if (StringUtils.isNotBlank(categoryInStr)) { + String[] categoryInArray = categoryInStr.split(","); + if (categoryInArray != null) { + for (String value : categoryInArray) { + if (StringUtils.isNotBlank(value)) { + categoryInList.add(value.trim()); } - if (fieldNode.has("all")) { - JsonNode fieldAllNode = fieldNode.get("all"); - if (fieldAllNode != null) { - String fieldAllStr = fieldAllNode.asText(); - if (StringUtils.isNotBlank(fieldAllStr)) { - String[] fieldAllArray = fieldAllStr.split(","); - if (fieldAllArray != null) { - for (String value : fieldAllArray) { - if (StringUtils.isNotBlank(value)) { - fieldAllList.add(value.trim()); - } - } - } - } - } + } + } + } + } + } + if (categoryNode.has("not")) { + JsonNode categoryNotInNode = categoryNode.get("not"); + if (categoryNotInNode != null) { + String categoryNotInStr = categoryNotInNode.asText(); + if (StringUtils.isNotBlank(categoryNotInStr)) { + String[] categoryNotInArray = categoryNotInStr.split(","); + if (categoryNotInArray != null) { + for (String value : categoryNotInArray) { + if (StringUtils.isNotBlank(value)) { + categoryNotInList.add(value.trim()); } - if (fieldNode.has("not")) { - JsonNode fieldNotInNode = fieldNode.get("not"); - if (fieldNotInNode != null) { - String fieldNotInStr = fieldNotInNode.asText(); - if (StringUtils.isNotBlank(fieldNotInStr)) { - String[] fieldNotInArray = fieldNotInStr.split(","); - if (fieldNotInArray != null) { - for (String value : fieldNotInArray) { - if (StringUtils.isNotBlank(value)) { - fieldNotInList.add(value.trim()); - } - } - } - } - } + } + } + } + } + } + } + } + + if (searchOpt.has("metric")) { + JsonNode metricNode = searchOpt.get("metric"); + if (metricNode != null && metricNode.isContainerNode()) { + if (metricNode.has("in")) { + JsonNode metricInNode = metricNode.get("in"); + if (metricInNode != null) { + String metricInStr = metricInNode.asText(); + if (StringUtils.isNotBlank(metricInStr)) { + String[] metricInArray = metricInStr.split(","); + if (metricInArray != null) { + for (String value : metricInArray) { + if (StringUtils.isNotBlank(value)) { + metricInList.add(value.trim()); } + } } + } } - if (searchOpt.has("sources")) { - JsonNode sourcesNode = searchOpt.get("sources"); - if (sourcesNode != null) - { - datasetSources = sourcesNode.asText(); - } - } - if (searchOpt.has("comments")) { - JsonNode commentsNode = searchOpt.get("comments"); - if (commentsNode != null) { - comments = commentsNode.asText(); + } + if (metricNode.has("not")) { + JsonNode metricNotInNode = metricNode.get("not"); + if (metricNotInNode != null) { + String metricNotInStr = metricNotInNode.asText(); + if (StringUtils.isNotBlank(metricNotInStr)) { + String[] metricNotInArray = metricNotInStr.split(","); + if (metricNotInArray != null) { + for (String value : metricNotInArray) { + if (StringUtils.isNotBlank(value)) { + metricNotInList.add(value.trim()); + } + } } + } } + } } - - List mustValueList = new ArrayList(); - List mustNotValueList = new ArrayList(); - List shouldValueList = new ArrayList(); - String hasChildValue = "{\"has_child\": " + - "{\"type\": \"$TYPE\", \"query\": {\"match\" : {\"$FIELD\" : \"$VALUE\"}}}}"; - String matchQueryUnit = "{\"query\": {\"match\" : {\"$FIELD\" : \"$VALUE\"}}}"; - - String shouldQueryUnit = "{\"bool\": " + - "{\"should\": [" + - "{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + - "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + - "{\"term\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 16}}}" + - "]}}"; - String mustNotQueryUnit = "{\"term\" : {\"$FIELD\" : \"$VALUE\"}}"; - - if (scopeInList != null && scopeInList.size() > 0) - { - for(String scope : scopeInList) - { - if (StringUtils.isNotBlank(scope)) - { - shouldValueList.add( - Json.parse( - shouldQueryUnit.replace("$FIELD", "parent_name"). - replace("$VALUE", scope.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - if (scopeNotInList != null && scopeNotInList.size() > 0) - { - shouldValueList.clear(); - for(String scope: scopeNotInList) - { - if (StringUtils.isNotBlank(scope)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "parent_name"). - replace("$VALUE", scope.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - if (tableInList != null && tableInList.size() > 0) - { - shouldValueList.clear(); - for(String table : tableInList) - { - if (StringUtils.isNotBlank(table)) - { - shouldValueList.add( - Json.parse( - shouldQueryUnit.replace("$FIELD", "name"). - replace("$VALUE", table.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - if (tableNotInList != null && tableNotInList.size() > 0) - { - shouldValueList.clear(); - for(String table : tableNotInList) - { - if (StringUtils.isNotBlank(table)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "name"). - replace("$VALUE", table.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - if (fieldAnyList != null && fieldAnyList.size() > 0) - { - shouldValueList.clear(); - for(String field : fieldAnyList) - { - if (StringUtils.isNotBlank(field)) - { - shouldValueList.add( - Json.parse( - hasChildValue.replace("$TYPE", "field"). - replace("$FIELD", "field_name"). - replace("$VALUE", field.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - if (fieldAllList != null && fieldAllList.size() > 0) - { - for(String field : fieldAllList) - { - if (StringUtils.isNotBlank(field)) - { - mustValueList.add( - Json.parse( - hasChildValue.replace("$TYPE", "field"). - replace("$FIELD", "field_name"). - replace("$VALUE", field.toLowerCase().trim()))); - } - } - } - if (fieldNotInList != null && fieldNotInList.size() > 0) - { - shouldValueList.clear(); - for(String field : fieldNotInList) - { - if (StringUtils.isNotBlank(field)) - { - shouldValueList.add( - Json.parse( - hasChildValue.replace("$TYPE", "field"). - replace("$FIELD", "field_name"). - replace("$VALUE", field.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - if (StringUtils.isNotBlank(comments)) - { - shouldValueList.clear(); - String inputComments[] = comments.trim().split(","); - for(String comment : inputComments) - { - if (StringUtils.isNotBlank(comment)) - { - shouldValueList.add( - Json.parse( - hasChildValue.replace("$TYPE", "comment"). - replace("$FIELD", "text"). - replace("$VALUE", comment.toLowerCase().trim()))); - shouldValueList.add( - Json.parse( - hasChildValue.replace("$TYPE", "field"). - replace("$FIELD", "comments"). - replace("$VALUE", comment.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - if (StringUtils.isNotBlank(datasetSources)) - { - String inputSources[] = datasetSources.trim().split(","); - shouldValueList.clear(); - for(String source : inputSources) - { - if (StringUtils.isNotBlank(source)) - { - shouldValueList.add( - Json.parse( - matchQueryUnit.replace("$FIELD", "source"). - replace("$VALUE", source.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - - ObjectNode boolNode = Json.newObject(); - ObjectNode queryNode = Json.newObject(); - if (mustValueList.size() > 0 && mustNotValueList.size() > 0) - { - boolNode.set("must", Json.toJson(mustValueList)); - boolNode.set("must_not", Json.toJson(mustNotValueList)); - queryNode.put("bool", boolNode); - } - else if (mustValueList.size() > 0) - { - boolNode.set("must", Json.toJson(mustValueList)); - queryNode.put("bool", boolNode); - } - else if (mustNotValueList.size() > 0) - { - boolNode.set("must_not", Json.toJson(mustNotValueList)); - queryNode.put("bool", boolNode); - } - - return queryNode; + } } - public static ObjectNode generateMetricAdvSearchQueryString(JsonNode searchOpt) - { - List dashboardInList = new ArrayList(); - List dashboardNotInList = new ArrayList(); - List groupInList = new ArrayList(); - List groupNotInList = new ArrayList(); - List categoryInList = new ArrayList(); - List categoryNotInList = new ArrayList(); - List metricInList = new ArrayList(); - List metricNotInList = new ArrayList(); + List mustValueList = new ArrayList(); + List mustNotValueList = new ArrayList(); + List shouldValueList = new ArrayList(); - if (searchOpt != null && (searchOpt.isContainerNode())) { - if (searchOpt.has("dashboard")) { - JsonNode dashboardNode = searchOpt.get("dashboard"); - if (dashboardNode != null && dashboardNode.isContainerNode()) { - if (dashboardNode.has("in")) { - JsonNode dashboardInNode = dashboardNode.get("in"); - if (dashboardInNode != null) { - String dashboardInStr = dashboardInNode.asText(); - if (StringUtils.isNotBlank(dashboardInStr)) { - String[] dashboardInArray = dashboardInStr.split(","); - if (dashboardInArray != null) { - for (String value : dashboardInArray) { - if (StringUtils.isNotBlank(value)) { - dashboardInList.add(value.trim()); - } - } - } - } - } - } - if (dashboardNode.has("not")) { - JsonNode dashboardNotInNode = dashboardNode.get("not"); - if (dashboardNotInNode != null) { - String dashboardNotInStr = dashboardNotInNode.asText(); - if (StringUtils.isNotBlank(dashboardNotInStr)) { - String[] dashboardNotInArray = dashboardNotInStr.split(","); - if (dashboardNotInArray != null) { - for (String value : dashboardNotInArray) { - if (StringUtils.isNotBlank(value)) { - dashboardNotInList.add(value.trim()); - } - } - } - } - } - } - } - } + String shouldQueryUnit = + "{\"bool\": " + "{\"should\": " + "[{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + + "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + + "{\"term\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 16}}}" + "]" + "}" + "}"; + String shouldMatchQueryUnit = + "{\"bool\": " + "{\"should\": " + "[{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + + "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + + "{\"match\": {\"$FIELD\": {\"query\": \"$VALUE\", \"boost\": 16}}}" + "]" + "}" + "}"; + String mustNotQueryUnit = "{\"term\" : {\"$FIELD\" : \"$VALUE\"}}"; - if (searchOpt.has("group")) { - JsonNode groupNode = searchOpt.get("group"); - if (groupNode != null && groupNode.isContainerNode()) { - if (groupNode.has("in")) { - JsonNode groupInNode = groupNode.get("in"); - if (groupInNode != null) { - String groupInStr = groupInNode.asText(); - if (StringUtils.isNotBlank(groupInStr)) { - String[] groupInArray = groupInStr.split(","); - if (groupInArray != null) { - for (String value : groupInArray) { - if (StringUtils.isNotBlank(value)) { - groupInList.add(value.trim()); - } - } - } - } - } - } - if (groupNode.has("not")) { - JsonNode groupNotInNode = groupNode.get("not"); - if (groupNotInNode != null) { - String groupNotInStr = groupNotInNode.asText(); - if (StringUtils.isNotBlank(groupNotInStr)) { - String[] groupNotInArray = groupNotInStr.split(","); - if (groupNotInArray != null) { - for (String value : groupNotInArray) { - if (StringUtils.isNotBlank(value)) { - groupNotInList.add(value.trim()); - } - } - } - } - } - } - } - } - - if (searchOpt.has("cat")) { - JsonNode categoryNode = searchOpt.get("cat"); - if (categoryNode != null && categoryNode.isContainerNode()) { - if (categoryNode.has("in")) { - JsonNode categoryInNode = categoryNode.get("in"); - if (categoryInNode != null) { - String categoryInStr = categoryInNode.asText(); - if (StringUtils.isNotBlank(categoryInStr)) { - String[] categoryInArray = categoryInStr.split(","); - if (categoryInArray != null) { - for (String value : categoryInArray) { - if (StringUtils.isNotBlank(value)) { - categoryInList.add(value.trim()); - } - } - } - } - } - } - if (categoryNode.has("not")) { - JsonNode categoryNotInNode = categoryNode.get("not"); - if (categoryNotInNode != null) { - String categoryNotInStr = categoryNotInNode.asText(); - if (StringUtils.isNotBlank(categoryNotInStr)) { - String[] categoryNotInArray = categoryNotInStr.split(","); - if (categoryNotInArray != null) { - for (String value : categoryNotInArray) { - if (StringUtils.isNotBlank(value)) { - categoryNotInList.add(value.trim()); - } - } - } - } - } - } - } - } - - if (searchOpt.has("metric")) { - JsonNode metricNode = searchOpt.get("metric"); - if (metricNode != null && metricNode.isContainerNode()) { - if (metricNode.has("in")) { - JsonNode metricInNode = metricNode.get("in"); - if (metricInNode != null) { - String metricInStr = metricInNode.asText(); - if (StringUtils.isNotBlank(metricInStr)) { - String[] metricInArray = metricInStr.split(","); - if (metricInArray != null) { - for (String value : metricInArray) { - if (StringUtils.isNotBlank(value)) { - metricInList.add(value.trim()); - } - } - } - } - } - } - if (metricNode.has("not")) { - JsonNode metricNotInNode = metricNode.get("not"); - if (metricNotInNode != null) { - String metricNotInStr = metricNotInNode.asText(); - if (StringUtils.isNotBlank(metricNotInStr)) { - String[] metricNotInArray = metricNotInStr.split(","); - if (metricNotInArray != null) { - for (String value : metricNotInArray) { - if (StringUtils.isNotBlank(value)) { - metricNotInList.add(value.trim()); - } - } - } - } - } - } - } - } + if (dashboardInList != null && dashboardInList.size() > 0) { + for (String dashboard : dashboardInList) { + if (StringUtils.isNotBlank(dashboard)) { + shouldValueList.add(Json.parse(shouldMatchQueryUnit.replace("$FIELD", "dashboard_name"). + replace("$VALUE", dashboard.toLowerCase().trim()))); } - - List mustValueList = new ArrayList(); - List mustNotValueList= new ArrayList(); - List shouldValueList = new ArrayList(); - - String shouldQueryUnit = - "{\"bool\": " + - "{\"should\": " + - "[{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + - "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + - "{\"term\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 16}}}" + - "]" + - "}" + - "}"; - String shouldMatchQueryUnit = - "{\"bool\": " + - "{\"should\": " + - "[{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + - "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + - "{\"match\": {\"$FIELD\": {\"query\": \"$VALUE\", \"boost\": 16}}}" + - "]" + - "}" + - "}"; - String mustNotQueryUnit = "{\"term\" : {\"$FIELD\" : \"$VALUE\"}}"; - - if (dashboardInList != null && dashboardInList.size() > 0) - { - for(String dashboard : dashboardInList) - { - if (StringUtils.isNotBlank(dashboard)) - { - shouldValueList.add( - Json.parse( - shouldMatchQueryUnit.replace("$FIELD", "dashboard_name"). - replace("$VALUE", dashboard.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (dashboardNotInList != null && dashboardNotInList.size() > 0) { + shouldValueList.clear(); + for (String dashboard : dashboardNotInList) { + if (StringUtils.isNotBlank(dashboard)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "dashboard_name"). + replace("$VALUE", dashboard.toLowerCase().trim()))); } - if (dashboardNotInList != null && dashboardNotInList.size() > 0) - { - shouldValueList.clear(); - for(String dashboard : dashboardNotInList) - { - if (StringUtils.isNotBlank(dashboard)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "dashboard_name"). - replace("$VALUE", dashboard.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); + } + if (groupInList != null && groupInList.size() > 0) { + shouldValueList.clear(); + for (String group : groupInList) { + if (StringUtils.isNotBlank(group)) { + shouldValueList.add(Json.parse(shouldMatchQueryUnit.replace("$FIELD", "metric_group"). + replace("$VALUE", group.toLowerCase().trim()))); } - if (groupInList != null && groupInList.size() > 0) - { - shouldValueList.clear(); - for(String group : groupInList) - { - if (StringUtils.isNotBlank(group)) - { - shouldValueList.add( - Json.parse( - shouldMatchQueryUnit.replace("$FIELD", "metric_group"). - replace("$VALUE", group.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (groupNotInList != null && groupNotInList.size() > 0) { + shouldValueList.clear(); + for (String group : groupNotInList) { + if (StringUtils.isNotBlank(group)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "metric_group"). + replace("$VALUE", group.toLowerCase().trim()))); } - if (groupNotInList != null && groupNotInList.size() > 0) - { - shouldValueList.clear(); - for(String group : groupNotInList) - { - if (StringUtils.isNotBlank(group)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "metric_group"). - replace("$VALUE", group.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - - if (categoryInList != null && categoryInList.size() > 0) - { - shouldValueList.clear(); - for(String category : categoryInList) - { - if (StringUtils.isNotBlank(category)) - { - shouldValueList.add( - Json.parse( - shouldMatchQueryUnit.replace("$FIELD", "metric_category"). - replace("$VALUE", category.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - if (categoryNotInList != null && categoryNotInList.size() > 0) - { - shouldValueList.clear(); - for(String category : categoryNotInList) - { - if (StringUtils.isNotBlank(category)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "metric_category"). - replace("$VALUE", category.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - - if (metricInList != null && metricInList.size() > 0) - { - shouldValueList.clear(); - for(String name : metricInList) - { - if (StringUtils.isNotBlank(name)) - { - shouldValueList.add( - Json.parse( - shouldMatchQueryUnit.replace("$FIELD", "metric_name"). - replace("$VALUE", name.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - if (metricNotInList != null && metricNotInList.size() > 0) - { - shouldValueList.clear(); - for(String name : metricNotInList) - { - if (StringUtils.isNotBlank(name)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "metric_name"). - replace("$VALUE", name.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - - ObjectNode boolNode = Json.newObject(); - ObjectNode queryNode = Json.newObject(); - if (mustValueList.size() > 0 && mustNotValueList.size() > 0) - { - boolNode.set("must", Json.toJson(mustValueList)); - boolNode.set("must_not", Json.toJson(mustNotValueList)); - queryNode.put("bool", boolNode); - } - else if (mustValueList.size() > 0) - { - boolNode.set("must", Json.toJson(mustValueList)); - queryNode.put("bool", boolNode); - } - else if (mustNotValueList.size() > 0) - { - boolNode.set("must_not", Json.toJson(mustNotValueList)); - queryNode.put("bool", boolNode); - } - - return queryNode; + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); } - public static ObjectNode generateFlowJobAdvSearchQueryString(JsonNode searchOpt) - { - List appcodeInList = new ArrayList(); - List appcodeNotInList = new ArrayList(); - List flowInList = new ArrayList(); - List flowNotInList = new ArrayList(); - List jobInList = new ArrayList(); - List jobNotInList = new ArrayList(); - - if (searchOpt != null && (searchOpt.isContainerNode())) { - if (searchOpt.has("appcode")) { - JsonNode appcodeNode = searchOpt.get("appcode"); - if (appcodeNode != null && appcodeNode.isContainerNode()) { - if (appcodeNode.has("in")) { - JsonNode appcodeInNode = appcodeNode.get("in"); - if (appcodeInNode != null) { - String appcodeInStr = appcodeInNode.asText(); - if (StringUtils.isNotBlank(appcodeInStr)) { - String[] appcodeInArray = appcodeInStr.split(","); - if (appcodeInArray != null) { - for (String value : appcodeInArray) { - if (StringUtils.isNotBlank(value)) { - appcodeInList.add(value.trim()); - } - } - } - } - } - } - if (appcodeNode.has("not")) { - JsonNode appcodeNotInNode = appcodeNode.get("not"); - if (appcodeNotInNode != null) { - String appcodeNotInStr = appcodeNotInNode.asText(); - if (StringUtils.isNotBlank(appcodeNotInStr)) { - String[] appcodeNotInArray = appcodeNotInStr.split(","); - if (appcodeNotInArray != null) { - for (String value : appcodeNotInArray) { - if (StringUtils.isNotBlank(value)) { - appcodeNotInList.add(value.trim()); - } - } - } - } - } - } - } - } - - if (searchOpt.has("flow")) { - JsonNode flowNode = searchOpt.get("flow"); - if (flowNode != null && flowNode.isContainerNode()) { - if (flowNode.has("in")) { - JsonNode flowInNode = flowNode.get("in"); - if (flowInNode != null) { - String flowInStr = flowInNode.asText(); - if (StringUtils.isNotBlank(flowInStr)) { - String[] flowInArray = flowInStr.split(","); - if (flowInArray != null) { - for (String value : flowInArray) { - if (StringUtils.isNotBlank(value)) { - flowInList.add(value.trim()); - } - } - } - } - } - } - if (flowNode.has("not")) { - JsonNode flowNotInNode = flowNode.get("not"); - if (flowNotInNode != null) { - String flowNotInStr = flowNotInNode.asText(); - if (StringUtils.isNotBlank(flowNotInStr)) { - String[] flowNotInArray = flowNotInStr.split(","); - if (flowNotInArray != null) { - for (String value : flowNotInArray) { - if (StringUtils.isNotBlank(value)) { - flowNotInList.add(value.trim()); - } - } - } - } - } - } - } - } - - if (searchOpt.has("job")) { - JsonNode jobNode = searchOpt.get("job"); - if (jobNode != null && jobNode.isContainerNode()) { - if (jobNode.has("in")) { - JsonNode jobInNode = jobNode.get("in"); - if (jobInNode != null) { - String jobInStr = jobInNode.asText(); - if (StringUtils.isNotBlank(jobInStr)) { - String[] jobInArray = jobInStr.split(","); - if (jobInArray != null) { - for (String value : jobInArray) { - if (StringUtils.isNotBlank(value)) { - jobInList.add(value.trim()); - } - } - } - } - } - } - if (jobNode.has("not")) { - JsonNode jobNotInNode = jobNode.get("not"); - if (jobNotInNode != null) { - String jobNotInStr = jobNotInNode.asText(); - if (StringUtils.isNotBlank(jobNotInStr)) { - String[] jobNotInArray = jobNotInStr.split(","); - if (jobNotInArray != null) { - for (String value : jobNotInArray) { - if (StringUtils.isNotBlank(value)) { - jobNotInList.add(value.trim()); - } - } - } - } - } - } - } - } + if (categoryInList != null && categoryInList.size() > 0) { + shouldValueList.clear(); + for (String category : categoryInList) { + if (StringUtils.isNotBlank(category)) { + shouldValueList.add(Json.parse(shouldMatchQueryUnit.replace("$FIELD", "metric_category"). + replace("$VALUE", category.toLowerCase().trim()))); } - - List mustValueList = new ArrayList(); - List mustNotValueList= new ArrayList(); - List shouldValueList = new ArrayList(); - - String shouldMatchQueryUnit = - "{\"bool\": " + - "{\"should\": " + - "[{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + - "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + - "{\"match\": {\"$FIELD\": {\"query\": \"$VALUE\", \"boost\": 16}}}" + - "]" + - "}" + - "}"; - String mustNotQueryUnit = "{\"term\" : {\"$FIELD\" : \"$VALUE\"}}"; - - if (appcodeInList != null && appcodeInList.size() > 0) - { - for(String appCode : appcodeInList) - { - if (StringUtils.isNotBlank(appCode)) - { - shouldValueList.add( - Json.parse( - shouldMatchQueryUnit.replace("$FIELD", "app_code"). - replace("$VALUE", appCode.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (categoryNotInList != null && categoryNotInList.size() > 0) { + shouldValueList.clear(); + for (String category : categoryNotInList) { + if (StringUtils.isNotBlank(category)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "metric_category"). + replace("$VALUE", category.toLowerCase().trim()))); } - if (appcodeNotInList != null && appcodeNotInList.size() > 0) - { - shouldValueList.clear(); - for(String appCode : appcodeNotInList) - { - if (StringUtils.isNotBlank(appCode)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "app_code"). - replace("$VALUE", appCode.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - - if (flowInList != null && flowInList.size() > 0) - { - shouldValueList.clear(); - for(String flow : flowInList) - { - if (StringUtils.isNotBlank(flow)) - { - shouldValueList.add( - Json.parse( - shouldMatchQueryUnit.replace("$FIELD", "flow_name"). - replace("$VALUE", flow.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustValueList.add(boolNode); - } - if (flowNotInList != null && flowNotInList.size() > 0) - { - shouldValueList.clear(); - for(String flow : flowNotInList) - { - if (StringUtils.isNotBlank(flow)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "flow_name"). - replace("$VALUE", flow.toLowerCase().trim()))); - } - } - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - mustNotValueList.add(boolNode); - } - - if (jobInList != null && jobInList.size() > 0) - { - shouldValueList.clear(); - for(String job : jobInList) - { - if (StringUtils.isNotBlank(job)) - { - shouldValueList.add( - Json.parse( - shouldMatchQueryUnit.replace("$FIELD", "jobs.job_name"). - replace("$VALUE", job.toLowerCase().trim()))); - } - } - ObjectNode nestedNode = Json.newObject(); - ObjectNode queryNode = Json.newObject(); - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - queryNode.put("query", boolNode); - queryNode.put("path", "jobs"); - nestedNode.put("nested", queryNode); - - mustValueList.add(nestedNode); - } - if (jobNotInList != null && jobNotInList.size() > 0) - { - shouldValueList.clear(); - for(String job : jobNotInList) - { - if (StringUtils.isNotBlank(job)) - { - shouldValueList.add( - Json.parse( - mustNotQueryUnit.replace("$FIELD", "jobs.job_name"). - replace("$VALUE", job.toLowerCase().trim()))); - } - } - ObjectNode nestedNode = Json.newObject(); - ObjectNode queryNode = Json.newObject(); - ObjectNode shouldNode = Json.newObject(); - ObjectNode boolNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - boolNode.put("bool", shouldNode); - queryNode.put("query", boolNode); - queryNode.put("path", "jobs"); - nestedNode.put("nested", queryNode); - mustNotValueList.add(nestedNode); - } - - ObjectNode boolNode = Json.newObject(); - ObjectNode queryNode = Json.newObject(); - if (mustValueList.size() > 0 && mustNotValueList.size() > 0) - { - boolNode.set("must", Json.toJson(mustValueList)); - boolNode.set("must_not", Json.toJson(mustNotValueList)); - queryNode.put("bool", boolNode); - } - else if (mustValueList.size() > 0) - { - boolNode.set("must", Json.toJson(mustValueList)); - queryNode.put("bool", boolNode); - } - else if (mustNotValueList.size() > 0) - { - boolNode.set("must_not", Json.toJson(mustNotValueList)); - queryNode.put("bool", boolNode); - } - - return queryNode; + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); } - public static ObjectNode generateElasticSearchFilterString(String sources) - { - if (StringUtils.isBlank(sources)) { - return null; + if (metricInList != null && metricInList.size() > 0) { + shouldValueList.clear(); + for (String name : metricInList) { + if (StringUtils.isNotBlank(name)) { + shouldValueList.add(Json.parse(shouldMatchQueryUnit.replace("$FIELD", "metric_name"). + replace("$VALUE", name.toLowerCase().trim()))); } - - List shouldValueList = new ArrayList(); - - String queryTemplate = datasetFilterQueryUnit; - String[] values = sources.trim().split(","); - - for (String value : values) { - if (StringUtils.isNotBlank(value)) { - String query = queryTemplate.replace("$SOURCE", value.replace("\"", "").toLowerCase().trim()); - shouldValueList.add(Json.parse(query)); - } - } - - ObjectNode shouldNode = Json.newObject(); - shouldNode.set("should", Json.toJson(shouldValueList)); - ObjectNode queryNode = Json.newObject(); - queryNode.put("bool", shouldNode); - return queryNode; + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); } + if (metricNotInList != null && metricNotInList.size() > 0) { + shouldValueList.clear(); + for (String name : metricNotInList) { + if (StringUtils.isNotBlank(name)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "metric_name"). + replace("$VALUE", name.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); + } + + ObjectNode boolNode = Json.newObject(); + ObjectNode queryNode = Json.newObject(); + if (mustValueList.size() > 0 && mustNotValueList.size() > 0) { + boolNode.set("must", Json.toJson(mustValueList)); + boolNode.set("must_not", Json.toJson(mustNotValueList)); + queryNode.put("bool", boolNode); + } else if (mustValueList.size() > 0) { + boolNode.set("must", Json.toJson(mustValueList)); + queryNode.put("bool", boolNode); + } else if (mustNotValueList.size() > 0) { + boolNode.set("must_not", Json.toJson(mustNotValueList)); + queryNode.put("bool", boolNode); + } + + return queryNode; + } + + public static ObjectNode generateFlowJobAdvSearchQueryString(JsonNode searchOpt) { + List appcodeInList = new ArrayList(); + List appcodeNotInList = new ArrayList(); + List flowInList = new ArrayList(); + List flowNotInList = new ArrayList(); + List jobInList = new ArrayList(); + List jobNotInList = new ArrayList(); + + if (searchOpt != null && (searchOpt.isContainerNode())) { + if (searchOpt.has("appcode")) { + JsonNode appcodeNode = searchOpt.get("appcode"); + if (appcodeNode != null && appcodeNode.isContainerNode()) { + if (appcodeNode.has("in")) { + JsonNode appcodeInNode = appcodeNode.get("in"); + if (appcodeInNode != null) { + String appcodeInStr = appcodeInNode.asText(); + if (StringUtils.isNotBlank(appcodeInStr)) { + String[] appcodeInArray = appcodeInStr.split(","); + if (appcodeInArray != null) { + for (String value : appcodeInArray) { + if (StringUtils.isNotBlank(value)) { + appcodeInList.add(value.trim()); + } + } + } + } + } + } + if (appcodeNode.has("not")) { + JsonNode appcodeNotInNode = appcodeNode.get("not"); + if (appcodeNotInNode != null) { + String appcodeNotInStr = appcodeNotInNode.asText(); + if (StringUtils.isNotBlank(appcodeNotInStr)) { + String[] appcodeNotInArray = appcodeNotInStr.split(","); + if (appcodeNotInArray != null) { + for (String value : appcodeNotInArray) { + if (StringUtils.isNotBlank(value)) { + appcodeNotInList.add(value.trim()); + } + } + } + } + } + } + } + } + + if (searchOpt.has("flow")) { + JsonNode flowNode = searchOpt.get("flow"); + if (flowNode != null && flowNode.isContainerNode()) { + if (flowNode.has("in")) { + JsonNode flowInNode = flowNode.get("in"); + if (flowInNode != null) { + String flowInStr = flowInNode.asText(); + if (StringUtils.isNotBlank(flowInStr)) { + String[] flowInArray = flowInStr.split(","); + if (flowInArray != null) { + for (String value : flowInArray) { + if (StringUtils.isNotBlank(value)) { + flowInList.add(value.trim()); + } + } + } + } + } + } + if (flowNode.has("not")) { + JsonNode flowNotInNode = flowNode.get("not"); + if (flowNotInNode != null) { + String flowNotInStr = flowNotInNode.asText(); + if (StringUtils.isNotBlank(flowNotInStr)) { + String[] flowNotInArray = flowNotInStr.split(","); + if (flowNotInArray != null) { + for (String value : flowNotInArray) { + if (StringUtils.isNotBlank(value)) { + flowNotInList.add(value.trim()); + } + } + } + } + } + } + } + } + + if (searchOpt.has("job")) { + JsonNode jobNode = searchOpt.get("job"); + if (jobNode != null && jobNode.isContainerNode()) { + if (jobNode.has("in")) { + JsonNode jobInNode = jobNode.get("in"); + if (jobInNode != null) { + String jobInStr = jobInNode.asText(); + if (StringUtils.isNotBlank(jobInStr)) { + String[] jobInArray = jobInStr.split(","); + if (jobInArray != null) { + for (String value : jobInArray) { + if (StringUtils.isNotBlank(value)) { + jobInList.add(value.trim()); + } + } + } + } + } + } + if (jobNode.has("not")) { + JsonNode jobNotInNode = jobNode.get("not"); + if (jobNotInNode != null) { + String jobNotInStr = jobNotInNode.asText(); + if (StringUtils.isNotBlank(jobNotInStr)) { + String[] jobNotInArray = jobNotInStr.split(","); + if (jobNotInArray != null) { + for (String value : jobNotInArray) { + if (StringUtils.isNotBlank(value)) { + jobNotInList.add(value.trim()); + } + } + } + } + } + } + } + } + } + + List mustValueList = new ArrayList(); + List mustNotValueList = new ArrayList(); + List shouldValueList = new ArrayList(); + + String shouldMatchQueryUnit = + "{\"bool\": " + "{\"should\": " + "[{\"wildcard\": {\"$FIELD\": {\"value\": \"*$VALUE*\", \"boost\": 1}}}, " + + "{\"prefix\": {\"$FIELD\": {\"value\": \"$VALUE\", \"boost\": 4}}}, " + + "{\"match\": {\"$FIELD\": {\"query\": \"$VALUE\", \"boost\": 16}}}" + "]" + "}" + "}"; + String mustNotQueryUnit = "{\"term\" : {\"$FIELD\" : \"$VALUE\"}}"; + + if (appcodeInList != null && appcodeInList.size() > 0) { + for (String appCode : appcodeInList) { + if (StringUtils.isNotBlank(appCode)) { + shouldValueList.add(Json.parse(shouldMatchQueryUnit.replace("$FIELD", "app_code"). + replace("$VALUE", appCode.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (appcodeNotInList != null && appcodeNotInList.size() > 0) { + shouldValueList.clear(); + for (String appCode : appcodeNotInList) { + if (StringUtils.isNotBlank(appCode)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "app_code"). + replace("$VALUE", appCode.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); + } + + if (flowInList != null && flowInList.size() > 0) { + shouldValueList.clear(); + for (String flow : flowInList) { + if (StringUtils.isNotBlank(flow)) { + shouldValueList.add(Json.parse(shouldMatchQueryUnit.replace("$FIELD", "flow_name"). + replace("$VALUE", flow.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustValueList.add(boolNode); + } + if (flowNotInList != null && flowNotInList.size() > 0) { + shouldValueList.clear(); + for (String flow : flowNotInList) { + if (StringUtils.isNotBlank(flow)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "flow_name"). + replace("$VALUE", flow.toLowerCase().trim()))); + } + } + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + mustNotValueList.add(boolNode); + } + + if (jobInList != null && jobInList.size() > 0) { + shouldValueList.clear(); + for (String job : jobInList) { + if (StringUtils.isNotBlank(job)) { + shouldValueList.add(Json.parse(shouldMatchQueryUnit.replace("$FIELD", "jobs.job_name"). + replace("$VALUE", job.toLowerCase().trim()))); + } + } + ObjectNode nestedNode = Json.newObject(); + ObjectNode queryNode = Json.newObject(); + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + queryNode.put("query", boolNode); + queryNode.put("path", "jobs"); + nestedNode.put("nested", queryNode); + + mustValueList.add(nestedNode); + } + if (jobNotInList != null && jobNotInList.size() > 0) { + shouldValueList.clear(); + for (String job : jobNotInList) { + if (StringUtils.isNotBlank(job)) { + shouldValueList.add(Json.parse(mustNotQueryUnit.replace("$FIELD", "jobs.job_name"). + replace("$VALUE", job.toLowerCase().trim()))); + } + } + ObjectNode nestedNode = Json.newObject(); + ObjectNode queryNode = Json.newObject(); + ObjectNode shouldNode = Json.newObject(); + ObjectNode boolNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + boolNode.put("bool", shouldNode); + queryNode.put("query", boolNode); + queryNode.put("path", "jobs"); + nestedNode.put("nested", queryNode); + mustNotValueList.add(nestedNode); + } + + ObjectNode boolNode = Json.newObject(); + ObjectNode queryNode = Json.newObject(); + if (mustValueList.size() > 0 && mustNotValueList.size() > 0) { + boolNode.set("must", Json.toJson(mustValueList)); + boolNode.set("must_not", Json.toJson(mustNotValueList)); + queryNode.put("bool", boolNode); + } else if (mustValueList.size() > 0) { + boolNode.set("must", Json.toJson(mustValueList)); + queryNode.put("bool", boolNode); + } else if (mustNotValueList.size() > 0) { + boolNode.set("must_not", Json.toJson(mustNotValueList)); + queryNode.put("bool", boolNode); + } + + return queryNode; + } + + public static ObjectNode generateElasticSearchFilterString(String sources) { + if (StringUtils.isBlank(sources)) { + return null; + } + + List shouldValueList = new ArrayList(); + + String queryTemplate = datasetFilterQueryUnit; + String[] values = sources.trim().split(","); + + for (String value : values) { + if (StringUtils.isNotBlank(value)) { + String query = queryTemplate.replace("$SOURCE", value.replace("\"", "").toLowerCase().trim()); + shouldValueList.add(Json.parse(query)); + } + } + + ObjectNode shouldNode = Json.newObject(); + shouldNode.set("should", Json.toJson(shouldValueList)); + ObjectNode queryNode = Json.newObject(); + queryNode.put("bool", shouldNode); + return queryNode; + } } \ No newline at end of file diff --git a/wherehows-frontend/app/utils/Tree.java b/wherehows-frontend/app/utils/Tree.java index 8d0982abfb..79ba221b34 100644 --- a/wherehows-frontend/app/utils/Tree.java +++ b/wherehows-frontend/app/utils/Tree.java @@ -14,28 +14,27 @@ package utils; import com.fasterxml.jackson.databind.JsonNode; +import java.io.File; +import java.io.FileInputStream; import org.apache.commons.lang3.StringUtils; import play.Logger; import play.Play; import play.libs.Json; -import java.io.File; -import java.io.FileInputStream; -public class Tree -{ - public static JsonNode loadTreeJsonNode(String key) { - if (StringUtils.isNotBlank(key)) { - String treeName = Play.application().configuration().getString(key); - if (StringUtils.isNotBlank(treeName)) { - try { - return Json.parse(new FileInputStream(new File(treeName))); - } catch (Exception e) { - Logger.error(e.getMessage()); - } - } +public class Tree { + public static JsonNode loadTreeJsonNode(String key) { + if (StringUtils.isNotBlank(key)) { + String treeName = Play.application().configuration().getString(key); + if (StringUtils.isNotBlank(treeName)) { + try { + return Json.parse(new FileInputStream(new File(treeName))); + } catch (Exception e) { + Logger.error(e.getMessage()); } - - return Json.toJson(""); + } } + + return Json.toJson(""); + } }