From 0ade7af739be83d08401a6a268e6b6e682243f7d Mon Sep 17 00:00:00 2001 From: Mirco Nasuti <mirco.nasuti@chuv.ch> Date: Wed, 13 Jul 2016 16:37:04 +0200 Subject: [PATCH] refactoring experimentApi to use Spring Data --- .../hbp/mip/controllers/ExperimentApi.java | 59 +++++++------------ .../repositories/ExperimentRepository.java | 3 + 2 files changed, 23 insertions(+), 39 deletions(-) diff --git a/src/main/java/org/hbp/mip/controllers/ExperimentApi.java b/src/main/java/org/hbp/mip/controllers/ExperimentApi.java index 508839d0c..c25f493e7 100644 --- a/src/main/java/org/hbp/mip/controllers/ExperimentApi.java +++ b/src/main/java/org/hbp/mip/controllers/ExperimentApi.java @@ -1,5 +1,6 @@ package org.hbp.mip.controllers; +import com.google.common.collect.Iterables; import com.google.gson.*; import io.swagger.annotations.*; import org.apache.log4j.Logger; @@ -21,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.MalformedURLException; +import java.util.Iterator; import java.util.UUID; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @@ -209,53 +211,32 @@ public class ExperimentApi { int maxResultCount, String modelSlug ) { - /*List<Experiment> experiments = new LinkedList<>(); User user = mipApplication.getUser(); + Iterable<Experiment> experiments = null; - try { - Query hibernateQuery; - String baseQuery = "from Experiment as e WHERE "; - - baseQuery += mine ? "e.createdBy = :user" : "(e.createdBy = :user OR e.shared is true)"; - - if (modelSlug == null || "".equals(modelSlug)) { - hibernateQuery = session.createQuery(baseQuery); - } else { - baseQuery += " AND e.model.slug = :slug"; - hibernateQuery = session.createQuery(baseQuery); - hibernateQuery.setParameter("slug", modelSlug); - } - hibernateQuery.setParameter("user", user); - - if (maxResultCount > 0) - hibernateQuery.setMaxResults(maxResultCount); - - for (Object experiment: hibernateQuery.list()) { - if (experiment instanceof Experiment) { // should definitely be true - Experiment experiment1 = (Experiment) experiment; - // remove some fields because it is costly and not useful to send them over the network - experiment1.setResult(null); - experiment1.setAlgorithms(null); - experiment1.setValidations(null); - experiments.add(experiment1); - - } + Iterable<Experiment> myExperiments = experimentRepository.findByUser(user); + if(!mine) + { + Iterable<Experiment> sharedExperiments = experimentRepository.findShared(true); + experiments = Iterables.concat(myExperiments, sharedExperiments); + } - } - } catch (Exception e) { - // 404 here probably - LOGGER.trace(e); - throw e; - } finally { - if(session.getTransaction() != null) + if (modelSlug != null && !"".equals(modelSlug)) { + for(Iterator<Experiment> i = myExperiments.iterator(); i.hasNext(); ) { - session.getTransaction().rollback(); + Experiment e = i.next(); + e.setResult(null); + e.setAlgorithms(null); + e.setValidations(null); + if(!e.getModel().getSlug().equals(modelSlug)) + { + i.remove(); + } } } - return new ResponseEntity<>(gson.toJson(experiments), HttpStatus.OK);*/ + return new ResponseEntity<>(gson.toJson(experiments), HttpStatus.OK); - return new ResponseEntity<>("", HttpStatus.OK); } private ResponseEntity<String> doMarkExperimentAsShared(String uuid, boolean shared) { diff --git a/src/main/java/org/hbp/mip/repositories/ExperimentRepository.java b/src/main/java/org/hbp/mip/repositories/ExperimentRepository.java index bceb59e9d..17d8d5fb4 100644 --- a/src/main/java/org/hbp/mip/repositories/ExperimentRepository.java +++ b/src/main/java/org/hbp/mip/repositories/ExperimentRepository.java @@ -1,6 +1,7 @@ package org.hbp.mip.repositories; import org.hbp.mip.model.Experiment; +import org.hbp.mip.model.User; import org.springframework.data.repository.CrudRepository; import java.util.UUID; @@ -10,4 +11,6 @@ import java.util.UUID; */ public interface ExperimentRepository extends CrudRepository<Experiment, UUID> { + Iterable<Experiment> findByUser(User user); + Iterable<Experiment> findShared(Boolean shared); } -- GitLab