Added retrieve user VC service.
Change-Id: I6dc6bc4cef43a502545a37dc810283039649b913
diff --git a/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java b/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java
index 43e26af..e51d36c 100644
--- a/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java
+++ b/full/src/main/java/de/ids_mannheim/korap/constant/VirtualCorpusType.java
@@ -3,4 +3,9 @@
public enum VirtualCorpusType {
PREDEFINED, PROJECT, PRIVATE, PUBLISHED;
+
+ public String displayName () {
+ return name().toLowerCase();
+
+ }
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusDto.java b/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusDto.java
index 6f44a4c..f75d5d6 100644
--- a/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusDto.java
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/VirtualCorpusDto.java
@@ -1,7 +1,19 @@
package de.ids_mannheim.korap.dto;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
public class VirtualCorpusDto {
- int id;
+ private int id;
+ private String name;
+ private String type;
+ private String status;
+ private String description;
+ private String access;
+ private String createdBy;
+ private int numberOfDoc;
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusConverter.java b/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusConverter.java
new file mode 100644
index 0000000..c4920e8
--- /dev/null
+++ b/full/src/main/java/de/ids_mannheim/korap/dto/converter/VirtualCorpusConverter.java
@@ -0,0 +1,34 @@
+package de.ids_mannheim.korap.dto.converter;
+
+import org.springframework.stereotype.Service;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import de.ids_mannheim.korap.dto.VirtualCorpusDto;
+import de.ids_mannheim.korap.entity.VirtualCorpus;
+import de.ids_mannheim.korap.exceptions.KustvaktException;
+import de.ids_mannheim.korap.utils.JsonUtils;
+
+@Service
+public class VirtualCorpusConverter {
+
+ public VirtualCorpusDto createVirtualCorpusDto (VirtualCorpus vc,
+ String statistics) throws KustvaktException {
+
+ VirtualCorpusDto dto = new VirtualCorpusDto();
+ dto.setId(vc.getId());
+ dto.setName(vc.getName());
+ dto.setCreatedBy(vc.getCreatedBy());
+ dto.setAccess(vc.getRequiredAccess().name());
+ dto.setStatus(vc.getStatus());
+ dto.setDescription(vc.getDescription());
+ dto.setType(vc.getType().displayName());
+
+ JsonNode node = JsonUtils.readTree(statistics);
+ int numberOfDoc = node.at("/documents").asInt();
+ dto.setNumberOfDoc(numberOfDoc);
+
+ return dto;
+
+ }
+}
diff --git a/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java b/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java
index 6064f9a..4cf831a 100644
--- a/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java
+++ b/full/src/main/java/de/ids_mannheim/korap/service/VirtualCorpusService.java
@@ -1,5 +1,9 @@
package de.ids_mannheim.korap.service;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,8 +15,12 @@
import de.ids_mannheim.korap.config.FullConfiguration;
import de.ids_mannheim.korap.constant.VirtualCorpusType;
import de.ids_mannheim.korap.dao.VirtualCorpusDao;
+import de.ids_mannheim.korap.dto.VirtualCorpusDto;
+import de.ids_mannheim.korap.dto.converter.VirtualCorpusConverter;
+import de.ids_mannheim.korap.entity.VirtualCorpus;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
+import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.query.serialize.QuerySerializer;
import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.user.User.CorpusAccess;
@@ -29,16 +37,19 @@
@Autowired
private VirtualCorpusDao dao;
-
@Autowired
private SearchKrill krill;
-
@Autowired
private FullConfiguration config;
+ @Autowired
+ private AuthenticationManagerIface authManager;
+ @Autowired
+ private VirtualCorpusConverter converter;
- public void storeVC (VirtualCorpusFromJson vc, User user)
+ public void storeVC (VirtualCorpusFromJson vc, String username)
throws KustvaktException {
+ User user = authManager.getUser(username);
// EM: how about VirtualCorpusType.PUBLISHED?
if (vc.getType().equals(VirtualCorpusType.PREDEFINED)
&& !user.isAdmin()) {
@@ -100,4 +111,19 @@
jlog.debug("License: " + license + ", number of docs: " + numberOfDoc);
return (numberOfDoc > 0) ? true : false;
}
+
+ public List<VirtualCorpusDto> retrieveUserVC (String username)
+ throws KustvaktException {
+
+ Set<VirtualCorpus> vcs = dao.retrieveVCByUser(username);
+ ArrayList<VirtualCorpusDto> dtos = new ArrayList<>(vcs.size());
+
+ for (VirtualCorpus vc : vcs) {
+ String json = vc.getCollectionQuery();
+ String statistics = krill.getStatistics(json);
+ VirtualCorpusDto vcDto = converter.createVirtualCorpusDto(vc, statistics);
+ dtos.add(vcDto);
+ }
+ return dtos;
+ }
}
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
index 18fc518..81f293b 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/VirtualCorpusController.java
@@ -1,8 +1,12 @@
package de.ids_mannheim.korap.web.controller;
+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.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@@ -15,12 +19,11 @@
import com.sun.jersey.spi.container.ResourceFilters;
+import de.ids_mannheim.korap.dto.VirtualCorpusDto;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
-import de.ids_mannheim.korap.interfaces.AuthenticationManagerIface;
import de.ids_mannheim.korap.service.VirtualCorpusService;
import de.ids_mannheim.korap.user.TokenContext;
-import de.ids_mannheim.korap.user.User;
import de.ids_mannheim.korap.utils.JsonUtils;
import de.ids_mannheim.korap.utils.ParameterChecker;
import de.ids_mannheim.korap.web.FullResponseHandler;
@@ -32,15 +35,14 @@
@Controller
@Path("vc")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
-@ResourceFilters({ AuthenticationFilter.class, DemoUserFilter.class, PiwikFilter.class })
+@ResourceFilters({ AuthenticationFilter.class, DemoUserFilter.class,
+ PiwikFilter.class })
public class VirtualCorpusController {
private static Logger jlog =
LoggerFactory.getLogger(VirtualCorpusController.class);
@Autowired
- private AuthenticationManagerIface authManager;
- @Autowired
private FullResponseHandler responseHandler;
@Autowired
private VirtualCorpusService service;
@@ -67,8 +69,7 @@
context.getUsername());
}
- User user = authManager.getUser(context.getUsername());
- service.storeVC(vc, user);
+ service.storeVC(vc, context.getUsername());
}
catch (KustvaktException e) {
throw responseHandler.throwit(e);
@@ -76,4 +77,29 @@
return Response.ok().build();
}
+ @GET
+ @Path("user")
+ public Response getUserVC (@Context SecurityContext securityContext,
+ @QueryParam("userId") String userId) throws KustvaktException {
+
+ TokenContext context =
+ (TokenContext) securityContext.getUserPrincipal();
+ if (context.isDemo()) {
+ throw new KustvaktException(StatusCodes.AUTHORIZATION_FAILED,
+ "Operation is not permitted for user: "
+ + context.getUsername(),
+ context.getUsername());
+ }
+
+ List<VirtualCorpusDto> dtos = service.retrieveUserVC(context.getUsername());
+ String result;
+ try {
+ result = JsonUtils.toJSON(dtos);
+ }
+ catch (KustvaktException e) {
+ throw responseHandler.throwit(e);
+ }
+ return Response.ok(result).build();
+ }
+
}