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: }