From 5d33408960cb379ec4f2c493d1d48d6afe703b89 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@bioforsk.no>
Date: Wed, 20 Nov 2013 16:11:44 +0100
Subject: [PATCH] Adds collection of forecasts for an organization

---
 .../VIPSCoreManagerApplication.java           |  2 +-
 .../vips/coremanager/entity/VipsCoreUser.java |  1 +
 .../service/ManagerResourceImpl.java          | 29 +++++++++++++++++++
 .../coremanager/session/UserController.java   | 10 +++++++
 4 files changed, 41 insertions(+), 1 deletion(-)

diff --git a/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java b/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java
index 265a7cf..5defcfb 100644
--- a/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java
+++ b/src/main/java/no/bioforsk/vips/coremanager/VIPSCoreManagerApplication.java
@@ -37,8 +37,8 @@ public class VIPSCoreManagerApplication extends Application
      * given list with all resources defined in the project.
      */
     private void addRestResourceClasses(Set<Class<?>> resources) {
-        resources.add(no.bioforsk.vips.core.service.ModelResource.class);
         resources.add(no.bioforsk.vips.coremanager.service.JsonParseExceptionMapper.class);
+        resources.add(no.bioforsk.vips.coremanager.service.ManagerResource.class);
         resources.add(no.bioforsk.vips.coremanager.service.ManagerResourceImpl.class);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/no/bioforsk/vips/coremanager/entity/VipsCoreUser.java b/src/main/java/no/bioforsk/vips/coremanager/entity/VipsCoreUser.java
index 9f67155..c8ed8a9 100644
--- a/src/main/java/no/bioforsk/vips/coremanager/entity/VipsCoreUser.java
+++ b/src/main/java/no/bioforsk/vips/coremanager/entity/VipsCoreUser.java
@@ -25,6 +25,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 @NamedQueries({
     @NamedQuery(name = "VipsCoreUser.findAll", query = "SELECT v FROM VipsCoreUser v"),
     @NamedQuery(name = "VipsCoreUser.findByVipsCoreUserId", query = "SELECT v FROM VipsCoreUser v WHERE v.vipsCoreUserId = :vipsCoreUserId"),
+    @NamedQuery(name = "VipsCoreUser.findByOrganizationId", query = "SELECT v FROM VipsCoreUser v WHERE v.organizationId = :organizationId"),
     @NamedQuery(name = "VipsCoreUser.findByFirstName", query = "SELECT v FROM VipsCoreUser v WHERE v.firstName = :firstName"),
     @NamedQuery(name = "VipsCoreUser.findByLastName", query = "SELECT v FROM VipsCoreUser v WHERE v.lastName = :lastName")})
 public class VipsCoreUser implements Serializable {
diff --git a/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java b/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java
index 9b8eac7..738f26b 100644
--- a/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java
+++ b/src/main/java/no/bioforsk/vips/coremanager/service/ManagerResourceImpl.java
@@ -6,6 +6,7 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
@@ -116,7 +117,19 @@ public class ManagerResourceImpl implements ManagerResource{
     }
 
     
+    @GET
+    @Path("models/{modelId}/name")
+    @Produces("text/plain;charset=UTF-8")
+    public Response printModelName(@PathParam("modelId") String modelId) {
+        return this.printModelName(modelId, Model.DEFAULT_LANGUAGE);
+    }
 
+    @GET
+    @Path("models/{modelId}/name/{language}")
+    @Produces("text/plain;charset=UTF-8")
+    public Response printModelName(@PathParam("modelId") String modelId, @PathParam("language") String language) {
+        return Response.ok().entity(this.getModelResource().printModelName(modelId, language).readEntity(String.class)).build();
+    }
     
     
     @GET
@@ -211,6 +224,22 @@ public class ManagerResourceImpl implements ManagerResource{
         }
     }
     
+    /**
+     * Fetches users that belong to given organization
+     * TODO: Should be authenticated (how to structure this???)
+     * @param organizationId
+     * @return 
+     */
+    @GET
+    @Path("organizations/{organizationId}/users")
+    @Produces("application/json")
+    @Override
+    public Response getUsersForOrganization(@PathParam("organizationId") Integer organizationId)
+    {
+        List<VipsCoreUser> users = ControllerGetter.getUserController().getVipsCoreUserForOrganization(organizationId);
+        return Response.ok().entity(users).build();
+    }
+    
     /**
      * Instantiates and runs the requested model
      * @param modelId
diff --git a/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java b/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java
index 838b18a..ba3ef6d 100644
--- a/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java
+++ b/src/main/java/no/bioforsk/vips/coremanager/session/UserController.java
@@ -2,6 +2,7 @@ package no.bioforsk.vips.coremanager.session;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 import javax.ejb.LocalBean;
@@ -11,6 +12,7 @@ import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
 import javax.persistence.Query;
 import no.bioforsk.vips.coremanager.entity.ModelUsageLog;
+import no.bioforsk.vips.coremanager.entity.Organization;
 import no.bioforsk.vips.coremanager.entity.VIPSCoreCredentials;
 import no.bioforsk.vips.coremanager.entity.VipsCoreUser;
 import no.bioforsk.vips.util.MD5Encrypter;
@@ -61,6 +63,14 @@ public class UserController {
         return em.find(VipsCoreUser.class, userId);
     }
     
+    public List<VipsCoreUser> getVipsCoreUserForOrganization(Integer organizationId)
+    {
+        Organization organization = em.find(Organization.class, organizationId);
+        Query q = em.createNamedQuery("VipsCoreUser.findByOrganizationId");
+        q.setParameter("organizationId", organization);
+        return q.getResultList();
+    }
+    
     /**
      * @return Properties for this server
      */
-- 
GitLab