blob: cb76ca859357f2b790909d6235f8def444b9ccbb [file] [log] [blame]
package de.ids_mannheim.korap.web.service.full;
import java.util.Locale;
import javax.ws.rs.GET;
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;
import javax.ws.rs.core.SecurityContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import com.sun.jersey.spi.container.ResourceFilters;
import de.ids_mannheim.korap.exceptions.KustvaktException;
import de.ids_mannheim.korap.exceptions.StatusCodes;
import de.ids_mannheim.korap.utils.KoralCollectionQueryBuilder;
import de.ids_mannheim.korap.web.SearchKrill;
import de.ids_mannheim.korap.web.filter.PiwikFilter;
import de.ids_mannheim.korap.web.utils.KustvaktResponseHandler;
/**
* Services related to statistics
*
* @author hanl
* @author margaretha
*
* @date 27/09/2017
*
*/
@Controller
@Path("statistics/")
@ResourceFilters({ PiwikFilter.class })
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public class StatisticService {
private static Logger jlog =
LoggerFactory.getLogger(StatisticService.class);
@Autowired
private SearchKrill searchKrill;
/**
* Returns statistics of the virtual corpus defined by the given
* collectionQuery parameter.
*
* @param context
* SecurityContext
* @param locale
* Locale
* @param collectionQuery
* a collection query specifying a virtual corpus
* @return statistics of the virtual corpus defined by the given
* collectionQuery parameter.
*/
@GET
public Response getStatistics (@Context SecurityContext context,
@Context Locale locale,
@QueryParam("collectionQuery") String collectionQuery) {
if (collectionQuery == null || collectionQuery.isEmpty()) {
throw KustvaktResponseHandler
.throwit(new KustvaktException(StatusCodes.MISSING_ARGUMENT,
"Parameter collectionQuery is missing.",
"collectionQuery"));
}
KoralCollectionQueryBuilder builder = new KoralCollectionQueryBuilder();
builder.with(collectionQuery);
String json = builder.toJSON();
String stats = searchKrill.getStatistics(json);
if (stats.contains("-1"))
throw KustvaktResponseHandler.throwit(StatusCodes.NO_VALUE_FOUND);
jlog.debug("Stats: " + stats);
return Response.ok(stats).build();
}
}