Comment Passer un JRBeanCollectionDataSource à iReport?
Je suis en train d'essayer d'utiliser jasper pour m'aider à créer des rapports. J'ai l'information et des données que je veux afficher dans cette méthode:
private void writeToFile(final List<ScenarioLoadModel> sceneLoadModel) throws Exception {
final BufferedWriter bw = new BufferedWriter(new FileWriter("/Uma/nft/result.psv"));
for (final ScenarioLoadModel slm : sceneLoadModel) {
bw.write(slm.getScenarioId() + PSP + slm.getScenarioId() + PSP + slm.getScenarioConfig().getName() + PSP + slm.getLoad() + PSP + "" + EOL);
if (!slm.getScenarios().isEmpty()) {
final int tempCount = slm.getScenarios().get(0).getTemplates().size();
final int sceneCount = slm.getScenarios().size();
for (int tempIdx = 0; tempIdx < tempCount; tempIdx++) {
String id = null;
int pass = 0;
int fail = 0;
final Map<String, BigDecimal> metricMap = new HashMap<String, BigDecimal>();
final DefaultStatisticalCategoryDataset dataset = new DefaultStatisticalCategoryDataset();
for (int sceneIdx = 0; sceneIdx < sceneCount; sceneIdx++) {
final Template temp = slm.getScenarios().get(sceneIdx).getTemplates().get(tempIdx);
if (temp.isError()) {
fail++;
} else {
pass++;
}
if (sceneIdx == 0) {
id = temp.getId();
}
final MetricGroupModel mgm = slm.getScenarios().get(sceneIdx).getMetricGroupModel().get(tempIdx);
if (mgm != null) {
for (final MetricModel mm : mgm.getMetricModel()) {
for (final MetricValue mv : mm.getMetricValue()) {
dataset.add(mv.getValue(), new BigDecimal(0.0), mv.getType(), id);
}
}
}
}
final TemplateConfig tc = TemplateManager.getTemplateConfig(id);
bw.write(slm.getScenarioId() + PSP);
bw.write(id + PSP + tc.getName() + PSP + 1 + PSP + pass + "/" + fail);
for (final Object row : dataset.getRowKeys()) {
final Number mean = dataset.getValue((String) row, id);
bw.write(PSP + row + PSP + mean);
}
bw.write(EOL);
}
}
}
bw.close();
}
À partir de ma compréhension, je créer des Haricots puis de les mettre tous dans un Bean de l'Usine, de créer mon objet qui sera prêt à être transmis à iReport.
Comment puis-je mettre toutes ces informations dans un Haricot? J'ai essentiellement veux la fève à inclure le scénario/cas de test et si oui ou non il est passé. (C'est pour l'automatisation des tests)
OriginalL'auteur qwer1234 | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
J'ai essayé de lire votre code pour une deviner ce que les colonnes que vous voulez, mais sans contexte, je n'ai aucune idée. Tout le haricot est un pojo, avec des champs privés et publics getters et setters.
En supposant qu'il existe pas de regroupement et essentiellement, chaque
ScenarioLoadModel
correspond à une ligne dans le rapport, vous devez vous retrouver avec un haricot comme ceci:Donc, fondamentalement, dans le code que vous avez au-dessus de vous construire des instances de
ScenarioResults
et les ajouter à une liste. Une fois que vous avez la liste, tout ce que vous devez faire est de créer un JRDataSource:Maintenant lors de la conception du rapport dans iReport il peut être un peu délicat à obtenir les champs importés automatiquement. Fondamentalement, tout d'abord ajouter votre projet avec la fève à la classpath dans iReports (pourrait-il suffit de pointer vers le dossier bin ou fichier jar`): Outils -> options -> classpath de l'onglet. Maintenant, suivez ces étapes pour ajouter les champs.
JavaBean Datasource
onglet.ScenarioResults
)Read attributes
Add Selected Field(s)
.OK
.Maintenant, si vous voulez tester ce que le rapport ressemble avec des données, et pas seulement un vide de la source de données, c'est là que l'Usine est en. C'est uniquement pour les tests tout en utilisant iReport. Vous devez créer une classe qui permettra de créer un mannequin de données pour vous. Il devrait ressembler à quelque chose comme:
Maintenant, vous devez créer une source de données pointant vers elle dans iReport.
New
.JavaBeans set datasource
. Cliquez surNext
.ScenarioResultsFactory
.com
paquet, vous devez avoircom.ScenarioResultsFactory
ici.createBeanCollection
si pas déjà là.Use field description
case à cocher. Cliquez surTest
de faire en sorte que ça fonctionne.Save
.Pas de problème, content d'avoir pu aider. Je ne pense pas que la réponse allait être cette longue au début, mais comme j'étais en tapant juste un peu qui s'est passé.
merci, haha. oui, c'est très simple et direct, avec votre explication.
OriginalL'auteur Jacob Schoen