package org.molgenis.mutation.web; import java.io.IOException; import java.text.ParseException; import java.util.List; import java.util.Map; import javax.servlet.ServletOutputStream; //import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.collections.CollectionUtils; import org.molgenis.framework.db.DatabaseException; import org.molgenis.framework.server.MolgenisContext; import org.molgenis.framework.server.MolgenisRequest; import org.molgenis.framework.server.MolgenisResponse; import org.molgenis.framework.server.MolgenisService; import org.molgenis.mutation.ServiceLocator; import org.molgenis.mutation.dto.LovdDTO; import org.molgenis.mutation.service.LovdService; public class LovdServlet implements MolgenisService { public LovdServlet(@SuppressWarnings("unused") MolgenisContext mc) { } @Override public void handleRequest(MolgenisRequest req, MolgenisResponse resp) throws ParseException, DatabaseException, IOException { // HttpServletRequest request = req.getRequest(); HttpServletResponse response = resp.getResponse(); try { response.setContentType("text/plain"); LovdService lovdService = ServiceLocator.instance().getLovdService(); lovdService.setDatabase(req.getDatabase()); LovdDTO lovdDTO = lovdService.export(); ServletOutputStream out = response.getOutputStream(); out.println("### LOVD-version 2999-090 ### Full data download ### To import, do not remove or alter this header ###"); out.println("# charset = UTF-8"); out.println("## Genes ## Do not remove or alter this header ##"); this.printMap(lovdDTO.getGeneMap(), out); out.println(); out.println("## Transcripts ## Do not remove or alter this header ##"); out.println(); out.println("## Diseases ## Do not remove or alter this header ##"); out.println(); out.println("## Individuals ## Do not remove or alter this header ##"); this.printMap(lovdDTO.getIndividualMap(), response.getOutputStream()); out.println(); out.println("## Phenotypes ## Do not remove or alter this header ##"); this.printMap(lovdDTO.getIndividualDiseaseMap(), out); out.println(); out.println("## Screenings ## Do not remove or alter this header ##"); out.println(); out.println("## Screenings_To_Genes ## Do not remove or alter this header ##"); out.println(); out.println("## Variants_On_Genome ## Do not remove or alter this header ##"); this.printMap(lovdDTO.getVariantGenomeMap(), out); out.println(); out.println("## Variants_On_Transcripts ## Do not remove or alter this header ##"); this.printMap(lovdDTO.getVariantTranscriptMap(), out); out.println(); out.println("## Screenings_To_Variants ## Do not remove or alter this header ##"); out.println(); } catch (Exception e) { try { e.printStackTrace(); response.sendError(500, e.getMessage()); } catch (Exception e2) { // bad luck } } } private void printMap(List<Map<String, String>> lovdList, ServletOutputStream out) throws IOException { if (CollectionUtils.isEmpty(lovdList)) return; for (String key : lovdList.get(0).keySet()) { out.print("\"{{" + key + "}}\"\t"); } out.println(); for (Map<String, String> lovdMap : lovdList) { for (String key : lovdMap.keySet()) { out.print(lovdMap.get(key) + "\t"); } out.println(); } } }