raimund@612: /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz
raimund@612: * Software engineering by Intevation GmbH
raimund@612: *
rrenkert@629: * This file is Free Software under the GNU GPL (v>=3)
rrenkert@629: * and comes with ABSOLUTELY NO WARRANTY! Check out
rrenkert@629: * the documentation coming with IMIS-Labordaten-Application for details.
raimund@612: */
raimund@612: package de.intevation.lada.rest.importer;
raimund@612:
raimund@612: import java.util.HashMap;
raimund@612: import java.util.Map;
raimund@612:
raimund@612: import javax.enterprise.context.RequestScoped;
raimund@612: import javax.inject.Inject;
raimund@612: import javax.servlet.http.HttpServletRequest;
raimund@612: import javax.ws.rs.Consumes;
raimund@612: import javax.ws.rs.POST;
raimund@612: import javax.ws.rs.Path;
raimund@612: import javax.ws.rs.Produces;
raimund@612: import javax.ws.rs.core.Context;
raimund@612: import javax.ws.rs.core.MediaType;
raimund@612:
raimund@612: import de.intevation.lada.importer.ImportConfig;
raimund@612: import de.intevation.lada.importer.ImportFormat;
raimund@612: import de.intevation.lada.importer.Importer;
raimund@612: import de.intevation.lada.util.annotation.AuthorizationConfig;
raimund@612: import de.intevation.lada.util.auth.Authorization;
raimund@612: import de.intevation.lada.util.auth.AuthorizationType;
raimund@612: import de.intevation.lada.util.auth.UserInfo;
raimund@612: import de.intevation.lada.util.rest.Response;
raimund@612:
raimund@612: /**
raimund@612: * This class produces a RESTful service to interact with probe objects.
raimund@612: *
raimund@612: * @author Raimund Renkert
raimund@612: */
raimund@1069: @Path("data/import")
raimund@612: @RequestScoped
raimund@612: public class LafImportService {
raimund@612:
rrenkert@629: /**
rrenkert@629: * The importer
rrenkert@629: */
raimund@612: @Inject
raimund@612: @ImportConfig(format=ImportFormat.LAF)
raimund@612: private Importer importer;
raimund@612:
rrenkert@629: /**
rrenkert@629: * The authorization module.
rrenkert@629: */
raimund@612: @Inject
raimund@722: @AuthorizationConfig(type=AuthorizationType.HEADER)
raimund@612: private Authorization authorization;
raimund@612:
raimund@612: /**
rrenkert@629: * Import a LAF formatted file.
raimund@612: *
rrenkert@629: * @param input String containing file content.
raimund@612: * @param header The HTTP header containing authorization information.
raimund@612: * @return Response object.
raimund@612: */
raimund@612: @POST
raimund@612: @Path("/laf")
raimund@612: @Produces(MediaType.APPLICATION_JSON)
raimund@612: @Consumes(MediaType.TEXT_PLAIN)
raimund@612: public Response upload(
raimund@612: String content,
raimund@1069: @Context HttpServletRequest request
raimund@1069: ) {
raimund@612: UserInfo userInfo = authorization.getInfo(request);
raimund@612:
raimund@612: importer.doImport(content, userInfo);
raimund@612: Map respData = new HashMap();
raimund@612: respData.put("errors", importer.getErrors());
raimund@612: respData.put("warnings", importer.getWarnings());
raimund@612: int code = 200;
raimund@612: Response response = new Response(importer.getErrors().isEmpty(), code, respData);
raimund@612: importer.reset();
raimund@612: return response;
raimund@612: }
raimund@612: }