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 }

http://dive4elements.wald.intevation.org