Bonjour à tous,
j'ai un petit exercice à faire mais sur lequel je bute pas mal... j'ai parcouru pas mal de forums mais j'ai du mal à y voir clair et à proposer une solution.
J'ai donc un web service (que je n'ai pas écrit et que j'ai bien du mal à comprendre) qui appel une synthèse "select.rptdesign".
Voici le web service :
la requête qui accède à la base est en dur dans la synthèse. Et j’aimerai pouvoir y passer des paramètre pour la rendre dynamique via ce web service mais je n'ai aucune idée de comment cela marche...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.eclipse.birt.report.engine.api.EXCELRenderOption; import org.eclipse.birt.report.engine.api.EngineException; import org.eclipse.birt.report.engine.api.IExcelRenderOption; import org.eclipse.birt.report.engine.api.IRenderOption; import org.eclipse.birt.report.engine.api.IReportEngine; import org.eclipse.birt.report.engine.api.IReportRunnable; import org.eclipse.birt.report.engine.api.IRunAndRenderTask; import org.eclipse.birt.report.engine.api.RenderOption; import org.joda.time.DateTime; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.stereotype.Service; import fr.eau.aerm.osmose.admin.birtsample.service.BirtEngineFactory; import fr.eau.aerm.osmose.core.webservice.OsmoseAbstractWebservice; @Path() @Service public class BirtWS extends OsmoseAbstractWebservice { @Path() @GET @Consumes({ MediaType.APPLICATION_JSON, MediaType.TEXT_PLAIN }) @Produces("application/vnd.ms-excel") public Response test4() throws EngineException { final ByteArrayOutputStream output = new ByteArrayOutputStream(); final BufferedOutputStream out = new BufferedOutputStream(output); try { // report engine final BirtEngineFactory bef = BirtEngineFactory.getInstance(); final IReportEngine birtEngine = bef.getObject(); // report IReportRunnable runnable = null; final Resource[] schemaLocation = new PathMatchingResourcePatternResolver() .getResources("classpath:/birtsample/select.rptdesign"); if (schemaLocation != null && schemaLocation.length > 0) { runnable = birtEngine.openReportDesign(schemaLocation[0].getInputStream()); final IRunAndRenderTask runAndRenderTask = birtEngine.createRunAndRenderTask(runnable); // options de rendu final IRenderOption options = new RenderOption(); final EXCELRenderOption xlsOptions = new EXCELRenderOption(options); xlsOptions.setOutputFormat("xls"); xlsOptions.setOption(IExcelRenderOption.OFFICE_VERSION, "office2003"); xlsOptions.setOutputStream(out); runAndRenderTask.setRenderOption(xlsOptions); runAndRenderTask.run(); runAndRenderTask.close(); } } catch (final Exception e) { throw new WebApplicationException(e); } String name = "synthese_test_"; final DateTime today = new DateTime(); name = name + today.getYear() + today.getMonthOfYear() + today.getDayOfMonth() + today.getHourOfDay() + today.getMinuteOfHour() + today.getSecondOfMinute(); return Response.ok(output.toByteArray(), "application/vnd.ms-excel") .header("content-disposition", "attachment; filename = " + name + ".xls").build(); } }
Pouvez vous me donner des indications ?
Merci
Partager