Mercurial > dive4elements > gnv-client
comparison gnv/src/main/java/de/intevation/gnv/action/DoOutputAction.java @ 34:25fdec8b4c69
Added Global Errorhandling to the GNV-Client
gnv/trunk@170 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author | Tim Englich <tim.englich@intevation.de> |
---|---|
date | Fri, 02 Oct 2009 08:38:57 +0000 |
parents | 07e9c137a2f1 |
children | 4405f31bbc30 |
comparison
equal
deleted
inserted
replaced
33:32ffff3f67aa | 34:25fdec8b4c69 |
---|---|
50 @Override | 50 @Override |
51 public ActionForward execute(ActionMapping mapping, ActionForm form, | 51 public ActionForward execute(ActionMapping mapping, ActionForm form, |
52 HttpServletRequest request, HttpServletResponse response) | 52 HttpServletRequest request, HttpServletResponse response) |
53 throws Exception { | 53 throws Exception { |
54 log.debug("DoOutputAction.execute"); | 54 log.debug("DoOutputAction.execute"); |
55 String target = request.getParameter("target"); | 55 try { |
56 String mimeType = request.getParameter("mimetype"); | 56 String target = request.getParameter("target"); |
57 | 57 String mimeType = request.getParameter("mimetype"); |
58 log.debug("Target: "+target); | 58 |
59 log.debug("MimeType: "+mimeType); | 59 log.debug("Target: "+target); |
60 | 60 log.debug("MimeType: "+mimeType); |
61 // TODO Check if is propper; | 61 |
62 | 62 // TODO Check if is propper; |
63 SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request); | 63 |
64 OutputMode outputMode = sm.getOutputMode(target); | 64 SessionModel sm = SessionModelFactory.getInstance().getSessionModel(request); |
65 if (outputMode != null && outputMode.getMimeType().equals(mimeType)){ | 65 OutputMode outputMode = sm.getOutputMode(target); |
66 Collection<OutputParameter> inputParameter =outputMode.getOutputParameters(); | 66 if (outputMode != null && outputMode.getMimeType().equals(mimeType)){ |
67 Collection<InputParameter> ips = null; | 67 Collection<OutputParameter> inputParameter =outputMode.getOutputParameters(); |
68 if (inputParameter != null){ | 68 Collection<InputParameter> ips = null; |
69 ips = new ArrayList<InputParameter>(inputParameter.size()); | 69 if (inputParameter != null){ |
70 Iterator<OutputParameter> it = inputParameter.iterator(); | 70 ips = new ArrayList<InputParameter>(inputParameter.size()); |
71 while (it.hasNext()){ | 71 Iterator<OutputParameter> it = inputParameter.iterator(); |
72 String name = it.next().getName(); | 72 while (it.hasNext()){ |
73 String[] values = request.getParameterValues(name); | 73 String name = it.next().getName(); |
74 InputParameter ip = new DefaultInputParameter(name, values); | 74 String[] values = request.getParameterValues(name); |
75 ips.add(ip); | 75 InputParameter ip = new DefaultInputParameter(name, values); |
76 ips.add(ip); | |
77 } | |
76 } | 78 } |
79 | |
80 ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient(); | |
81 | |
82 this.setHeaders(target, mimeType, response, request); | |
83 | |
84 OutputStream outputStream = response.getOutputStream(); | |
85 adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips); | |
86 | |
87 outputStream.flush(); | |
88 outputStream.close(); | |
89 }else{ | |
90 if (outputMode == null){ | |
91 log.error("Outputmode wird nicht unterstützt."); | |
92 }else if (!outputMode.getMimeType().equals(mimeType)){ | |
93 log.error("MimeType "+mimeType+" wird nicht unterstützt."); | |
94 } | |
95 // TODO FIXME: Fehlerbehandlung | |
77 } | 96 } |
78 | 97 return super.execute(mapping, form, request, response); |
79 ArtifactDatabaseClient adc = ArtifactDatabaseClientFactory.getInstance().getArtifactDatabaseClient(); | 98 } catch (Exception e) { |
80 | 99 log.error(e,e); |
81 this.setHeaders(target, mimeType, response, request); | 100 request.setAttribute(CommunicationKeys.REQUEST_EXCEPTION_MESSAGE_ID, e.getMessage()); |
82 | 101 return super.getExceptionForward(mapping); |
83 OutputStream outputStream = response.getOutputStream(); | |
84 adc.doOutput(sm.getSelectedArtifactFactory(), sm.getCurrentArtifact(), outputStream, target, mimeType, ips); | |
85 | |
86 outputStream.flush(); | |
87 outputStream.close(); | |
88 }else{ | |
89 if (outputMode == null){ | |
90 log.error("Outputmode wird nicht unterstützt."); | |
91 }else if (!outputMode.getMimeType().equals(mimeType)){ | |
92 log.error("MimeType "+mimeType+" wird nicht unterstützt."); | |
93 } | |
94 // TODO FIXME: Fehlerbehandlung | |
95 } | 102 } |
96 return super.execute(mapping, form, request, response); | |
97 } | 103 } |
98 | 104 |
99 protected void setHeaders(String target, String mimeType, HttpServletResponse response, HttpServletRequest request){ | 105 protected void setHeaders(String target, String mimeType, HttpServletResponse response, HttpServletRequest request){ |
100 response.setHeader("Content-Type", mimeType); | 106 response.setHeader("Content-Type", mimeType); |
101 } | 107 } |