Hoi allemaal,
Ik moet een functionaliteti implementeren waarbij een gebruiker met 1 klik op de knop een db tabel kan exporteren naar een csv en die kan opslaan in de door hem gewenste locatie (dus zo'n "oplsaan als" venstertje) met de gewenste bestandsnaam.
Nu ben ik zover gevorderd dat ik de csv bestan kan genereren (in een vooraf ingestelde temp directory), maar ik kan niet uitvissen hoe ik die bestand kan opslaan op een locatie waar ik zelf de voorkeur aan geef.
Dit moet dus vanaf de servlet die ik gebruik aangeroepen worden.
Dit is wat ik tot zover heb:
Sorry dat de code zo lang is. Ik wou alleen de 2 methodes laten zien waar het csv bestand aangemaakt en opgeslagen wordt.
Wat is de beste manier om die geval te tackelen? Welke onderdeel van Java kan ik hiervoor gebruiken?
Ik moet een functionaliteti implementeren waarbij een gebruiker met 1 klik op de knop een db tabel kan exporteren naar een csv en die kan opslaan in de door hem gewenste locatie (dus zo'n "oplsaan als" venstertje) met de gewenste bestandsnaam.
Nu ben ik zover gevorderd dat ik de csv bestan kan genereren (in een vooraf ingestelde temp directory), maar ik kan niet uitvissen hoe ik die bestand kan opslaan op een locatie waar ik zelf de voorkeur aan geef.
Dit moet dus vanaf de servlet die ik gebruik aangeroepen worden.
Dit is wat ik tot zover heb:
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
| public class ExportCorrections extends BaseServlet { /** * Logger for this class */ static final Logger logger = Logger.getLogger(ExportCogNos.class); private ApiLanguage language; public void init(ServletConfig servletConfig) { ..... } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { ...... } // Generate CSV file for export private void proces() { ApiDisplayDateFormatter addf; CSVWriter writer; String filename; ApiDb db = null; logger.info("generateExportFile()"); try { db = ApiDb.getPoolInstance("promo"); db.openConnection(); db.setLanguage(language); // savepoint should be set for unlocking purposes // savepoint must be set after analyse tables db.setAutoCommit(false); db.setSavePoint(); // lock all needed tables logger.info("proces() - lock table(s) exclusive"); db.lockTable("maildepot_correction", ApiDb.LOCKMODUS_SHARE); logger.info("proces() - lock table(s) exclusive, ok"); // add maildepot_correction to csv file writer = getMaildepotCorrectionFile(db); filename = writer.getFile().getAbsolutePath(); [b]Hier moet dus de "writer object" (het csv file) verplaatst+hernoemd worden naar gebruikers wens[/b] // writer.clean(); // Remove the temporary file db.commit(); logger.info("generateExportFile(), OK"); } catch (Exception e) { logger.error("generateExportFile()", e); db.rollback(); } } private CSVWriter getMaildepotCorrectionFile(ApiDb db) throws Exception { ApiConfig config = ApiConfig.getInstance(); CSVWriter writer; ResultSet rs; writer = null; rs = null; try { logger.info("getMaildepotCorrectionFile() - create MaildepotCorrection file"); writer = new CSVWriter(config.getApplication().getDataLocation() + "/correction"); String select = "select " + "id AS ID, " + .... "is_automated_month AS IS_AUTOMATED_MONTH " + "from maildepot_correction where approval_granted = 1 and is_payed = 0 order by id desc"; rs = db.selectQuery(select); StringBuffer line; line = new StringBuffer(); int rsId = rs.findColumn("ID"); ... int rsIsAutomatedMonth = rs.findColumn("IS_AUTOMATED_MONTH"); while (rs.next()) { line.setLength(0); // Fields maildepot_correction export file // 01. id line.append(rs.getString(rsId)); line.append(CSVWriter.SEMICOLON); .... // 22. is_automated_month line.append(rs.getString(rsIsAutomatedMonth)); writer.addRecord(line.toString()); } } catch (Exception e) { if (writer != null) { writer.clean(); } throw e; } finally { try { if (writer != null) { writer.close(); } if (rs != null) { rs.getStatement().close(); } } catch (IOException ioe) { logger.error("getMaildepotCorrectionFile()", ioe); } } return writer; } } |
Sorry dat de code zo lang is. Ik wou alleen de 2 methodes laten zien waar het csv bestand aangemaakt en opgeslagen wordt.
Wat is de beste manier om die geval te tackelen? Welke onderdeel van Java kan ik hiervoor gebruiken?