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 22/03/2007, 17h15   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Par défaut [2.1.2][Java] Changement DataSource, quelle approche?

Bonjour tout le monde...

J'aurais aimé savoir si on pouvait par le design engine de Birt changer la data source...

Je m'explique...

Je veux créer une applic java où les utilisateurs pourraient choisir un design "type" (préexistant avec une base de données test), et le programme l'appliquerait tout seul sur une base de données précise (déterminée par l'utilisateur), de même structure que la base de données test (donc pas de changement de data sets) mais ne portant pas le même nom...

J'ai eu beau chercher, je n'ai point trouver...

J'ai trouvé des choses comme
Code :
design.getDesignHandle().getElementFactory().newOdaDataSource
j'ai lu le topic comme

et

mais je n'arrive pas à l'appliquer à mon cas
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 11h54   #2
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Mon problème n'a pas l'air d'inspirer grand monde...

Bon alors dans ce cas là, on fait comment pour créer des camemberts avec l'API de Birt ??
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 15h23   #3
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,

N'ayant pas BIRT sous la main je ne saurais répondre à ta première question.

Pour la deuxième question, dans la palette de BIRT tu as un élément qui s'appelle Chart et quand tu le crées tu choisis Pie Chart. Pour plus de précisions, il existe des exemples sur le site de BIRT.
__________________
__~{@ 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 23/03/2007, 16h07   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Merci beaucoup pour ta réponse... bien que désolée que la première laisse les gens dubitatifs

Bon je vais voir ça, je reviendrais vous embêter si je sèche...
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2007, 17h22   #5
Membre Expert
 
Avatar de moritan
 
Homme
Développeur Java
Inscription : juin 2005
Messages : 658
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : juin 2005
Messages : 658
Points : 1 051
Points : 1 051
Pour ton problème de datasource

En théorie il faut rajouter ta datasource
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
    public void addDatasource(String nom,String driver,String url,String user,String password) throws ContentException, SemanticException{
 
 
        SlotHandle sloth = design.getDataSources();
 
        OdaDataSourceHandle odaDataSourceHandle = factory.newOdaDataSource(nom,"org.eclipse.birt.report.data.oda.jdbc");
        odaDataSourceHandle.setProperty("odaDriverClass",driver);
        odaDataSourceHandle.setProperty("odaURL",url);
        odaDataSourceHandle.setProperty("odaUser",user);
        odaDataSourceHandle.setProperty("odaPassword",password);
 
        if(sloth.canContain(odaDataSourceHandle)){
            sloth.add(odaDataSourceHandle);
        }
    }
ensuite sur chacun des dataset existant
Code :
1
2
3
4
5
6
  public Collection<DataSetHandle> getAllDataSets(){
 
        SlotHandle sloth = design.getDataSets();
 
        return sloth.getContents();
    }
il faudrait mettre à jour les références vers la BDD
Code :
 dataSetHandle.setProperty(OdaDataSetHandle.DATA_SOURCE_PROP,datasourceName);
Et bien sur sauvegarder les modif de ton design
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 public void saveReport(){
        // Save the design and close it.
        try {
            File file =new File("webapps/birt/report/"+getNomRapport()+".rptdesign");
            design.saveAs(file.getAbsolutePath());
 
} catch (IOException e)	{
            e.printStackTrace();
        }
 
        design.close();
 
        return;
    }

Le code provient d'une de mes classes de test donc à remettre en accord avec ton code.

C'est non tester donc non garantie.
moritan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 10h47   #6
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Même si c'est "non-garanti", je te remercie de m'aider...

Je vais regarder tout ça d'un peu plus près, on verra bien ce que j'arrive à faire avec...
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2007, 12h04   #7
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Youhouuuu, après plusieurs modif au code initial, ça marche... Enfin ça modifie mon XML !!!

Merci beaucoup de m'avoir aidé, vous m'avez sauvé la vie... enfin ptete pas la vie, mais au moins ma journée

Bon y'a encore du boulot dessus pour faire exactement ce que je veux faire alors j'y retourne...
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2007, 17h31   #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
Bonjour Latmy,

Merci de penser au bouton
__________________
__~{@ 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/03/2007, 09h49   #9
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Voilà qui est fait...
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 10h49   #10
Membre Expert
 
Avatar de moritan
 
Homme
Développeur Java
Inscription : juin 2005
Messages : 658
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France, Manche (Basse Normandie)

Informations professionnelles :
Activité : Développeur Java

Informations forums :
Inscription : juin 2005
Messages : 658
Points : 1 051
Points : 1 051
Bonjour,

Tu parles de modif de code, pourais-tu nous dire lesquelles? histoire d'avoir un retour et un code un peu plus robuste pour les autres visiteurs.
moritan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2007, 19h48   #11
Membre du Club
 
Inscription : avril 2004
Messages : 116
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : avril 2004
Messages : 116
Points : 60
Points : 60
Envoyer un message via AIM à mediateur59 Envoyer un message via MSN à mediateur59 Envoyer un message via Yahoo à mediateur59
Oui ça m'interesse car je n'ai pas encore réussi à changer le datasource en java :-(
mediateur59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2007, 17h08   #12
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Désolée pour le retard, j'avais pas vu

Ce que j'ai fait, c'est que jai repris le code de modification de la data source

Avant la déclaration du sloth, il faut ouvrir une session.
De là, on déclare
Citation:
Collection<DataSetHandle> dsh = sloth.getContents();
et on parcours avec un for
Citation:
for (DataSetHandle dataset : dsh) {}
Dans le for, y'a plus qu'à mettre un try / catch et modifier ce qu'on veut modifier par des
Citation:
dataset.getDataSource().setProperty
Normalement, ça suffit juste.
Pas besoin de faire tout le code précédent car il ne change pas la data source, il en crée une nouvelle et modifie la source des datasets. Je précise que moi je voulais vraiment changer la datasource directement, sans duplication.

En espérant que ça puisse aider...
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2007, 17h39   #13
Membre du Club
 
Inscription : avril 2004
Messages : 116
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : avril 2004
Messages : 116
Points : 60
Points : 60
Envoyer un message via AIM à mediateur59 Envoyer un message via MSN à mediateur59 Envoyer un message via Yahoo à mediateur59
Latmy, je pense que j'ai la même problématique que toi.

J'ai un rptdesign, je teste sur ma base de test
mais lorsque je veux déployser tout mon application (war tomcat) sur mon serveur de production et de backup comme je fais pr modifier dynamiquement les fichiers ?

Mon archi est simple :
Serveur de Test contenant Base de test et serveur application tomcat test
Serveur de Prod contenant Base de prod et serveur application tomcat Prod
Serveur de Test contenant Base de backupet serveur application tomcat Backup

J'ai pas capter "la déclaration du sloth" peux-tu détaillé ou même faire un tuto avec des screenshots pour la FAQ Birt ?
car j'ai bien compris c dans la partie scripting du report que tu mets ça ?
Merci pour tes explications et/ou contribuez à la communnauté Birt
mediateur59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 10h14   #14
Membre du Club
 
Inscription : avril 2004
Messages : 116
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : avril 2004
Messages : 116
Points : 60
Points : 60
Envoyer un message via AIM à mediateur59 Envoyer un message via MSN à mediateur59 Envoyer un message via Yahoo à mediateur59
Voici un exemple de modification d'un datasource appellé "bdd"
Code :
1
2
3
4
5
6
 
design = birtReportEngine.openReportDesign( cycle.getRequestContext().getServlet().getServletContext().getRealPath("/Reports")+"/"+reportName );
 
design.getDesignInstance().getDataSource("bdd").setPrivateDriverProperty("odaURL",sUrl);
							design.getDesignInstance().getDataSource("bdd").setPrivateDriverProperty("odaUser",sUser);
							design.getDesignInstance().getDataSource("bdd").setPrivateDriverProperty("odaPassword",sPassword);
mediateur59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 12h32   #15
Candidat au titre de Membre du Club
 
Inscription : mars 2007
Messages : 52
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 52
Points : 14
Points : 14
Citation:
Envoyé par mediateur59
Voici un exemple de modification d'un datasource appellé "bdd"
Code :
1
2
3
4
5
6
 
design = birtReportEngine.openReportDesign( cycle.getRequestContext().getServlet().getServletContext().getRealPath("/Reports")+"/"+reportName );
 
design.getDesignInstance().getDataSource("bdd").setPrivateDriverProperty("odaURL",sUrl);
							design.getDesignInstance().getDataSource("bdd").setPrivateDriverProperty("odaUser",sUser);
							design.getDesignInstance().getDataSource("bdd").setPrivateDriverProperty("odaPassword",sPassword);
Wahou, ça fait 2 mois que j'ai pas repris ce code alors j'ai un peu de mal là...

Bon déjà moi j'utilise l'APi de Birt (Birt-runtime-2-1-2) dans une application Eclipse RCP, donc du java. Le code que je donne c'est à écrire dans une classe java


Citation:
SessionHandle session = new SessionHandle(ULocale.ENGLISH);
try {
rdHandle = session.openDesign(rptdesign);
}
catch (DesignFileException e1) {
e1.printStackTrace();
}
SlotHandle sloth = rdHandle.getDataSets();
Collection<DataSetHandle> dsh = sloth.getContents();

for (DataSetHandle dataset : dsh) {
try {
dataset.getDataSource().setProperty("odaURL","nouvel url");
dataset.getDataSource().setProperty("odaUser", "nouveau user");
dataset.getDataSource().setProperty("odaPassword", "nouveau mot de passe");

}
catch (SemanticException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

et tu appelles ça entre le moment où tu ouvres ton reportdesign
Citation:
design = engine.openReportDesign(rptdesign);
et le moment où tu sauves de ReportDesignHandle :
Citation:
rdHandle.saveAs(file.getAbsolutePath());
Plus claire ?
Latmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/06/2007, 17h13   #16
Membre du Club
 
Inscription : avril 2004
Messages : 116
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : avril 2004
Messages : 116
Points : 60
Points : 60
Envoyer un message via AIM à mediateur59 Envoyer un message via MSN à mediateur59 Envoyer un message via Yahoo à mediateur59
Non je le fais au moment de la génération du rapport et ceux sans sauvegarder le report.

Par défaut en dev les rapports dans eclipse pointent sur mon serveur de dev et lorsque je mets mon war sur le serveur de prod, recette ou backup alors la génération de rapport s'adapte...
mediateur59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 16h56   #17
Membre Expert
 
Inscription : septembre 2006
Messages : 1 466
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 466
Points : 1 593
Points : 1 593
Sachant que le fichier de rapport .rptDesign est un fichier xml, pourquoi ne pas utiliser XSLT pour ne changer que la sources du dataSet. Ca externaliserait la définition des sources pour des déploiements sur n serveurs.
Morbo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2007, 17h56   #18
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
Ou plutôt associer une librairie différente à chaque fois, c'est quand même plus simple
__________________
__~{@ 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 15h15.


 
 
 
 
Partenaires

Hébergement Web