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 17/05/2008, 16h37   #1
Invité régulier
 
Inscription : avril 2005
Messages : 12
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2005
Messages : 12
Points : 5
Points : 5
Par défaut [2.2.2][Java] Partage d'objet entre DataSourceHandler et DataSetHandler

Bonjour,
je suis en train de développer un état avec birt et j'essaye au maximum de tout faire en java pour simplifier la maintenance. Pour le projet nous récupérons les données via des appels EJB, qui nous retournent des objets java dont je fais une liste de tableau d'objet qui est utiliser ensuite dans l'événement fetch.

J'ai donc plusieurs ScriptedDataSource en fonction de l'origine de mes données, et après sur chaque datasource j'ai un ou plusieurs dataset.
J'ai rajouté des eventhandler sur mes datasource et dataset.
Pour rendre mon code efficace, il y a certains objets que je ne voudrais récupérer qu'une seule fois au niveau de mon datasource et ensuite les partager avec ses différents dataset.

Ma question est donc de savoir si à partir de la référence du datasource présent dans le eventhander du dataset, si on pouvait avoir une référence sur le eventhandler du datasource. Comme ca avec un cast, je pourrais avoir accès depuis tous mes dataset aux données qui sont chargé à l'évenement "open" de mon datasource...

J'espère que vous pourrez m'aider
nbegorre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2008, 17h08   #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,

Je ne comprends pas. Les ScriptedDataSource n'ont aucune particularités. Un ScriptedDataSource 1 est identique à un ScriptedDataSource 2, il ne définit aucune source de données puisqu'en général les ScriptedDataSet récupèreront leurs données dans le DataSet.

Après, pour la suite j'ai pas tout compris.
__________________
__~{@ 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 17/05/2008, 17h26   #3
Invité régulier
 
Inscription : avril 2005
Messages : 12
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2005
Messages : 12
Points : 5
Points : 5
C'est vrai que mon explication est pas des plus claires...

J'ai plusieurs dataset qui retournent des données basé sur un même objet java. Cet objet java étant long à récupéré (plusieurs secondes par EJB) j'aurais aimé le récupérer au moment de l'ouverture du datasource et le partager ensuite avec mes différents dataset.

En fait je cherche un moyen pour partager un objet java entre différents mes différents classe étandant ScriptedDataSetEventAdapter...
nbegorre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2008, 17h39   #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
Pourquoi ne passes-tu pas directement l'objet Java en paramètre ?
__________________
__~{@ 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 17/05/2008, 17h51   #5
Invité régulier
 
Inscription : avril 2005
Messages : 12
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2005
Messages : 12
Points : 5
Points : 5
Très bonne question
Je n'avais pas vu qu'on pouvait utiliser le reportContext pour réaliser ce genre de chose.

Donc pour ne pas avoir de référence sur les handler, dans le DataSoureHandler je met l'objet à partager en paramètres sur le reportContext :
Code :
1
2
3
4
5
6
7
	@Override
	public void afterOpen(IDataSourceInstance dataSource,
			IReportContext reportContext) {
		super.afterOpen(dataSource, reportContext);
		reportContext.setParameterValue("glObal", new Double(1000000));
 
	}
et dans le DataSetHandler, je récupère l'objet dans la méthode beforeOpen
Code :
1
2
3
4
5
6
7
8
	private Object global;
 
	@Override
	public void beforeOpen(IDataSetInstance dataSet,
			IReportContext reportContext) {
		global = reportContext.getParameterValue("glObal");
		super.beforeOpen(dataSet, reportContext);
	}
Merci de ton aide ! Est ce que c'est une question qui pourrait aller dans la FAQ ou bien elle est trop basique ?
nbegorre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2008, 19h27   #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
Elle est déjà dans la FAQ

En fait, tu n'utilises pas le designer j'ai l'impression. Puisque tu peux mettre dans le beforeOpen via le designer (Tu cliques sur ton_data_source > onglet script > menu déroulant beforeOpen) tout simplement :
Code JavaScript :
params["glObal"] = new java.lang.Double(1000000);
De même pour le DataSet :
Code JavaScript :
global = params["glObal"].value;
__________________
__~{@ 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 19/05/2008, 10h38   #7
Invité régulier
 
Inscription : avril 2005
Messages : 12
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2005
Messages : 12
Points : 5
Points : 5
J'utilise bien le designer, mais pour tout ce qui est script je préfère tout faire en java plutôt que du javascript... Une mauvaise habitude sans doute.

Merci encore une fois
nbegorre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 10h42   #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
Citation:
Envoyé par nbegorre Voir le message
J'utilise bien le designer, mais pour tout ce qui est script je préfère tout faire en java plutôt que du javascript... Une mauvaise habitude sans doute.

Merci encore une fois
Pas forcément une mauvaise habitude, ca évite les traitements directement dans le rptDesign et les mauvaises surprises. C'est aussi plus facile de visualiser ainsi les scripts.

Je ne le fais pas pour la simple et bonne raison que j'ai un service qui s'occupe de BIRT et donc que je n'y touche pas. Mais c'est vrai que c'est plus facile a maintenir comme tu le fais
__________________
__~{@ 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é Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h24.


 
 
 
 
Partenaires

Hébergement Web