Code Example
import java.util.Date;
import java.util.List;
import java.util.Map;
 
import com.mega.modeling.analysis.AnalysisCallback;
import com.mega.modeling.analysis.AnalysisParameter;
import com.mega.modeling.analysis.AnalysisReport;
import com.mega.modeling.analysis.AnalysisReportToolbox;
import com.mega.modeling.analysis.content.Dataset;
import com.mega.modeling.analysis.content.Dimension;
import com.mega.modeling.analysis.content.Item;
import com.mega.modeling.analysis.content.MegaObjectProperty;
import com.mega.modeling.analysis.content.ReportContent;
import com.mega.modeling.analysis.content.Text;
import com.mega.modeling.analysis.content.Value;
import com.mega.modeling.analysis.content.View;
import com.mega.modeling.api.MegaCollection;
import com.mega.modeling.api.MegaObject;
import com.mega.modeling.api.MegaRoot;
import com.mega.modeling.api.MegaAttribute.OutputFormat;
import com.mega.toolkit.errmngt.ErrorLogFormater;
 
/**
* This is a demonstration report.
* @author NLE
*/
 
public class MyReport implements AnalysisReport, AnalysisCallback {
@Override
public ReportContent getReportContent(final MegaRoot root, final Map<String, List<AnalysisParameter>> parameters, final Object userData) {
// Error Management exemple
final ErrorLogFormater err = new ErrorLogFormater();
err.openSession(root);
// Do not forget to update this line
err.addSessionInfo("Component", "(Java) New Analysis Engine: TestReport: getReportContent");
 
// Initialize the report content
final ReportContent reportContent = new ReportContent("");
 
try {
 
Demo 1: Charts using 2D datasets
 
final Dataset d2 = new Dataset("~LshNx7Mw6zE0[No Data To Display]");
final Dimension dim21 = new Dimension("~LshNx7Mw6zE0[No Data To Display]");
final Dimension dim22 = new Dimension("~LshNx7Mw6zE0[No Data To Display]");
dim21.setSize(4);
dim22.setSize(5);
d2.addDimension(dim21);
d2.addDimension(dim22);
 
// Filling in the dataset (here with arbitrary data)
for (int i = 1; i <= 4; i++) {
dim21.addItem(new Text("Title " + i + "/4", false));
for (int j = 1; j <= 5; j++) {
d2.addItem(new Value((double) i * j), i + "," + j);
}
}
for (int j = 1; j <= 5; j++) {
dim22.addItem(new Text("Title " + j + "/5", false));
}
 
// Add the Dataset to the report
final int datasetID = reportContent.addDataset(d2);
 
// Add the Dataset to many different views
final View v21 = new View(datasetID, true, false);
v21.addRenderer(AnalysisReportToolbox.rAreaChart);
reportContent.addView(v21);
 
final View v22 = new View(datasetID);
v22.addRenderer(AnalysisReportToolbox.rLineChart);
reportContent.addView(v22);
 
final View v23 = new View(datasetID);
v23.addRenderer(AnalysisReportToolbox.rBarChart);
reportContent.addView(v23);
 
final View v24 = new View(datasetID);
v24.addRenderer(AnalysisReportToolbox.rRadarChart);
reportContent.addView(v24);
 
Demo 2: Parameters in tables with vertical headers
 
// Going through parameters
for (final String paramType : parameters.keySet()) {
reportContent.addText(new Text("" + root.getObjectFromID(paramType).getAttribute("~Z20000000D60[Short Name]").getFormated(OutputFormat.html, ""), false, 3));
 
// Going through its values
for (final AnalysisParameter paramValue : parameters.get(paramType)) {
reportContent.addText(new Text(paramValue.getParameterObject().getAttribute("~Z20000000D60[Short Name]").getFormated(OutputFormat.html, ""), false, 4));
 
// and the actual individual values
final Dataset paramDataset = new Dataset("");
final Dimension dim1 = new Dimension("");
final Dimension dim2 = new Dimension("");
dim2.setSize(1);
final Item title = new Text("Column Title", false);
// Set the title column header to allow ordering of column
title.setOrderable(true);
dim2.addItem(title);
int i = 1;
for (final MegaObject value : paramValue.getValues()) {
paramDataset.addItem(new MegaObjectProperty(value.megaField(), "~Z20000000D60[Short Name]"), i + ",1");
i++;
}
dim1.setSize(i - 1);
paramDataset.addDimension(dim1);
paramDataset.addDimension(dim2);
 
final int paramDatasetID = reportContent.addDataset(paramDataset);
 
final View paramView1 = new View(paramDatasetID, true, false);
paramView1.addRenderer(AnalysisReportToolbox.rVerticalTextTable);
reportContent.addView(paramView1);
 
}
}
 
Demo 3: Pie chart
 
final Dataset d1 = new Dataset("");
final Dimension dim11 = new Dimension("");
dim11.setSize(5);
d1.addDimension(dim11);
for (int i = 1; i <= 5; i++) {
d1.addItem(new Value((double) i), i + "");
}
final View v1 = new View(reportContent.addDataset(d1));
v1.addRenderer(AnalysisReportToolbox.rPieChart);
reportContent.addView(v1);
 
Demo 4: Bubble chart
 
final Dataset d3 = new Dataset("");
final Dimension dim31 = new Dimension("");
final Dimension dim32 = new Dimension("");
final Dimension dim33 = new Dimension("");
dim31.setSize(5);
dim32.setSize(4);
dim33.setSize(3);
d3.addDimension(dim31);
d3.addDimension(dim32);
d3.addDimension(dim33);
for (int i = 1; i <= 5; i++) {
for (int j = 1; j <= 4; j++) {
for (int k = 1; k <= 3; k++) {
d3.addItem(new Value((double) i * j * k), i + "," + j + "," + k);
}
}
}
final View v3 = new View(reportContent.addDataset(d3));
v3.addRenderer(AnalysisReportToolbox.rBubbleChart);
reportContent.addView(v3);
 
Demo 5: Simple Gantt chart
 
final Dataset dGantt = new Dataset("");
final Dimension dimGantt = new Dimension("");
dimGantt.setSize(5);
dGantt.addDimension(dimGantt);
for (int i = 1; i <= 5; i++) {
dGantt.addItem(new Value(new Date(2010 - 1900, i, i), new Date(2010 - 1900, i + 1, i)), i + "");
}
final View vGantt = new View(reportContent.addDataset(dGantt));
vGantt.addRenderer(AnalysisReportToolbox.rGanttChart);
reportContent.addView(vGantt);
 
Demo 6: Tree of parameters
 
final Dataset paramDataset = new Dataset("");
// Callback: set the Macro to be called back, in this exemple you should
// reference the macro referencing this Java class
paramDataset.setCallback("~Jq(Ipv4W4P50[Analysis - Set of Parameters]");
final Dimension dim1 = new Dimension("");
final Dimension dim2 = new Dimension("");
dim2.setSize(1);
int i = 0;
for (final String paramType : parameters.keySet()) {
dim1.addItem(new MegaObjectProperty(root.getObjectFromID(paramType).megaField(), "~Z20000000D60[Short Name]"), 1);
i++;
paramDataset.addItem(new MegaObjectProperty(root.getObjectFromID(paramType).megaField(), "~210000000900[Name]"), i + ",1");
// Going through its values
for (final AnalysisParameter paramValue : parameters.get(paramType)) {
dim1.addItem(new MegaObjectProperty(paramValue.getParameterObject().megaField(), "~Z20000000D60[Short Name]"), 2);
i++;
paramDataset.addItem(new MegaObjectProperty(paramValue.getParameterObject().megaField(), "~210000000900[Name]"), i + ",1");
// and the actual individual values!!
for (final MegaObject value : paramValue.getValues()) {
dim1.addItem(new MegaObjectProperty(value.megaField(), "~Z20000000D60[Short Name]"), 3);
i++;
paramDataset.addItem(new MegaObjectProperty(value.megaField(), "~210000000900[Name]"), i + ",1");
}
 
}
}
paramDataset.addDimension(dim1);
paramDataset.addDimension(dim2);
final View treeView = new View(reportContent.addDataset(paramDataset));
treeView.addRenderer(AnalysisReportToolbox.rTree);
treeView.addRenderer(AnalysisReportToolbox.rTable);
reportContent.addView(treeView);
Demo 7: Clickable diagrams
 
final Dataset dDiags = new Dataset("~LshNx7Mw6zE0[No Data To Display]");
final Dimension dimD1 = new Dimension("");
dDiags.addDimension(dimD1);
 
// filling in the dataset
dimD1.addItem(new MegaObjectProperty("~uGEJcPMZ4fM0[Account Payable - Cause-and-Effect Diagram]", ""));
dimD1.addItem(new MegaObjectProperty("~B9QnnNye9940[Add 1 Product to Cart - DM - Data Diagram]", ""));
dimD1.addItem(new MegaObjectProperty("~vU3v8M(a9L50[New APPCO.com - Project Objective and Requirement Diagram]", ""));
final int datasetDiagID = reportContent.addDataset(dDiags);
 
final View vDiag = new View(datasetDiagID);
vDiag.addRenderer(AnalysisReportToolbox.rDiagrams);
reportContent.addView(vDiag);
 
Demo 8: Clickable illustrating diagrams
 
final Dataset diDiags = new Dataset("");
final Dimension dimiD1 = new Dimension("");
diDiags.addDimension(dimiD1);
 
// filling in the dataset with the objects we want to find in the diagram
// and the color to apply to them
dimiD1.addItem(new MegaObjectProperty("~4YRLwW5V49o0[Creation of an imaginary supplier]", ""));
final int datasetiDiagID = reportContent.addDataset(diDiags);
diDiags.addItem(new Value((short) 200, (short) 0, (short) 0), "1");
 
final View viDiag = new View(datasetiDiagID);
viDiag.addRenderer(AnalysisReportToolbox.rIllustratingDiagrams);
reportContent.addView(viDiag);
 
// End of error management
} catch (final Exception e) {
err.logMessage("Report generation failed:");
err.logError(e);
err.closeSession();
}
return reportContent;
}
 
@Override
public String Callback(final MegaRoot root, final String HTMLCellContent, final MegaCollection ColumnMegaObjects, final MegaCollection LineMegaObjects, final Object UserData) {
// Exemple of callback in a table or tree
return "[TEST] Was called back successfully, was[" + HTMLCellContent + "]";
}
}