code refactoring
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/42606226 Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/42606226 Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/42606226 Branch: refs/heads/master Commit: 4260622609004be83f77245ece7c6c64de240b19 Parents: 2d398cf Author: scnakandala <[email protected]> Authored: Fri Jul 8 18:53:39 2016 -0400 Committer: scnakandala <[email protected]> Committed: Fri Jul 8 18:53:39 2016 -0400 ---------------------------------------------------------------------- .../server/handler/AiravataServerHandler.java | 29 ++-------- .../catalog/impl/ExperimentCatalogImpl.java | 45 ---------------- .../catalog/impl/ExperimentRegistry.java | 56 +------------------- .../catalog/impl/ProjectRegistry.java | 47 ---------------- .../catalog/resources/WorkerResource.java | 10 +--- .../registry/cpi/ExperimentCatalog.java | 16 ------ 6 files changed, 8 insertions(+), 195 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/airavata/blob/42606226/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java index 1a7ee72..a0ae34c 100644 --- a/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java +++ b/airavata-api/airavata-api-server/src/main/java/org/apache/airavata/api/server/handler/AiravataServerHandler.java @@ -798,6 +798,7 @@ public class AiravataServerHandler implements Airavata.Iface { List<Project> projects = new ArrayList<Project>(); experimentCatalog = RegistryFactory.getExperimentCatalog(gatewayId); Map<String, String> regFilters = new HashMap<String, String>(); + regFilters.put(Constants.FieldConstants.ProjectConstants.OWNER, userName); regFilters.put(Constants.FieldConstants.ProjectConstants.GATEWAY_ID, gatewayId); for(Map.Entry<ProjectSearchFields, String> entry : filters.entrySet()) { @@ -807,18 +808,8 @@ public class AiravataServerHandler implements Airavata.Iface { regFilters.put(Constants.FieldConstants.ProjectConstants.DESCRIPTION, entry.getValue()); } } - - //FIXME - These accessible IDs should come from grouper - Map<String, String> temp = new HashMap(); - temp.put(Constants.FieldConstants.ProjectConstants.OWNER, userName); - temp.put(Constants.FieldConstants.ProjectConstants.GATEWAY_ID, gatewayId); - List<Object> allUserProjects = experimentCatalog.search(ExperimentCatalogModelType.PROJECT, temp, -1, - 0, Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC); - List<String> accessibleProjIds = new ArrayList<>(); - allUserProjects.stream().forEach(e->accessibleProjIds.add(((Project) e).getProjectID())); - - List<Object> results = experimentCatalog.searchAllAccessible(ExperimentCatalogModelType.PROJECT, accessibleProjIds, - regFilters, limit, offset, Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC); + List<Object> results = experimentCatalog.search(ExperimentCatalogModelType.PROJECT, regFilters, limit, offset, + Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC); for (Object object : results) { projects.add((Project)object); } @@ -876,6 +867,7 @@ public class AiravataServerHandler implements Airavata.Iface { List<ExperimentSummaryModel> summaries = new ArrayList<ExperimentSummaryModel>(); experimentCatalog = RegistryFactory.getExperimentCatalog(gatewayId); Map<String, String> regFilters = new HashMap(); + regFilters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName); regFilters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY_ID, gatewayId); for(Map.Entry<ExperimentSearchFields, String> entry : filters.entrySet()) { @@ -895,18 +887,7 @@ public class AiravataServerHandler implements Airavata.Iface { regFilters.put(Constants.FieldConstants.ExperimentConstants.PROJECT_ID, entry.getValue()); } } - - //FIXME - These accessible IDs should come from grouper - Map<String, String> temp = new HashMap(); - temp.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName); - temp.put(Constants.FieldConstants.ExperimentConstants.GATEWAY_ID, gatewayId); - List<Object> allUserExperiments = experimentCatalog.search(ExperimentCatalogModelType.EXPERIMENT, temp, -1, - 0, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC); - List<String> accessibleExpIds = new ArrayList<>(); - allUserExperiments.stream().forEach(e->accessibleExpIds.add(((ExperimentSummaryModel) e).getExperimentId())); - - List<Object> results = experimentCatalog.searchAllAccessible(ExperimentCatalogModelType.EXPERIMENT, - accessibleExpIds, regFilters, limit, + List<Object> results = experimentCatalog.search(ExperimentCatalogModelType.EXPERIMENT, regFilters, limit, offset, Constants.FieldConstants.ExperimentConstants.CREATION_TIME, ResultOrderType.DESC); for (Object object : results) { summaries.add((ExperimentSummaryModel) object); http://git-wip-us.apache.org/repos/asf/airavata/blob/42606226/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java index 3bc0b92..a56e10b 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java @@ -546,51 +546,6 @@ public class ExperimentCatalogImpl implements ExperimentCatalog { } /** - * This method search all the accessible resources given the set of ids of all accessible resource IDs. - * - * @param dataType Data type is a predefined type which the programmer should choose according to the object he - * is going to save in to registry - * @param accessibleIds list of string IDs of all accessible resources - * @param filters filters is a map of field name and value that you need to use for search filtration - * @param limit amount of the results to be returned - * @param offset offset of the results from the sorted list to be fetched from - * @param orderByIdentifier identifier (i.e the column) which will be used as the basis to sort the results - * @param resultOrderType The type of ordering (i.e ASC or DESC) that has to be used when retrieving the results - * @return List of objects according to the given criteria - */ - @Override - public List<Object> searchAllAccessible(ExperimentCatalogModelType dataType, List<String> accessibleIds, Map<String, - String> filters, int limit, int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException { - try { - List<Object> result = new ArrayList<Object>(); - switch (dataType) { - case PROJECT: - List<Project> projectList - = projectRegistry.searchAllAccessibleProjects(accessibleIds, filters, limit, offset, - orderByIdentifier, resultOrderType); - for (Project project : projectList ){ - result.add(project); - } - return result; - case EXPERIMENT: - List<ExperimentSummaryModel> experimentSummaries = experimentRegistry - .searchAllAccessibleExperiments(accessibleIds, filters, limit, offset, orderByIdentifier, - resultOrderType); - for (ExperimentSummaryModel ex : experimentSummaries){ - result.add(ex); - } - return result; - default: - logger.error("Unsupported data type...", new UnsupportedOperationException()); - throw new UnsupportedOperationException(); - } - } catch (Exception e) { - logger.error("Error while retrieving the resource " + dataType.toString(), new RegistryException(e)); - throw new RegistryException("Error while retrieving the resource " + dataType.toString(), e); - } - } - - /** * This method is to retrieve a specific value for a given field. * * @param dataType Data type is a predefined type which the programmer should choose according to the object he http://git-wip-us.apache.org/repos/asf/airavata/blob/42606226/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java index dd555b1..3db46f1 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java @@ -1346,63 +1346,11 @@ public class ExperimentRegistry { } List<ExperimentSummaryResource> experimentSummaryResources; if (fromTime != 0 && toTime != 0) { - experimentSummaryResources = workerResource.searchExperiments(null, new Timestamp(fromTime), new Timestamp(toTime), fil + experimentSummaryResources = workerResource.searchExperiments(new Timestamp(fromTime), new Timestamp(toTime), fil ,limit , offset, orderByIdentifier, resultOrderType); } else { experimentSummaryResources = workerResource - .searchExperiments(null, null, null, fil, limit, offset, orderByIdentifier, resultOrderType); - } - if (experimentSummaryResources != null && !experimentSummaryResources.isEmpty()) { - for (ExperimentSummaryResource ex : experimentSummaryResources) { - experimentSummaries.add(ThriftDataModelConversion.getExperimentSummary(ex)); - } - } - return experimentSummaries; - - } catch (Exception e) { - logger.error("Error while retrieving experiment summary from registry", e); - throw new RegistryException(e); - } - } - return null; - } - - public List<ExperimentSummaryModel> searchAllAccessibleExperiments(List<String> accessibleIds, Map<String, String> filters, int limit, - int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException { - Map<String, String> fil = new HashMap<String, String>(); - if (filters != null && filters.size() != 0) { - List<ExperimentSummaryModel> experimentSummaries = new ArrayList<>(); - long fromTime = 0; - long toTime = 0; - try { - for (String field : filters.keySet()) { - if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) { - fil.put(AbstractExpCatResource.ExperimentConstants.EXPERIMENT_NAME, filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) { - fil.put(AbstractExpCatResource.ExperimentConstants.USER_NAME, filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) { - fil.put(AbstractExpCatResource.ExperimentConstants.PROJECT_ID, filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY_ID)) { - fil.put(AbstractExpCatResource.ExperimentConstants.GATEWAY_ID, filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.DESCRIPTION)) { - fil.put(AbstractExpCatResource.ExperimentConstants.DESCRIPTION, filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXECUTION_ID)) { - fil.put(AbstractExpCatResource.ExperimentConstants.EXECUTION_ID, filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_STATUS)) { - fil.put(AbstractExpCatResource.ExperimentStatusConstants.STATE, filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.FROM_DATE)) { - fromTime = Long.parseLong(filters.get(field)); - } else if (field.equals(Constants.FieldConstants.ExperimentConstants.TO_DATE)) { - toTime = Long.parseLong(filters.get(field)); - } - } - List<ExperimentSummaryResource> experimentSummaryResources; - if (fromTime != 0 && toTime != 0) { - experimentSummaryResources = workerResource.searchExperiments(accessibleIds, new Timestamp(fromTime), new Timestamp(toTime), fil - ,limit , offset, orderByIdentifier, resultOrderType); - } else { - experimentSummaryResources = workerResource - .searchExperiments(accessibleIds, null, null, fil, limit, offset, orderByIdentifier, resultOrderType); + .searchExperiments(null, null, fil, limit, offset, orderByIdentifier, resultOrderType); } if (experimentSummaryResources != null && !experimentSummaryResources.isEmpty()) { for (ExperimentSummaryResource ex : experimentSummaryResources) { http://git-wip-us.apache.org/repos/asf/airavata/blob/42606226/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java index 9e16daa..7cc676c 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ProjectRegistry.java @@ -262,53 +262,6 @@ public class ProjectRegistry { return null; } - /** - * To search the projects where the user have access(owner or shared with) with the given filter criteria and retrieve the results with - * pagination support. Results can be ordered based on an identifier (i.e column) either ASC or - * DESC. - * - * @param accessibleIds - * @param filters - * @param limit - * @param offset - * @param orderByIdentifier - * @param resultOrderType - * @return - * @throws RegistryException - */ - public List<Project> searchAllAccessibleProjects(List<String> accessibleIds, Map<String, String> filters, int limit, - int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException { - Map<String, String> fil = new HashMap<String, String>(); - if (filters != null && filters.size() != 0){ - List<Project> projects = new ArrayList<Project>(); - try { - for (String field : filters.keySet()){ - if (field.equals(Constants.FieldConstants.ProjectConstants.PROJECT_NAME)){ - fil.put(AbstractExpCatResource.ProjectConstants.PROJECT_NAME, filters.get(field)); - }else if (field.equals(Constants.FieldConstants.ProjectConstants.OWNER)){ - fil.put(AbstractExpCatResource.ProjectConstants.USERNAME, filters.get(field)); - }else if (field.equals(Constants.FieldConstants.ProjectConstants.DESCRIPTION)){ - fil.put(AbstractExpCatResource.ProjectConstants.DESCRIPTION, filters.get(field)); - }else if (field.equals(Constants.FieldConstants.ProjectConstants.GATEWAY_ID)){ - fil.put(AbstractExpCatResource.ProjectConstants.GATEWAY_ID, filters.get(field)); - } - } - List<ProjectResource> projectResources = workerResource - .searchProjects(fil, accessibleIds, limit, offset, orderByIdentifier, resultOrderType); - if (projectResources != null && !projectResources.isEmpty()){ - for (ProjectResource pr : projectResources){ - projects.add(ThriftDataModelConversion.getProject(pr)); - } - } - return projects; - }catch (Exception e){ - logger.error("Error while retrieving project from registry", e); - throw new RegistryException(e); - } - } - return null; - } - public List<String> getProjectIDs (String fieldName, Object value) throws RegistryException{ List<String> projectIds = new ArrayList<String>(); try { http://git-wip-us.apache.org/repos/asf/airavata/blob/42606226/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java index dec4e7f..1e8fa4d 100644 --- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java +++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/WorkerResource.java @@ -599,7 +599,7 @@ public class WorkerResource extends AbstractExpCatResource { * @return * @throws org.apache.airavata.registry.cpi.RegistryException */ - public List<ExperimentSummaryResource> searchExperiments(List<String> accessibleIds, Timestamp fromTime, Timestamp toTime, Map<String, String> filters, int limit, + public List<ExperimentSummaryResource> searchExperiments(Timestamp fromTime, Timestamp toTime, Map<String, String> filters, int limit, int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException { List<ExperimentSummaryResource> result = new ArrayList(); EntityManager em = null; @@ -607,14 +607,6 @@ public class WorkerResource extends AbstractExpCatResource { String query = "SELECT e FROM ExperimentSummary e " + "WHERE "; - // FIXME There is a performance bottleneck for using IN clause. Try using temporary tables ? - if(accessibleIds != null){ - query += " e.experimentId IN ("; - for(String id : accessibleIds) - query += ("'" + id + "'" + ","); - query = query.substring(0, query.length()-1) + ") AND "; - } - if (filters.get(ExperimentStatusConstants.STATE) != null) { String experimentState = ExperimentState.valueOf(filters.get(ExperimentStatusConstants.STATE)).toString(); query += "e.state='" + experimentState + "' AND "; http://git-wip-us.apache.org/repos/asf/airavata/blob/42606226/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalog.java ---------------------------------------------------------------------- diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalog.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalog.java index b9b5dd5..d9df6a9 100644 --- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalog.java +++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/ExperimentCatalog.java @@ -145,22 +145,6 @@ public interface ExperimentCatalog { ResultOrderType resultOrderType) throws RegistryException; /** - * This method search all the accessible resources given the set of ids of all accessible resource IDs. - * @param dataType Data type is a predefined type which the programmer should choose according to the object he - * is going to save in to registry - * @param accessibleIds list of string IDs of all accessible resources - * @param filters filters is a map of field name and value that you need to use for search filtration - * @param limit amount of the results to be returned - * @param offset offset of the results from the sorted list to be fetched from - * @param orderByIdentifier identifier (i.e the column) which will be used as the basis to sort the results - * @param resultOrderType The type of ordering (i.e ASC or DESC) that has to be used when retrieving the results - * @return List of objects according to the given criteria - */ - public List<Object> searchAllAccessible(ExperimentCatalogModelType dataType,List<String> accessibleIds, Map<String, String> filters, - int limit, int offset, Object orderByIdentifier, - ResultOrderType resultOrderType) throws RegistryException; - - /** * This method is to retrieve a specific value for a given field. * @param dataType Data type is a predefined type which the programmer should choose according to the object he * is going to save in to registry
