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 10/09/2011, 23h37   #1
Invité de passage
 
Inscription : février 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 19
Points : 0
Points : 0
Par défaut Paramètre BIRT sur java

Bonjour,
j'aimerais savoir comment on peut faire pour récupéré les informations sur les parametre d'un rapport BIRT sur du code java.

c'est a dire savoir le nombre de parametre que le rapport posséde, ainsi que le nom de chaque parametre, la valeur par defaut mis lorsqu'on a créé le rapport, et le help desk mis aussi lords de la création du rapport BIRT.

comment avoir ses informations pour differents rapport generé sur du code java.

apres avoir ses information concernant les parametres BIRT comment inséré des parametres aux rapports BIRT a travers du code java.

voila mon code java

Edition.java

Code Java :
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
 
 
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
 
import org.eclipse.birt.core.exception.BirtException;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IRenderOption;
import org.eclipse.birt.report.engine.api.IRenderTask;
import org.eclipse.birt.report.engine.api.IReportDocument;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunTask;
import org.eclipse.birt.report.engine.api.RenderOption;
 
/**
 * Cette classe permet la génération dans n'importe quel format
 * de n'importe quelle édition.
 * Il faut d'abord l'instancier, puis on lance le rapport et on
 * fait le rendu.
 * Si nécessaire, cette classe peut être threadée facilement.
 * 
 * @author BiM
 *
 */
public final class Edition {
	private static final String ENGINE_PATH = "C:\\eclipse\\birt-runtime-2_5_2\\ReportEngine";
	private static final String REPORT_PATH = "C:\\MesRapports\\";
	private static Edition m_Instance = null;
	private IReportEngine engine;
 
	/**
	 * Constructeur.
	 * Il configure le moteur BIRT de sorte à ce qu'il puisse retrouver
	 * les ressources BIRT mais également les librairies le faisant tourner
	 * Il est alors démarré avec cette configuration.
	 * @throws BirtException
	 */
	private Edition() throws BirtException {
		EngineConfig config = new EngineConfig();
		config.setBIRTHome(ENGINE_PATH);
		Platform.startup(config);
		IReportEngineFactory factory = (IReportEngineFactory) Platform
			.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
		engine = factory.createReportEngine(config);
	}
 
	/**
	 * Instanciation du service.
	 * @return l'instance en cours du service
	 * @throws BirtException
	 */
	public static synchronized Edition getInstance() throws BirtException {
		if (m_Instance == null) {
			m_Instance = new Edition();
		}
		return m_Instance;
	}
 
	/**
	 * Génération de l'état.
	 * @param _input Nom du fichier d'entrée sans l'extension (rptdesign), le fichier de sortie portera le même nom
	 * @param _langue Locale pour définir la langue de génération du rapport
	 * @param _parameters Map contenant les paramètres du rapport sous la forme <Nom, Valeur>
	 * @throws EngineException 
	 */
	public synchronized void run(String _input, Locale _langue, Map<String, Object> _parameters) throws EngineException {
		this.run(_input, _input, _langue, _parameters);
	}
 
	/**
	 * Génération de l'état.
	 * @param _input Nom du fichier d'entrée sans l'extension (rptdesign)
	 * @param _output Nom du fichier de sortie sans l'extension (rptdocument)
	 * @param _langue Locale pour définir la langue de génération du rapport
	 * @param _parameters Map contenant les paramètres du rapport sous la forme <Nom, Valeur>
	 * @throws EngineException 
	 */
 	public synchronized void run(String _input, String _output, Locale _langue, Map<String, Object> _parameters) throws EngineException {
		IRunTask runTask = null;
		try {
			/* Récupération du rptDesign */
			IReportRunnable design = engine.openReportDesign(REPORT_PATH +"rapport\\"+ _input + ".rptdesign");
 
			/* Création de la tâche d'éxécution */
			runTask = engine.createRunTask(design);
 
			/* Paramètres */
			runTask.setParameterValues(_parameters);
 
			/* Langue */
			runTask.setLocale(_langue);
 
			/* Exécution */
			runTask.run(REPORT_PATH +"rptdoc\\"+ _output + ".rptdocument");
		}
		finally {
			if (runTask != null) {
				runTask.close();
			}
		}
	}
 
	/**
	 * Rendu de l'état.
	 * @param _input Nom du fichier d'entrée sans l'extension (rptdocument)
	 * @param _format Format de sortie du fichier
	 * @throws EngineException
	 */
 	public synchronized void render(String _input, String _format) throws EngineException {
 		this.render(_input, _input, _format);
 	}
 
	/**
	 * Rendu de l'état.
	 * @param _input Nom du fichier d'entrée sans l'extension (rptdocument), le fichier de sortie portera le même nom.
	 * @param _output Nom du fichier de sortie sans l'extension (format final)
	 * @param _format Format de sortie du fichier
	 * @throws EngineException
	 */
	public synchronized void render(String _input, String _output, String _format) throws EngineException {
		IReportDocument doc = null;
		IRenderTask renderTask = null;
		try {
			/* Création des options de rendu */
			IRenderOption option = new RenderOption();
 
			/* Fichier et format de sortie */
			option.setOutputFileName(REPORT_PATH + _format +"\\"+ _output + "." + _format);
			option.setOutputFormat(_format);
 
			/* Récupération du rptDocument */
			doc = engine.openReportDocument(REPORT_PATH +"rptdoc" +"\\"+ _input + ".rptdocument");
 
			/* Rendu */
			renderTask = engine.createRenderTask(doc);
 
			/* Chargement des options de rendu */
			renderTask.setRenderOption(option);
 
			/* Création du fichier de rendu */
			renderTask.render();
		}
		finally {
			if (renderTask != null) {
				renderTask.close();
			}
			if (doc != null) {
				doc.close();
			}
		}
	}
 
	/**
	 * Permet de détruire le moteur de façon propre.
	 */
	public void destructeur() {
		engine.destroy();
		Platform.shutdown();
	}

Main.java

Code Java :
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
 
 
import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern; 
import java.util.regex.Matcher; 
import java.util.*;
 
import org.eclipse.birt.core.exception.BirtException;
 
public class listRepertoire
{
 
	public static void main (String[]args) throws IOException
	{
		Scanner sc = new Scanner(System.in);
 
		String path= "c://MesRapports//rapport"; 
		String filtre = "." +".*\\.(rptdesign)$"; 
 
 
		Pattern p = Pattern.compile(filtre); 
		String [] s = new File(path).list(); 
		List<String> listeFichiers = new ArrayList<String>(); 
 
 
 
		System.out.println("____  Liste des rapports :  ____");
		for (int i=0; i<s.length;i=i+1) 
		{ 
		Matcher m = p.matcher(s[i]); 
			if ( m.matches()) 
			{ 
				listeFichiers.add(s[i]); 
				System.out.println(s[i].substring(0, s[i].length()-10));
			} 
		} 
 
 
		System.out.println("----  Choissisez un rapport :  ----");
		String rapport = sc.nextLine();	
		System.out.println("----  Choissisez le format (pdf,doc,xls,...) :  ----");
		String format = sc.nextLine();
		System.out.println("----  Choissisez un nom :  ----");
		String nom = sc.nextLine();
 
		System.out.println("____  En cours de création du rapport  ____");
		try
		{
			Edition ed = Edition.getInstance();
			ed.run(rapport+""+langue, Locale.FRENCH, new HashMap<String, Object>());
			ed.render(rapport, nom, format);
			ed.destructeur();
 
			Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler c:/MesRapports/"+format+"/"+nom+"."+format); 
 
 
		}
		catch (BirtException e)
		{
			e.printStackTrace();
			System.out.println("!!!!!  Erreur:BirtException  !!!!!");
		}
 
 
		System.out.println("______  FINIS  ______");
 
	}
 
 
 
}


Merci
droopy1080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2011, 16h39   #2
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
Salut,

tu trouveras toutes les réponses à ces questions au travers des échantillons de code fournis sur eclipse, par exemple:



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
//Open a report design 
IReportRunnable design = engine.openReportDesign("C:/work/test/parameters.rptdesign"); 
 
IGetParameterDefinitionTask task = engine.createGetParameterDefinitionTask( design );
Collection params = task.getParameterDefns( true );
 
Iterator iter = params.iterator( );
//Iterate over all parameters
while ( iter.hasNext( ) )
{
	IParameterDefnBase param = (IParameterDefnBase) iter.next( );
	//Group section found
	if ( param instanceof IParameterGroupDefn )
	{
		//Get Group Name
		IParameterGroupDefn group = (IParameterGroupDefn) param;
		System.out.println( "Parameter Group: " + group.getName( ) );
 
		//Get the parameters within a group
		Iterator i2 = group.getContents( ).iterator( );
		while ( i2.hasNext( ) )
		{
			IScalarParameterDefn scalar = (IScalarParameterDefn) i2.next( );
			System.out.println("	" + scalar.getName());
		}
 
	}
	else
	{
		//Parameters are not in a group
		IScalarParameterDefn scalar = (IScalarParameterDefn) param;
		System.out.println(param.getName());
 
		//Parameter is a List Box
		if(scalar.getControlType() ==  IScalarParameterDefn.LIST_BOX)
		{
		    Collection selectionList = task.getSelectionList( param.getName() );
		    //Selection contains data    
			if ( selectionList != null )
			{
				for ( Iterator sliter = selectionList.iterator( ); sliter.hasNext( ); )
				{
					//Print out the selection choices
					IParameterSelectionChoice selectionItem = (IParameterSelectionChoice) sliter.next( );
					String value = (String)selectionItem.getValue( );
					String label = selectionItem.getLabel( );
					System.out.println( label + "--" + value);
				}
			}		        
		}   
	}
}
 
task.close();
Use the IGetParameterDefinitionTask class to evaluate the default value for a parameter. The parameter default value is an expression, and the task provides the required execution context.
 
IScalarParameterDefn param = ...;
IGetParameterDefinitionTask task = ...;
Object value = task.getDefaultValue( param );
Bon courage
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 00h18   #3
Invité de passage
 
Inscription : février 2011
Messages : 19
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 19
Points : 0
Points : 0
Merci d'avoir repondu,

J'ai trouvé comment je peut inséré mes paramétres a partir de mon code java sur les rapport birt a travers la HashMap, mais je trouve toujours pas comment je peut obtenir different informations concernant les paramétres c'est a dire :

- le nombre de parametre des different rapport birt généré
- la valeur par défaut de chaque paramétre établi sur le rapport birt
- le nom de chaque parametre
- le helpdesk ecrie lord de la réalisation des parametre birt pour chaque parametre

Merci d'avance
droopy1080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2011, 16h20   #4
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
Salut,

l'exemple que j'ai mis ci dessus contient tout ça, à part le helpdesk: le code ouvre un rapport, parcourt tous les paramètres, accède à leur nom, leur type, etc. Et en bas un exemple de récup d'une valeur par défaut. Soit plus précis sur ce qui te bloque. Si c'est l'anglais dans les commentaires qui te rebutent, il va falloir t'y habituer à fond si tu veux te lancer dans les API birt
donino 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 01h38.


 
 
 
 
Partenaires

Hébergement Web