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();