Нарисуйте диаграмму в файле .prpt, используя Java API и pentaho.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Нарисуйте диаграмму в файле .prpt, используя Java API и pentaho.

Сообщение Anonymous »

Как нарисовать диаграмму в формате .prpt с помощью Java API и pentaho?
Для создания отчетов я использую файлы pentaho (.prpt) и Java API. Данные отправляются с использованием Angular и hql с файлами .prpt и pdf, создаваемыми автоматически.
Теперь я хочу нарисовать простую гистограмму с этими данными, но не могу найти для этого какой-либо ресурс или помощь.
Как я могу решить эту проблему?
public ResponseEntity getReport(OutputStream out, Map parametersMap) {
Reporter rep = new Reporter();

String queryStr = "select sh.activityAsset.id as ID, " +
"count(sh.id) as countHistory " +
"from MAIServiceHistory sh " +
"where " +
"sh.activityAsset.id < 172 " +
"group by sh.activityAsset.id " +
"order by sh.activityAsset.id ";

List list = manager.createQuery(queryStr, Object[].class).getResultList();

return rep.getPDFReport("com/tida/mai/core/reports/test2.prpt", out, manager,queryStr, parametersMap);
}

public ResponseEntity getPDFReport(String reportAddress, OutputStream out, EntityManager manager, String query,Map parametersMap) {
try {
String filename = "output.pdf";
FileInputStream fileInputStream = new FileInputStream(getReports(reportAddress, out, manager, query, parametersMap));
byte[] contents = IOUtils.toByteArray(fileInputStream);

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType("application/pdf"));
headers.setContentDispositionFormData("file", filename);
headers.setCacheControl("must-revalidate, post-check=0, pre-check=0");

return new ResponseEntity(contents, headers, HttpStatus.OK);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}

public File getReports(String reportAddress, OutputStream out, EntityManager manager, String query, Map parametersMap) {
ClassicEngineBoot.getInstance().start();
final MasterReport report = createReportDefinition(reportAddress, manager, query, parametersMap);
if (report != null) {
report.setAttribute("http://reporting.pentaho.org/namespaces ... butes/core",
"complex-text", "true");
}

try {
// Run the report and save the HTML output to a byte stream
// file.set.setContentType("application/pdf"); // Change to "application/pdf" for PDF output
// Use the HtmlReportUtil to generate the report to a Stream HTML
// HtmlReportUtil.createStreamHTML(report, out);
// NOTE: Changing this to use PDF is simple:
// 1. Change the above setContent call to use "application/pdf"
// 2. Instead of HtmlReportUtil, use the following line:

if (report != null) {
PdfReportUtil.createPDF(report, out);
}
} catch (ReportProcessingException rpe) {
rpe.printStackTrace();
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

return null;
}

private MasterReport createReportDefinition(String reportUrl, EntityManager manager, String query, Map parametersMap) {
// Create a report using the autogenerated fields
try {
final ClassLoader classloader = this.getClass().getClassLoader();
final URL reportDefinitionURL = classloader.getResource(reportUrl);
ResourceManager managerRes = new ResourceManager();
managerRes.registerDefaults();
Resource res = managerRes.createDirectly(reportDefinitionURL, MasterReport.class);
MasterReport report = (MasterReport) res.getResource();
DataRow dr = new ParameterDataRow(parametersMap.keySet().toArray(new String[0]), parametersMap.values().toArray());
report.getParameterValues().putAll(dr);

Session session = (Session) manager.getDelegate();
session = session.getSessionFactory().openSession();
StaticSessionProvider sessionProvider = new StaticSessionProvider(session);
HQLDataFactory factory = new HQLDataFactory(sessionProvider);
factory.setQuery("default", query);
report.setDataFactory(factory);

return report;
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}



Подробнее здесь: https://stackoverflow.com/questions/791 ... nd-pentaho
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»