You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sh...@apache.org on 2016/07/07 19:30:22 UTC
[36/53] [abbrv] airavata git commit: updating the search projects API
method
updating the search projects API method
Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/aedabdb3
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/aedabdb3
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/aedabdb3
Branch: refs/heads/master
Commit: aedabdb322fab68cd9432fcf3475eccaba02d52d
Parents: 7a636a4
Author: scnakandala <su...@gmail.com>
Authored: Mon Jun 27 18:58:43 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Jun 27 18:58:43 2016 -0400
----------------------------------------------------------------------
.../server/handler/AiravataServerHandler.java | 20 +++++++++++++-------
.../catalog/impl/ProjectRegistry.java | 4 ++--
.../catalog/resources/WorkerResource.java | 15 +++++++++++++--
3 files changed, 28 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/airavata/blob/aedabdb3/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 ab33786..a274641 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
@@ -74,7 +74,6 @@ import org.apache.airavata.registry.core.app.catalog.resources.*;
import org.apache.airavata.registry.core.app.catalog.util.AppCatalogThriftConversion;
import org.apache.airavata.registry.core.experiment.catalog.ExpCatResourceUtils;
import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
-import org.apache.airavata.registry.core.experiment.catalog.model.ExperimentSummary;
import org.apache.airavata.registry.cpi.*;
import org.apache.airavata.registry.cpi.utils.Constants;
import org.apache.thrift.TException;
@@ -802,7 +801,6 @@ 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())
{
@@ -812,8 +810,18 @@ public class AiravataServerHandler implements Airavata.Iface {
regFilters.put(Constants.FieldConstants.ProjectConstants.DESCRIPTION, entry.getValue());
}
}
- List<Object> results = experimentCatalog.search(ExperimentCatalogModelType.PROJECT, regFilters, limit, offset,
- Constants.FieldConstants.ProjectConstants.CREATION_TIME, ResultOrderType.DESC);
+
+ //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);
for (Object object : results) {
projects.add((Project)object);
}
@@ -871,8 +879,6 @@ public class AiravataServerHandler implements Airavata.Iface {
List<ExperimentSummaryModel> summaries = new ArrayList<ExperimentSummaryModel>();
experimentCatalog = RegistryFactory.getExperimentCatalog(gatewayId);
Map<String, String> regFilters = new HashMap();
- //FIXME
- //regFilters.put(Constants.FieldConstants.ExperimentConstants.USER_NAME, userName);
regFilters.put(Constants.FieldConstants.ExperimentConstants.GATEWAY_ID, gatewayId);
for(Map.Entry<ExperimentSearchFields, String> entry : filters.entrySet())
{
@@ -893,7 +899,7 @@ public class AiravataServerHandler implements Airavata.Iface {
}
}
- //FIXME
+ //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);
http://git-wip-us.apache.org/repos/asf/airavata/blob/aedabdb3/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 8861b68..9e16daa 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
@@ -247,7 +247,7 @@ public class ProjectRegistry {
}
}
List<ProjectResource> projectResources = workerResource
- .searchProjects(fil, limit, offset, orderByIdentifier, resultOrderType);
+ .searchProjects(fil, null, limit, offset, orderByIdentifier, resultOrderType);
if (projectResources != null && !projectResources.isEmpty()){
for (ProjectResource pr : projectResources){
projects.add(ThriftDataModelConversion.getProject(pr));
@@ -294,7 +294,7 @@ public class ProjectRegistry {
}
}
List<ProjectResource> projectResources = workerResource
- .searchProjects(fil, limit, offset, orderByIdentifier, resultOrderType);
+ .searchProjects(fil, accessibleIds, limit, offset, orderByIdentifier, resultOrderType);
if (projectResources != null && !projectResources.isEmpty()){
for (ProjectResource pr : projectResources){
projects.add(ThriftDataModelConversion.getProject(pr));
http://git-wip-us.apache.org/repos/asf/airavata/blob/aedabdb3/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 5fdc265..dec4e7f 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
@@ -508,12 +508,23 @@ public class WorkerResource extends AbstractExpCatResource {
* @return
* @throws org.apache.airavata.registry.cpi.RegistryException
*/
- public List<org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource> searchProjects(Map<String, String> filters, int limit,
- int offset, Object orderByIdentifier, ResultOrderType resultOrderType) throws RegistryException {
+ public List<org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource> searchProjects(
+ Map<String, String> filters, List<String> accessibleIds, int limit, int offset, Object orderByIdentifier,
+ ResultOrderType resultOrderType) throws RegistryException {
+
List<org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource> result = new ArrayList<org.apache.airavata.registry.core.experiment.catalog.resources.ProjectResource>();
EntityManager em = null;
try {
String query = "SELECT DISTINCT p from Project p WHERE ";
+
+ // FIXME There is a performance bottleneck for using IN clause. Try using temporary tables ?
+ if(accessibleIds != null){
+ query += " p.projectId IN (";
+ for(String id : accessibleIds)
+ query += ("'" + id + "'" + ",");
+ query = query.substring(0, query.length()-1) + ") AND ";
+ }
+
if (filters != null && filters.size() != 0) {
for (String field : filters.keySet()) {
String filterVal = filters.get(field);