IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

BIRT Discussion :

Association données et rapport


Sujet :

BIRT

  1. #1
    Nouveau membre du Club Avatar de maxscljava
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 26
    Points
    26
    Par défaut Association données et rapport
    Bonjour à tous,

    J'ai déja posé cette question mais je n'ai pas encore eu de réponse, donc je retente ma chance.

    J'ai un projet Java dans lequel sont inclus les différents jar et plugin de Birt me permettant entre autre de créer des rapports.
    Dans mon projet Java j'ai une classe qui s'occupe de récupérer des données dans une DB.

    Lorque j'exécute un test (JUnit) qui instancie ma classe à laquelle je donne les informations nécessaire pour récupérer mes données dans la db, tout se passe bien mais ensuite je dois mettre à disposition de mon rapport le résultat de ma recherche, or il faut (paraît-il) que je copie cet objet dans un répertoir précis (C:\eclipse\plugins\org.eclipse.birt.report.viewer_2.0.1\birt\WEB-INF\classes)
    pour que mon rapport travaillant via une ScriptedDataSource et un ScriptedDataSet puisse avoir accès au données via une méthode getData() de mon objet.

    Mais lorsque je fais un new de mon objet je ne sais pas où il se trouve sur mon disque, de plus je ne sais pas une fois qu'il a récupérer les données le déplacer pour le mettre dans le bon répertoire et le tout pendant que mon test ou mon application tourne.

    Bref je suis perdu, je reste persuader qu'il est possible que mon rapport accède à ma méthode (et donc aux données) pendant que mon application tourne et tout cela sans trop de manipulations.

    Voilà, si vous avez une idée ou une aide ou encore mieux un exemple je serai heureux d'en savoir plus.

    Merci pour tout
    maxscljava

  2. #2
    Membre expert
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Points : 3 135
    Points
    3 135
    Par défaut
    Je pense qu'il y a eu un problème de compréhension dans les réponse que tu as eu.

    Quand on te dis de mettre ton objet dans C:\eclipse\plugins\org.eclipse.birt.report.viewer_2.0.1\birt\WEB-INF\classes c'est juste le fichier .class Pour éviter les erreurs du type classcast exception...

    Par contre le new tonObject(), il faut que tu le fasses directement dans ton rapport.

  3. #3
    Membre régulier

    Inscrit en
    Septembre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 99
    Points : 118
    Points
    118
    Par défaut ^_^ le monde est petit
    plop,
    salut maxscljava !!

    hier je t'ai répondu sur le newsgroup de BIRT a peu prés la meme chose que moritan.

    http://www.eclipse.org/newsportal/ar...pse.birt#12167

    ^_^

  4. #4
    Nouveau membre du Club Avatar de maxscljava
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 26
    Points
    26
    Par défaut Quelque chose m'échappe...
    Merci à tous les deux pour vos réponses, mais quelque chose m'échappe.

    Je suis dans mon appli Java j'instancie ma class via un new, c'est bien la classe de mon package et non celle du mis dans le répertoire birt_viewer qui est instanciée.
    De plus, pour mon objet je dois lui transmettre des paramètre encodés par l'utilisateur et ce à partir d'Eclipse, donc il m'est difficile de faire un new dans le script du rapport car comment va-t-il allez récupérer les données encodées par l'utilisateur.
    Enfin, je procède comme cela sur une action j'ouvre un wizard qui demande les infos de recherche à l'utilisateur, ensuite j'instancie mon objet dans lequel je stocke les données encodées par l'utilisateur,et je devrai mettre à disposition cet objet (a mettre dans le fameux répertoire) pour que lorsque dans mon code java je demande au rapport de se créer il puisse effectuer l'appel à la DB et s'afficher dans un browser sous Eclipse.

    Ceci n'est peut-être pas la bonne façon, je ne sais pas ....si toutefois vous aviez une autre solution je serai heureux d'en prendre connaissance.

    Quoiqu'il en soit merci beaucoup pour votre aide.
    maxscljava

  5. #5
    Membre régulier

    Inscrit en
    Septembre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 99
    Points : 118
    Points
    118
    Par défaut
    plop,

    En ce qui me concerne moi je procéde de la façon suivante :
    1/ je créer mon scripted Data set
    2/ je définit dans le "open" de ce Data set les lignes suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // j'instancie ma classe 
    monObjet = new Packages.NomDeMaClassDansLeRepertoireBIRT();
    //j'apelle la métode de mon objet qui va chercher les informations en base 
    //et je lui passe en paramétre les informations necessaire pour executer ma requete
    UnVecteur  = monObjet.readData(params["rptVal"]);
    totalrows  = UnVecteur.size();
    currentrow = 0;
    Les paramétres que ton utilisateur peut définir tu les passes à ton rapport et c'est nickel chrome.
    voila.

  6. #6
    Nouveau membre du Club Avatar de maxscljava
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 26
    Points
    26
    Par défaut
    Merci pour l'info, je vais essayé cette méthode.
    Juste un blème je ne sais plus trop comment on passe les paramètres au rapport, aurais-tu une piste ou un exemple ?

    Merci bcp
    maxscljava

  7. #7
    Membre régulier

    Inscrit en
    Septembre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 99
    Points : 118
    Points
    118
    Par défaut
    Tu utilises le Birt Viewer ou le report Engine??

    Pour informations voici un petit tutorial sur la configuration des paramétres
    http://www.eclipse.org/birt/phoenix/...ts/parameters/

    Si tu utilises le Birt Viewer et que tu ne veux pas que tes utilisateurs définissent les paramétres Il faut passer les paramétres dans l'url directement.

  8. #8
    Nouveau membre du Club Avatar de maxscljava
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 26
    Points
    26
    Par défaut
    Voici avec quoi je travaille :

    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
    EngineConfig config = new EngineConfig();
            config.setEngineHome("C:/Other/Download/birt-runtime-2_1_0/ReportEngine");    //endroit où se trouvent les librairies du Runtime
            ReportEngine engine = new ReportEngine(config);     //engine permet de connaitre et de modifie le fichier .rptdesign
            IReportRunnable design = null;
            try {
                design = engine.openReportDesign("C:/workspace_med/med_client/Diags.rptdesign");
            } catch (EngineException e) {
                e.printStackTrace();
            }
            IRunAndRenderTask task = engine.createRunAndRenderTask(design);     //Crée une tâche afin d'éxécuter le rapport
     
            HTMLRenderOption options = new HTMLRenderOption();
            options.setOutputFileName("C:/Diagnoses.html");
            options.setOutputFormat("HTML");
            task.setRenderOption(options);
            // run the report and destroy the engine
            try {
                task.run();
            } catch (EngineException e) {
                e.printStackTrace();
            }
    J'ai malgré tout un gros soucis, les paramètres sont dynamiques, c'est-à-dire que par exemple j'en ai 3 mais qu'il ne sont pas tous présent donc je ne peux pas les mettre en dur dans la query, d'ou l'object externe qui se charche de ramener les data en fonctions des paramètre présents.

    Si je te suis bien :
    1. Je devrai à partit de mon wizard (qui demande les infos à l'utilisateur) envoyé ces infos au rapports
    2. Dans mon rapport instancier ma classe
    3. Lui donner les paramètres reçus
    4. Lui demander d'aller rechercher les données dans la DB
    5. Ensuite demander le résultat
    6. afficher mon rapport avec les données.

    Est-ce comme cela que tu le vois ?

    Merci d'avance
    maxscljava

  9. #9
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Citation Envoyé par maxscljava
    Merci pour l'info, je vais essayé cette méthode.
    Juste un blème je ne sais plus trop comment on passe les paramètres au rapport, aurais-tu une piste ou un exemple ?

    Merci bcp
    maxscljava
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    task.setParameterValue(taCle,tonParametre);
    taCle de type String et tonParametre de type Object et task de type IRunAndRenderTask

  10. #10
    Membre régulier

    Inscrit en
    Septembre 2005
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 99
    Points : 118
    Points
    118
    Par défaut
    plop,
    En ce qui concerne les paramétres tu peux les définir au niveau de Birt comme non obligatoire ( allow null value).

    J'ai malgré tout un gros soucis, les paramètres sont dynamiques, c'est-à-dire que par exemple j'en ai 3 mais qu'il ne sont pas tous présent donc je ne peux pas les mettre en dur dans la query, d'ou l'object externe qui se charche de ramener les data en fonctions des paramètre présents.
    Petits conseil:
    Ensuite si tu passe plusieurs paramétres fait attention quand tu les passes à la méthode de ta classe.
    Au lieu de faire un constructeur ou une méthode avec plusieurs paramétres je te conseille d'utiliser une collection qui stocke tous tes paramètres que tu passe.
    La ou il faut faire attention c'est que du coté java il faut récuperer sous la forme du type Object puis caster en tableau de String.

  11. #11
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Citation Envoyé par maxscljava
    J'ai malgré tout un gros soucis, les paramètres sont dynamiques, c'est-à-dire que par exemple j'en ai 3 mais qu'il ne sont pas tous présent donc je ne peux pas les mettre en dur dans la query, d'ou l'object externe qui se charche de ramener les data en fonctions des paramètre présents.
    Si ce sont des paramètres que tu ne vas pas afficher directement mais simplement récupérer pour un DataSet, tu n'es dans ce cas, pas obligé de les déclaré dans ton rptdesign. Si tu as trois objets : Universite, Promotion, Etudiant et que tu veux passer en paramètre leur valeurs, dans ton BIRT, tu n'es pas obligé de déclarer les paramètres mais tu peux quand même les passer via Java et t'en servir dans ton rapport (tant qu'ils ne sont pas affichés).

  12. #12
    Nouveau membre du Club Avatar de maxscljava
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 26
    Points
    26
    Par défaut
    Ok, merci à tous pour ces infos, je m'en vais essayer et je vous informe si cela fonctionne.

    Encore un grand merci pour votre aide, elle est très précieuse.

    maxscljava

  13. #13
    Nouveau membre du Club Avatar de maxscljava
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 26
    Points
    26
    Par défaut
    Bonjour à tous,

    Voila j'ai commencer mes tests mais un blème vient une fois de + me bloquer , j'ai un message d'erreur (voir ci-dessous) malgré le fais que le Runtime est bien présent et dans le bon répertoire : (l'erreur se produit sur la ligne avec des ***)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    EngineConfig config = new EngineConfig();
    config.setEngineHome("C:/Other/Download/birt-runtime-2_1_0/ReportEngine");   ReportEngine engine = new ReportEngine(config); // ***

    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
    java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.eclipse.birt.core.framework.osgi.OSGILauncher.startup(OSGILauncher.java:131)
        at org.eclipse.birt.core.framework.Platform.startup(Platform.java:78)
        at org.eclipse.birt.core.framework.Platform.initialize(Platform.java:115)
        at org.eclipse.birt.report.engine.api.ReportEngine.<init>(ReportEngine.java:48)
        at be.gfdi.reporting.ReportsWizard.generateReport(ReportsWizard.java:148)
        at be.gfdi.reporting.ReportsWizard.performFinish(ReportsWizard.java:133)
        at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:666)
        at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:349)
        at org.eclipse.jface.dialogs.Dialog$3.widgetSelected(Dialog.java:645)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3287)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2907)
        at org.eclipse.jface.window.Window.runEventLoop(Window.java:811)
        at org.eclipse.jface.window.Window.open(Window.java:789)
        at be.gfdi.reporting.action.ReportsAction.run(ReportsAction.java:58)
        at be.gfdi.ent.thirdexplorer.MVCThirdExplorer$2.widgetDefaultSelected(MVCThirdExplorer.java:234)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:97)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:925)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3287)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2907)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1899)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1863)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:417)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
        at be.gfdi.fwk.client.core.application.ClientFrameworkApplication.run(ClientFrameworkApplication.java:72)
        at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:99)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:92)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:68)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:374)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:169)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.eclipse.core.launcher.Main.invokeFramework(Main.java:338)
        at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
        at org.eclipse.core.launcher.Main.run(Main.java:977)
        at org.eclipse.core.launcher.Main.main(Main.java:952)
    Caused by: java.lang.IllegalStateException: Platform already running
        at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:262)
        ... 45 more
    Can't load the report engine

  14. #14
    BiM
    BiM est déconnecté
    Expert éminent sénior
    Avatar de BiM
    Femme Profil pro
    Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
    Inscrit en
    Janvier 2005
    Messages
    7 796
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    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 796
    Points : 10 765
    Points
    10 765
    Par défaut
    Ca ressemble a une tentative de preview... Avec les Scripted DataSet, oublie le preview...


  15. #15
    Membre expert
    Avatar de moritan
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2005
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2005
    Messages : 687
    Points : 3 135
    Points
    3 135
    Par défaut
    Tu ne lancerais pas ton appli directement dans Eclipse par hasard??

    Parceque le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Caused by: java.lang.IllegalStateException: Platform already running
    at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:262)
    ça me fait dire qu'il y a un conflit d'utilisation sur ton moteur Birt comme si tu voulais le démarrer 2 fois. Attention au code static.

  16. #16
    Nouveau membre du Club Avatar de maxscljava
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 48
    Points : 26
    Points
    26
    Par défaut
    Merci pour ces infos mais il faut savoir que seul le code présent dans mon précédent message est présent dans mon application, et effectivement je suis dans un application Eclipse faisant partie d'un projet dans lequel se trouve un autre composant contenant un li/shared qui lui même contient org.eclipse.birt.report.engine_2.1.0.N20060628-1351.jar.

    Je me demande si la ligne config.setEngineHome("C:/Other/Download/birt-runtime-2_1_0/ReportEngine");
    ne fait pas double emploi avec je Jar référencé dans l'autre projet qui lui-même est connu par mon projet ?

    Je suis un pti peu perdu dans tout celà

    maxscljava

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoyer des données par rapport à une checkbox
    Par dudu134 dans le forum Langage
    Réponses: 2
    Dernier message: 18/05/2007, 17h57
  2. [VBA-E] Renvoie de donnée par rapport à un intitulé
    Par GardienDuCode dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/03/2007, 17h41
  3. Centrer des données par rapport à un texte "parent"
    Par firejocker dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 08/01/2007, 15h44
  4. Regrouper les données par rapport à la date
    Par goldeagle dans le forum Access
    Réponses: 7
    Dernier message: 11/12/2006, 15h35
  5. Réponses: 27
    Dernier message: 19/09/2006, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo