Revision 786696e3
Added by Andreas Müller over 10 years ago
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/csv/CsvExportController.java | ||
---|---|---|
12 | 12 |
import java.io.ByteArrayOutputStream; |
13 | 13 |
import java.io.File; |
14 | 14 |
import java.io.InputStreamReader; |
15 |
import java.io.PrintWriter; |
|
15 | 16 |
import java.util.ArrayList; |
16 | 17 |
import java.util.Arrays; |
17 | 18 |
import java.util.HashSet; |
... | ... | |
35 | 36 |
import org.springframework.web.bind.annotation.RequestMethod; |
36 | 37 |
import org.springframework.web.bind.annotation.RequestParam; |
37 | 38 |
|
39 |
import eu.etaxonomy.cdm.api.service.IService; |
|
38 | 40 |
import eu.etaxonomy.cdm.api.service.ITermService; |
39 | 41 |
import eu.etaxonomy.cdm.io.common.CdmApplicationAwareDefaultExport; |
40 | 42 |
import eu.etaxonomy.cdm.io.csv.redlist.out.CsvTaxExportConfiguratorRedlist; |
... | ... | |
42 | 44 |
import eu.etaxonomy.cdm.model.location.NamedArea; |
43 | 45 |
import eu.etaxonomy.cdm.model.taxon.Classification; |
44 | 46 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
47 |
import eu.etaxonomy.cdm.remote.controller.AbstractController; |
|
45 | 48 |
import eu.etaxonomy.cdm.remote.controller.ProgressMonitorController; |
46 | 49 |
import eu.etaxonomy.cdm.remote.editor.NamedAreaPropertyEditor; |
47 | 50 |
import eu.etaxonomy.cdm.remote.editor.UUIDListPropertyEditor; |
... | ... | |
54 | 57 |
*/ |
55 | 58 |
@Controller |
56 | 59 |
@RequestMapping(value = { "/csv" }) |
57 |
public class CsvExportController{ |
|
60 |
public class CsvExportController extends AbstractController{
|
|
58 | 61 |
|
59 | 62 |
/** |
60 | 63 |
* |
... | ... | |
101 | 104 |
CsvTaxExportConfiguratorRedlist config = setTaxExportConfigurator(classificationUUID, featureUuids, areas, byteArrayOutputStream); |
102 | 105 |
CdmApplicationAwareDefaultExport<?> defaultExport = (CdmApplicationAwareDefaultExport<?>) appContext.getBean("defaultExport"); |
103 | 106 |
logger.info("Start export..."); |
107 |
logger.info("doExportRedlist()" + requestPathAndQuery(request)); |
|
104 | 108 |
defaultExport.invoke(config); |
105 | 109 |
try { |
106 | 110 |
/* |
... | ... | |
110 | 114 |
* |
111 | 115 |
* HTPP Error Break |
112 | 116 |
*/ |
113 |
ByteArrayInputStream bais = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); |
|
114 |
InputStreamReader isr = new InputStreamReader(bais, "UTF-8"); |
|
115 |
ServletOutputStream sos = response.getOutputStream(); |
|
117 |
ByteArrayInputStream bais = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());//byteArrayOutputStream.toByteArray() |
|
118 |
InputStreamReader isr = new InputStreamReader(bais); |
|
116 | 119 |
Cookie progressCookie = new Cookie("fileDownloadToken", downloadTokenValueId); |
117 | 120 |
progressCookie.setPath("/"); |
118 | 121 |
progressCookie.setMaxAge(60); |
119 | 122 |
response.addCookie(progressCookie); |
120 | 123 |
response.setContentType("text/csv; charset=utf-8"); |
121 | 124 |
response.setHeader("Content-Disposition", "attachment; filename=\""+config.getClassificationTitleCache()+".txt\""); |
125 |
PrintWriter printWriter = response.getWriter(); |
|
122 | 126 |
|
123 | 127 |
int i; |
124 | 128 |
while((i = isr.read())!= -1){ |
125 |
sos.write(i);
|
|
129 |
printWriter.write(i);
|
|
126 | 130 |
} |
127 | 131 |
byteArrayOutputStream.flush(); |
128 | 132 |
isr.close(); |
129 | 133 |
byteArrayOutputStream.close(); |
130 |
sos.flush();
|
|
131 |
sos.close();
|
|
134 |
printWriter.flush();
|
|
135 |
printWriter.close();
|
|
132 | 136 |
} catch (Exception e) { |
133 | 137 |
logger.error("error generating feed", e); |
134 | 138 |
} |
... | ... | |
172 | 176 |
config.setNamedAreas(selectedAreas); |
173 | 177 |
return config; |
174 | 178 |
} |
179 |
|
|
180 |
/* (non-Javadoc) |
|
181 |
* @see eu.etaxonomy.cdm.remote.controller.AbstractController#setService(eu.etaxonomy.cdm.api.service.IService) |
|
182 |
*/ |
|
183 |
@Override |
|
184 |
public void setService(IService service) { |
|
185 |
// TODO Auto-generated method stub |
|
186 |
|
|
187 |
} |
|
188 |
|
|
175 | 189 |
} |
Also available in: Unified diff
merge trunk into cdm3.3 branch