Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 16h55   #1
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 9
Points : 9
Par défaut [2.6.2] Création d'un paramètre dynamique avec l'API Java

Bonjour,

J'ai suivi de A à Z ce tutoriel avec la configuration suivante :
birt-runtime-2_6_2


Code :
String BIRT_HOME = "C:/Birt/birt-runtime-2_6_2/ReportEngine";
Code :
1
2
3
4
5
String nomDriver = "oracle.jdbc.driver.OracleDriver";
String urlBase = "jdbc:oracle:thin:@//localhost:1521/XE";
String loginBase = "HR";
String passBase = "hr";
String nomSourceDeDonnees = "COP_PERSON";
Code :
String requete = "SELECT DTYPE FROM COP_PERSON GROUP BY DTYPE" ;
Code :
1
2
3
String requetePrincipal = "SELECT PERSONID, DTYPE, NAME, SEXID FROM COP_PERSON where DTYPE=?";
OdaDataSetHandle odaDataSetHandlePrincipal = factory.newOdaDataSet(nomDuDataSetPrincipal, 
"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet");
Code :
1
2
3
4
mappingNomColonneLibelle.put("PERSONID", "Identifiant");
mappingNomColonneLibelle.put("DTYPE", "Type de personne");
mappingNomColonneLibelle.put("NAME", "Nom de la personne");
mappingNomColonneLibelle.put("SEXID", "Sexe de la personne");
Après ouverture du fichier rptdesign sous Eclipse "Birt Edition", mon choix de paramètre de sélection est vide, aucun choix ne se présente à moi, il semblerait qu'il n'accède pas aux données...
J'ai pourtant bien ajouter le driver jdbc au path

D’où vient le problème ?
Peut-être lors de la création du DataSet...
S'agissant d'un tutoriel pour la version 2.3.2.2, que faut-il modifier ?
n0nal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 14h57   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bonjour,

Tu enregistres ton rapport modifié avant de le lancer ?
Tu n'as pas rempli des variables que tu n'aurais affecté nullepart ensuite ?
La connexion à ta base de données fonctionne bien ?
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 09h33   #3
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 9
Points : 9
Citation:
Envoyé par BiM Voir le message
Bonjour,

Tu enregistres ton rapport modifié avant de le lancer ?
Tu n'as pas rempli des variables que tu n'aurais affecté nullepart ensuite ?
La connexion à ta base de données fonctionne bien ?
J'ai carrément repris les sources telles quelles et j'ai remplacer les noms des tables de l'exemple par les miennes donc bon...

Oui la connexion à ma base fonctionne bien.
Un affichage permet de le confirmer.

Je ne comprends pas bien le sens de ta première question !
n0nal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 09h40   #4
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Quand tu fais une modification d'un rapport en Java, il faut faire un saveAs à la fin (voir tutoriel).
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 15h28   #5
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 9
Points : 9
c'est présent dans les sources du tuto dans aussi dans mon code,
je ne vois pas bien ou mon erreur peut être

si il fonctionne bien chez vous, tant mieux, chez moi nan

je ne vais pas me prendre la tête, ça m'est égal il m'a juste servit à connaitre mieux Birt
n0nal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 15h46   #6
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Si tu veux qu'on t'aide il vaut mieux poster le code en entier plutôt qu'un morceau par ci et un morceau par là. (Bon après, si tu construis 12 tableaux, tu ne gardes que ce qui nous intéresse quand même).
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 09h44   #7
Invité régulier
 
Homme
Étudiant
Inscription : juin 2011
Messages : 27
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juin 2011
Messages : 27
Points : 9
Points : 9
Voici le code
comme vous pourrez le constater, il n'y a pas grand chose qui change par rapport au tutoriel à part tout ce qui est relatif à la base de données

Code :
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
package RequetesBdd;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
 
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.model.api.CellHandle;
import org.eclipse.birt.report.model.api.ColorHandle;
import org.eclipse.birt.report.model.api.DataItemHandle;
import org.eclipse.birt.report.model.api.DesignConfig;
import org.eclipse.birt.report.model.api.DesignElementHandle;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.IDesignEngine;
import org.eclipse.birt.report.model.api.IDesignEngineFactory;
import org.eclipse.birt.report.model.api.LabelHandle;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.OdaDataSourceHandle;
import org.eclipse.birt.report.model.api.PropertyHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.RowHandle;
import org.eclipse.birt.report.model.api.ScalarParameterHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.StructureFactory;
import org.eclipse.birt.report.model.api.StyleHandle;
import org.eclipse.birt.report.model.api.TableHandle;
import org.eclipse.birt.report.model.api.elements.DesignChoiceConstants;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import org.eclipse.birt.report.model.api.elements.structures.OdaDataSetParameter;
import com.ibm.icu.util.ULocale;
 
public class GenerateurRapportBirt {
 
	public GenerateurRapportBirt() {
 
		// Affectation du chemin vers la plateforme Birt
		String BIRT_HOME = "C:/Birt/birt-runtime-2_6_2/ReportEngine";
 
		// Configuration OSGI
		DesignConfig config = new DesignConfig();
		config.setBIRTHome(BIRT_HOME);
 
		try {
			// Démarrage de la plateforme
			Platform.startup(config);
 
			// Récupération de la fabrique de 'concepteurs de rapports'
			IDesignEngineFactory iDesignEngineFactory = (IDesignEngineFactory) Platform.createFactoryObject(IDesignEngineFactory.EXTENSION_DESIGN_ENGINE_FACTORY);
 
			// Récupération d'une instance de 'concepteur de rapport'
			IDesignEngine engine = iDesignEngineFactory.createDesignEngine(config);
 
			// Création d'une session de travail
			SessionHandle session = engine.newSessionHandle(ULocale.FRENCH);
 
			// Création d'un élement rapport
			ReportDesignHandle design = session.createDesign();
 
			// Création d'une fabrique de modules à insérer dans le rapport
			ElementFactory factory = design.getElementFactory();
 
			/*
			 * Création d'un élément master page
			 */
			// Création d'un élément Master Page
			DesignElementHandle element = factory.newSimpleMasterPage("Page Master");
			// Ajout de l'élément au rapport
			design.getMasterPages().add(element);
 
			/*
			 * Création d'un élément source de données
			 */
 
			// Spécification des paramètres de connection
			String nomDriver = "oracle.jdbc.driver.OracleDriver";
			String urlBase = "jdbc:oracle:thin:@//localhost:1521/XE";
			String loginBase = "HR";
			String passBase = "hr";
			String nomSourceDeDonnees = "PERSON";
 
			// création d'un élément source de données de type jdbc
			OdaDataSourceHandle dsHandle = factory
			.newOdaDataSource(nomSourceDeDonnees,"org.eclipse.birt.report.data.oda.jdbc");
 
			// customisation de l'élément
			dsHandle.setProperty("odaDriverClass", nomDriver);
			dsHandle.setProperty("odaURL", urlBase);
			dsHandle.setProperty("odaUser", loginBase);
			dsHandle.setProperty("odaPassword", passBase);
 
			// ajout de l'élément au rapport
			design.getDataSources().add(dsHandle);
 
			/*
			 * Création d'un élément magasin de données (dataset) sur lequel se
			 * base le paramètre de sélection
			 */
			String nomDuDataSetPourParametreDeSelection = "MagasinPourParametreDeSelection";
 
			OdaDataSetHandle odaDataSetHandle = factory.newOdaDataSet(nomDuDataSetPourParametreDeSelection,"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet");
			odaDataSetHandle.setDataSource(nomSourceDeDonnees);
			String requete = "SELECT DTYPE FROM PERSON GROUP BY DTYPE";
			odaDataSetHandle.setQueryText(requete);
 
			// ajout de l'élément au rapport
			design.getDataSets().add(odaDataSetHandle);
 
			/*
			 * Création d'un élément paramètre de sélection
			 */
			String nomDuParametreFiltre = "DTYPE";
			ScalarParameterHandle scalarParameterHandle = factory.newScalarParameter(nomDuParametreFiltre);
 
			// choix du type de choix d'affichage (ici liste-box)
			scalarParameterHandle.setControlType(DesignChoiceConstants.PARAM_CONTROL_LIST_BOX);
 
			// choix du type de valeurs (statique ici)
			scalarParameterHandle.setValueType(DesignChoiceConstants.PARAM_VALUE_TYPE_STATIC);
 
			// choix du volume de sélection possible (ici volume unitaire)
			scalarParameterHandle.setParamType(DesignChoiceConstants.SCALAR_PARAM_TYPE_SIMPLE);
 
			// choix du type des données contenues dans le paramètre
			scalarParameterHandle.setDataType(DesignChoiceConstants.PARAM_TYPE_STRING);
 
			// texte à afficher dans la fenêtre
			String textePourAffichage = "Choisir le type";
			scalarParameterHandle.setPromptText(textePourAffichage);
 
			// Spécification que la valeur choisie doit être contenue dans la
			// List-Box
			scalarParameterHandle.setMustMatch(true);
 
			// Spécification que l'affichage doit être fait de la même manière
			// que dans la source de données du paramètre de sélection
			scalarParameterHandle.setFixedOrder(true);
 
			// Spécification de la non présentation de doublon dans la liste de
			// choix
			scalarParameterHandle.setDistinct(true);
 
			// affectation du dataset pour obtenir la liste des paramètres
			// d'affichage
			scalarParameterHandle.setDataSetName(nomDuDataSetPourParametreDeSelection);
 
			// Spécification de la valeur d'affichage de la source associée à la
			// séléction
			scalarParameterHandle.setValueExpr("dataSetRow[\"DTYPE\"]");
 
			// Spécification du libellé d'affichage de la source associée à la
			// séléction
			scalarParameterHandle.setLabelExpr("dataSetRow[\"DTYPE\"]");
 
			// Pas de formatage de la valeur
			scalarParameterHandle.setCategory("Unformatted");
 
			// Ajout du paramètre au rapport
			design.getParameters().add(scalarParameterHandle);
 
			/*
			 * Construction du magasin de données principal
			 */
 
			String nomDuDataSetPrincipal = "DataSetPrincipal";
			OdaDataSetHandle odaDataSetHandlePrincipal = factory.newOdaDataSet(
					nomDuDataSetPrincipal,
			"org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet");
 
			odaDataSetHandlePrincipal.setDataSource(nomSourceDeDonnees);
			String requetePrincipal = "SELECT PERSONID,DTYPE,NAME,SEXID FROM PERSON GROUP BY DTYPE WHERE DTYPE=?";
			odaDataSetHandlePrincipal.setQueryText(requetePrincipal);
 
			// affectation du report parameter
			PropertyHandle propertyHandle = odaDataSetHandlePrincipal.getPropertyHandle(OdaDataSetHandle.PARAMETERS_PROP);
 
			OdaDataSetParameter odaDataSetParameter = StructureFactory.createOdaDataSetParameter();
 
			odaDataSetParameter.setName("param1");
			odaDataSetParameter.setDataType(DesignChoiceConstants.PARAM_TYPE_STRING);
			odaDataSetParameter.setPosition(1);
			odaDataSetParameter.setIsInput(true);
			odaDataSetParameter.setIsOutput(false);
			odaDataSetParameter.setParamName(nomDuParametreFiltre);
 
			propertyHandle.addItem(odaDataSetParameter);
 
			// ajout de l'élément au rapport
			design.getDataSets().add(odaDataSetHandlePrincipal);
 
			/*
			 * Construction de la mise en forme (Layout)
			 */
 
			CellHandle cell;
			HashMap<String, String> mappingNomColonneLibelle = new HashMap<String, String>();
			mappingNomColonneLibelle.put("PERSONID", "Identifiant");
			mappingNomColonneLibelle.put("DTYPE", "Type de personne");
			mappingNomColonneLibelle.put("NAME", "Nom de la personne");
			mappingNomColonneLibelle.put("SEXID", "Sexe de la personne");
 
			// Création d'un objet Tableau
			TableHandle tableHandle = factory.newTableItem("Tableau Test",mappingNomColonneLibelle.size());
 
			// Dimension du tableau
			tableHandle.setWidth("100%");
 
			// Affectation d'un magasin de données au tableau
			tableHandle.setDataSet(design.findDataSet(nomDuDataSetPrincipal));
 
			// Création du mapping données-valeurs pour chaque colonne
			PropertyHandle computedSet = tableHandle.getColumnBindings();
			ComputedColumn cs1 = null;
 
			Set<String> listeColonne = mappingNomColonneLibelle.keySet();
			Iterator<String> iterateurListeColonne = listeColonne.iterator();
			String valeur;
			String libelle;
			while (iterateurListeColonne.hasNext()) {
				valeur = iterateurListeColonne.next();
				libelle = mappingNomColonneLibelle.get(valeur);
				cs1 = StructureFactory.createComputedColumn();
				cs1.setName(valeur);
				cs1.setExpression("dataSetRow[\"" + valeur + "\"]");
				computedSet.addItem(cs1);
 
			}
 
			StyleHandle styleHandle;
 
			// Mise en place et formatage des libellés des cellules de la
			// première ligne
			RowHandle tableHeader = (RowHandle) tableHandle.getHeader().get(0);
			int i = -1;
			iterateurListeColonne = listeColonne.iterator();
			while (iterateurListeColonne.hasNext()) {
				i = i + 1;
				valeur = iterateurListeColonne.next();
				libelle = mappingNomColonneLibelle.get(valeur);
				LabelHandle label1 = factory.newLabel(valeur); // ERROR
				label1.setText(libelle);
				cell = (CellHandle) tableHeader.getCells().get(i);
				cell.getContent().add(label1);
 
				// formatage du css
				styleHandle = cell.getPrivateStyle();
				ColorHandle colorHandle = styleHandle.getBackgroundColor();
				colorHandle.setValue("RED");
				styleHandle
				.setTextAlign(DesignChoiceConstants.TEXT_ALIGN_CENTER);
				styleHandle
				.setVerticalAlign(DesignChoiceConstants.VERTICAL_ALIGN_MIDDLE);
				styleHandle
				.setBorderBottomStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
				styleHandle
				.setBorderTopStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
				styleHandle
				.setBorderRightStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
				styleHandle
				.setBorderLeftStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
			}
 
			// Mise en place du contenu et du formatage des cellules d'une ligne
			// courante
			RowHandle tableDetail = (RowHandle) tableHandle.getDetail().get(0);
 
			i = -1;
			iterateurListeColonne = listeColonne.iterator();
			while (iterateurListeColonne.hasNext()) {
				i = i + 1;
				valeur = iterateurListeColonne.next();
				cell = (CellHandle) tableDetail.getCells().get(i);
				DataItemHandle data = factory.newDataItem("data_"+valeur);
				data.setResultSetColumn(valeur);
				cell.getContent().add(data);
 
				// formatage du css
				styleHandle = cell.getPrivateStyle();
				styleHandle.setTextAlign(DesignChoiceConstants.TEXT_ALIGN_CENTER);
				styleHandle.setBorderBottomStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
				styleHandle.setBorderTopStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
				styleHandle.setBorderRightStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
				styleHandle.setBorderLeftStyle(DesignChoiceConstants.LINE_STYLE_SOLID);
 
			}
 
			// On ajoute finalement l'élément mise en forme
			design.getBody().add(tableHandle);
 
			// On sauvegarde finalement le rapport
			design.saveAs("C:/test.rptdesign");
			design.close();
 
			// Arrêt de la plateforme
			Platform.shutdown();
 
		} catch (BirtException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
 
	public static void main(String[] args) {
		new GenerateurRapportBirt();
	}
}
n0nal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 10h18   #8
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Ok, tu n'as pas grand chose à changer :
Code Java :
scalarParameterHandle.setValueType(DesignChoiceConstants.PARAM_VALUE_TYPE_DYNAMIC);

Tu l'avais mis en Static, dans ce cas, il ne va pas chercher dans un jeu de données.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h39.


 
 
 
 
Partenaires

Hébergement Web