Fixed resource DAO & added tests.

Change-Id: I9222d20efa62f7bc37b8e38a2d1ec6b0ea70117e
diff --git a/full/Changes b/full/Changes
index bef9e7c..0ab4d5f 100644
--- a/full/Changes
+++ b/full/Changes
@@ -6,7 +6,8 @@
     - Implemented parsing free resource info from json (margaretha)
 22/10/2018
     - Updated jetty, spring and hibernate versions (margaretha)
-    - Fixed annotation order & added tests (margaretha)
+    - Fixed the order of annotation keys and values, and added tests (margaretha)
+    - Fixed resource DAO & added tests (margaretha)
 
 # version 0.61.2
 12/09/2018
diff --git a/full/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java b/full/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
index ff3ffd0..d12ff3f 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
@@ -4,8 +4,10 @@
 import java.util.Set;
 
 import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
 import javax.persistence.PersistenceContext;
 import javax.persistence.Query;
+import javax.persistence.TypedQuery;
 import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Root;
@@ -37,15 +39,14 @@
      * 
      * @return a list of resources
      */
-    @SuppressWarnings("unchecked")
     public List<Resource> getAllResources () {
         CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
         CriteriaQuery<Resource> query =
                 criteriaBuilder.createQuery(Resource.class);
         Root<Resource> resource = query.from(Resource.class);
         query.select(resource);
-        
-        Query q = entityManager.createQuery(query);
+
+        TypedQuery<Resource> q = entityManager.createQuery(query);
         return q.getResultList();
     }
 
@@ -58,12 +59,17 @@
         query.where(criteriaBuilder.equal(resource.get(Resource_.id), id));
 
         Query q = entityManager.createQuery(query);
-        return (Resource) q.getSingleResult();
+        try {
+            return (Resource) q.getSingleResult();
+        }
+        catch (NoResultException e) {
+            return null;
+        }
     }
 
     public void createResource (String id, String germanTitle,
-            String englishTitle, String englishDescription, Set<AnnotationLayer> layers)
-            throws KustvaktException {
+            String englishTitle, String englishDescription,
+            Set<AnnotationLayer> layers) throws KustvaktException {
         ParameterChecker.checkStringValue(id, "id");
         ParameterChecker.checkStringValue(englishTitle, "en_title");
         ParameterChecker.checkStringValue(germanTitle, "de_title");
diff --git a/full/src/main/java/de/ids_mannheim/korap/entity/Resource.java b/full/src/main/java/de/ids_mannheim/korap/entity/Resource.java
index fbe3f92..813adc5 100644
--- a/full/src/main/java/de/ids_mannheim/korap/entity/Resource.java
+++ b/full/src/main/java/de/ids_mannheim/korap/entity/Resource.java
@@ -6,8 +6,8 @@
 import javax.persistence.Entity;
 import javax.persistence.FetchType;
 import javax.persistence.Id;
-import javax.persistence.JoinTable;
 import javax.persistence.JoinColumn;
+import javax.persistence.JoinTable;
 import javax.persistence.ManyToMany;
 import javax.persistence.Table;
 
diff --git a/full/src/main/resources/free-resources.json b/full/src/main/resources/free-resources.json
index ea71020..ba6f63e 100644
--- a/full/src/main/resources/free-resources.json
+++ b/full/src/main/resources/free-resources.json
@@ -5,6 +5,9 @@
     "en_description" : "A collection of German Wikipedia articles from May 2015.",
     "layers": [
         "opennlp/p",
-        "corenlp/p"
+        "corenlp/p",
+        "corenlp/c",
+        "marmot/m",
+        "marmot/p"
     ]
 }]
\ No newline at end of file
diff --git a/full/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java b/full/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
new file mode 100644
index 0000000..7fc5807
--- /dev/null
+++ b/full/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
@@ -0,0 +1,31 @@
+package de.ids_mannheim.korap.web.controller;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.sun.jersey.api.client.ClientResponse;
+
+import de.ids_mannheim.korap.config.SpringJerseyTest;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.utils.JsonUtils;
+
+public class FreeResourceControllerTest extends SpringJerseyTest {
+    
+    @Test
+    public void testResource () throws KustvaktException {
+        ClientResponse response = resource().path(API_VERSION)
+                .path("resource").path("info").get(ClientResponse.class);
+
+        String entity = response.getEntity(String.class);
+        JsonNode n = JsonUtils.readTree(entity).get(0);
+        
+        assertEquals("WPD15",n.at("/resourceId").asText());
+        assertEquals("Deutsche Wikipedia Artikel 2015", n.at("/titles/de").asText());
+        assertEquals("German Wikipedia Articles 2015", n.at("/titles/en").asText());
+        assertEquals(1, n.at("/languages").size());
+        assertEquals(5, n.at("/layers").size());
+    }
+
+}