Added new SQL tables.

Change-Id: I6f1a4b2bf54298af6b821262dfa649a1504a4e1c
diff --git a/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java b/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java
new file mode 100644
index 0000000..8677b87
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/dao/AnnotationDao.java
@@ -0,0 +1,27 @@
+package de.ids_mannheim.korap.dao;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+
+import de.ids_mannheim.korap.handlers.EntityDao;
+
+/**
+ * AnnotationDao manages SQL queries regarding information about
+ * annotations, e.g foundries and layers.
+ * 
+ * @author margaretha
+ *
+ */
+public class AnnotationDao {
+
+    private static Logger jlog = LoggerFactory.getLogger(AnnotationDao.class);
+    private NamedParameterJdbcTemplate jdbcTemplate;
+
+
+    public AnnotationDao () {
+        // TODO Auto-generated constructor stub
+    }
+    
+    
+}
diff --git a/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
new file mode 100644
index 0000000..9d6b268
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
@@ -0,0 +1,36 @@
+package de.ids_mannheim.korap.dao;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import org.springframework.jdbc.core.namedparam.SqlParameterSource;
+
+import de.ids_mannheim.korap.handlers.RowMapperFactory;
+import de.ids_mannheim.korap.interfaces.db.PersistenceClient;
+
+/** ResourceDao manages SQL queries regarding resource info and layers.
+ * 
+ * @author margaretha
+ *
+ */
+public class ResourceDao {
+
+    private static Logger jlog = LoggerFactory.getLogger(ResourceDao.class);
+    private NamedParameterJdbcTemplate jdbcTemplate;
+
+
+    public ResourceDao (PersistenceClient<?> client) {
+        this.jdbcTemplate = (NamedParameterJdbcTemplate) client.getSource();
+    }
+
+    // EM: use JPA?
+    public void getResourceInfo (String resourceId) {
+        SqlParameterSource namedParameters = new MapSqlParameterSource(
+                "resourceId", resourceId);
+        String sql = "select * from resource where id=:resourceId";
+//        this.jdbcTemplate.queryForObject(sql, namedParameters,
+//                new RowMapperFactory.ResourceMapper());
+    }
+
+}
diff --git a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
index e611f4e..cea63b1 100644
--- a/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
+++ b/src/main/java/de/ids_mannheim/korap/exceptions/StatusCodes.java
@@ -77,7 +77,7 @@
     public static final int DB_UPDATE_SUCCESSFUL = 507;
 
 
-    public static final int ARGUMENT_VALIDATION_FAILURE = 700;
+//    public static final int ARGUMENT_VALIDATION_FAILURE = 700;
     // public static final int ARGUMENT_VALIDATION_FAILURE = 701;
 
     // service status codes
diff --git a/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java b/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java
index f308827..abbacf0 100644
--- a/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java
+++ b/src/main/java/de/ids_mannheim/korap/resource/rewrite/FoundryInject.java
@@ -33,13 +33,13 @@
     public JsonNode rewriteQuery (KoralNode node, KustvaktConfiguration config,
             User user) throws KustvaktException {
         LayerMapper mapper;
-
-        if (user != null && !userdaos.isEmpty()) {
-            UserDataDbIface dao = BeansFactory.getTypeFactory()
-                    .getTypeInterfaceBean(userdaos, UserSettings.class);
-            mapper = new LayerMapper(config, dao.get(user));
-        }
-        else
+        // EM: do not use DB
+//        if (user != null && !userdaos.isEmpty()) {
+//            UserDataDbIface dao = BeansFactory.getTypeFactory()
+//                    .getTypeInterfaceBean(userdaos, UserSettings.class);
+//            mapper = new LayerMapper(config, dao.get(user));
+//        }
+//        else
             mapper = new LayerMapper(config);
 
         if (node.get("@type").equals("koral:term") && !node.has("foundry")) {
diff --git a/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java b/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java
index d11355e..f9cf0bf 100644
--- a/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java
+++ b/src/main/java/de/ids_mannheim/korap/security/auth/KustvaktAuthenticationManager.java
@@ -258,8 +258,9 @@
 			throws KustvaktException {
 		AuthenticationIface provider = getProvider(provider_key, Attributes.API_AUTHENTICATION);
 
-		if (attr.get(Attributes.SCOPES) != null)
-			this.getUserData(user, UserDetails.class);
+		// EM: not in the new DB
+//		if (attr.get(Attributes.SCOPES) != null)
+//			this.getUserData(user, UserDetails.class);
 
 		TokenContext context = provider.createTokenContext(user, attr);
 		if (context == null)
@@ -890,9 +891,9 @@
 		return new Object[] { uritoken, TimeUtils.format(param.getUriExpiration()) };
 	}
 
+	// EM: not in the new DB
 	@Override
 	public <T extends Userdata> T getUserData(User user, Class<T> clazz) throws WrappedException {
-
 		try {
 			UserDataDbIface<T> dao = BeansFactory.getTypeFactory()
 					.getTypeInterfaceBean(BeansFactory.getKustvaktContext().getUserDataProviders(), clazz);
diff --git a/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java b/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
index 13b6d23..159a786 100644
--- a/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
+++ b/src/main/java/de/ids_mannheim/korap/web/KustvaktBaseServer.java
@@ -105,23 +105,14 @@
             contextHandler.addServlet(new ServletHolder(
                     new ServletContainer(rc)), "/api/*");
 
-	            server.setHandler(contextHandler);
-
-//            if (kargs.sslContext != null) {
-//                SslSocketConnector sslConnector = new SslSocketConnector(
-//                        kargs.sslContext);
-//                sslConnector.setPort(8443);
-//                sslConnector.setMaxIdleTime(60000);
-//                server.setConnectors(new Connector[] { connector, sslConnector });
-//            }
-//            else
+	        server.setHandler(contextHandler);
             server.setConnectors(new Connector[] { connector });
-
             server.start();
             server.join();
         }
         catch (Exception e) {
             System.out.println("Server could not be started!");
+            System.out.println(e.getMessage());
             System.exit(-1);
         }
 
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/AnnotationService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/AnnotationService.java
new file mode 100644
index 0000000..e519a10
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/AnnotationService.java
@@ -0,0 +1,80 @@
+package de.ids_mannheim.korap.web.service.full;
+
+import java.util.List;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.spi.container.ResourceFilters;
+
+import de.ids_mannheim.korap.exceptions.StatusCodes;
+import de.ids_mannheim.korap.web.KustvaktServer;
+import de.ids_mannheim.korap.web.filter.AuthFilter;
+import de.ids_mannheim.korap.web.filter.DemoUserFilter;
+import de.ids_mannheim.korap.web.filter.PiwikFilter;
+import de.ids_mannheim.korap.web.utils.KustvaktResponseHandler;
+
+/**
+ * Provides services regarding annotation related information.
+ * 
+ * @author margaretha
+ *
+ */
+@Path(KustvaktServer.API_VERSION + "/annotation/")
+@ResourceFilters({ AuthFilter.class, DemoUserFilter.class, PiwikFilter.class })
+@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
+public class AnnotationService {
+
+    private static Logger jlog = LoggerFactory
+            .getLogger(AnnotationService.class);
+
+
+    @GET
+    @Path("layers")
+    public Response getLayers () {
+        // TODO Auto-generated method stub
+        return Response.status(200).build();
+    }
+
+
+    @POST
+    @Path("description")
+    public Response getAnnotations (@QueryParam("symbol") List<String> symbols,
+            String language) {
+        if (language == null || language.isEmpty()) {
+            language = "en";
+        }
+        if (symbols == null){
+            throw KustvaktResponseHandler.throwit(StatusCodes.MISSING_ARGUMENT);
+        }
+        if (symbols.isEmpty() || symbols.contains("*")){
+            // select all 
+        }
+        else {
+            String[] annotationPair;
+            String foundry, layer;
+            
+            for (String s : symbols){
+                annotationPair = s.split("/");
+                if (annotationPair.length != 2){
+                    throw KustvaktResponseHandler.throwit(StatusCodes.PARAMETER_VALIDATION_ERROR);
+                }
+                foundry = annotationPair[0];
+                layer = annotationPair[1];
+                // select
+            }
+        }
+        
+        return Response.status(200).build();
+    }
+
+}
+
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java
index 5fdbe62..67a11ef 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/OAuthService.java
@@ -200,8 +200,9 @@
 
             try {
                 user = controller.getUser(c.getUsername());
-                Userdata data = controller.getUserData(user, UserDetails.class);
-                user.addUserData(data);
+                // EM: not in the new DB
+//                Userdata data = controller.getUserData(user, UserDetails.class);
+//                user.addUserData(data);
             }
             catch (KustvaktException e) {
                 throw KustvaktResponseHandler.throwit(e);
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
new file mode 100644
index 0000000..36e41bf
--- /dev/null
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/ResourceService.java
@@ -0,0 +1,52 @@
+package de.ids_mannheim.korap.web.service.full;
+
+import java.util.List;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.sun.jersey.spi.container.ResourceFilters;
+
+import de.ids_mannheim.korap.web.KustvaktServer;
+import de.ids_mannheim.korap.web.filter.AuthFilter;
+import de.ids_mannheim.korap.web.filter.DemoUserFilter;
+import de.ids_mannheim.korap.web.filter.PiwikFilter;
+
+/**
+ * Provides information about free resources.
+ * 
+ * @author margaretha
+ *
+ */
+@Path(KustvaktServer.API_VERSION + "/resource/")
+@ResourceFilters({ AuthFilter.class, DemoUserFilter.class, PiwikFilter.class })
+@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
+public class ResourceService {
+
+    private static Logger jlog = LoggerFactory.getLogger(ResourceService.class);
+
+
+    @GET
+    @Path("info")
+    public Response getResourceInfo () {
+        // TODO Auto-generated method stub
+        return Response.status(200).build();
+    }
+
+
+    @POST
+    @Path("layers")
+    public Response getResourceLayers (
+            @QueryParam("resourceId") List<String> resourceIds) {
+        // TODO Auto-generated method stub
+        return Response.status(200).build();
+    }
+}
diff --git a/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java b/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java
index 74cb2a9..1242823 100644
--- a/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java
+++ b/src/main/java/de/ids_mannheim/korap/web/service/full/SearchService.java
@@ -77,9 +77,9 @@
 @Path(KustvaktServer.API_VERSION + "/")
 @ResourceFilters({ AuthFilter.class, DemoUserFilter.class, PiwikFilter.class })
 @Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
-public class ResourceService {
+public class SearchService {
 
-    private static Logger jlog = LoggerFactory.getLogger(ResourceService.class);
+    private static Logger jlog = LoggerFactory.getLogger(SearchService.class);
 
     private SearchKrill searchKrill;
     private ResourceHandler resourceHandler;
@@ -89,7 +89,7 @@
     private RewriteHandler processor;
 
 
-    public ResourceService () {
+    public SearchService () {
         this.controller = BeansFactory.getKustvaktContext()
                 .getAuthenticationManager();
         this.config = BeansFactory.getKustvaktContext().getConfiguration();