blob: 092fc09fdd39340d82b8c95ab0019b8ad15b21fb [file] [log] [blame]
/**
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*
*
* This copyright notice shows up in the generated Java code
*/
package org.eclipse.osbp.xtext.reportdsl.jvmmodel;
import com.google.common.base.Objects;
import com.google.inject.Inject;
import com.ibm.icu.util.ULocale;
import com.vaadin.data.Container;
import com.vaadin.server.Sizeable;
import com.vaadin.server.StreamResource;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.BrowserFrame;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import org.eclipse.birt.report.model.api.DimensionHandle;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.IDesignEngine;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.OdaDataSourceHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.SessionHandle;
import org.eclipse.birt.report.model.api.SimpleMasterPageHandle;
import org.eclipse.birt.report.model.api.SlotHandle;
import org.eclipse.birt.report.model.api.StructureFactory;
import org.eclipse.birt.report.model.api.command.ContentException;
import org.eclipse.birt.report.model.api.command.CustomMsgException;
import org.eclipse.birt.report.model.api.core.IModuleModel;
import org.eclipse.birt.report.model.api.elements.structures.CachedMetaData;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import org.eclipse.birt.report.model.api.elements.structures.OdaResultSetColumn;
import org.eclipse.birt.report.model.api.metadata.DimensionValue;
import org.eclipse.birt.report.model.core.DesignElement;
import org.eclipse.birt.report.model.core.Module;
import org.eclipse.birt.report.model.elements.interfaces.IDataSetModel;
import org.eclipse.birt.report.model.writer.ModuleWriter;
import org.eclipse.e4.core.di.extensions.EventUtils;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.osbp.dsl.entity.xtext.extensions.NamingExtensions;
import org.eclipse.osbp.dsl.semantic.common.types.LPackage;
import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
import org.eclipse.osbp.dsl.semantic.entity.LEntity;
import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
import org.eclipse.osbp.eventbroker.EventBrokerMsg;
import org.eclipse.osbp.ui.api.datamart.IDataMart;
import org.eclipse.osbp.ui.api.report.IReportProvider;
import org.eclipse.osbp.utils.entityhelper.DataType;
import org.eclipse.osbp.utils.vaadin.ViewLayoutManager;
import org.eclipse.osbp.xtext.action.common.IToolbarAction;
import org.eclipse.osbp.xtext.authorizationdsl.Role;
import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer;
import org.eclipse.osbp.xtext.i18n.DSLOutputConfigurationProvider;
import org.eclipse.osbp.xtext.i18n.I18NKeyGenerator;
import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
import org.eclipse.osbp.xtext.reportdsl.AutoText;
import org.eclipse.osbp.xtext.reportdsl.AutoTextEnum;
import org.eclipse.osbp.xtext.reportdsl.DatamartTable;
import org.eclipse.osbp.xtext.reportdsl.DatamartTableDetail;
import org.eclipse.osbp.xtext.reportdsl.DatamartTableGroup;
import org.eclipse.osbp.xtext.reportdsl.DatamartTableProperty;
import org.eclipse.osbp.xtext.reportdsl.Element;
import org.eclipse.osbp.xtext.reportdsl.Grid;
import org.eclipse.osbp.xtext.reportdsl.GridCell;
import org.eclipse.osbp.xtext.reportdsl.GridRow;
import org.eclipse.osbp.xtext.reportdsl.Image;
import org.eclipse.osbp.xtext.reportdsl.ImageSizeEnum;
import org.eclipse.osbp.xtext.reportdsl.ImageSourceEnum;
import org.eclipse.osbp.xtext.reportdsl.Label;
import org.eclipse.osbp.xtext.reportdsl.Media;
import org.eclipse.osbp.xtext.reportdsl.OrientationEnum;
import org.eclipse.osbp.xtext.reportdsl.PageDetail;
import org.eclipse.osbp.xtext.reportdsl.PageFooter;
import org.eclipse.osbp.xtext.reportdsl.PageHeader;
import org.eclipse.osbp.xtext.reportdsl.PageSizeEnum;
import org.eclipse.osbp.xtext.reportdsl.PageTemplate;
import org.eclipse.osbp.xtext.reportdsl.Report;
import org.eclipse.osbp.xtext.reportdsl.ReportDesign;
import org.eclipse.osbp.xtext.reportdsl.ReportDesignTemplate;
import org.eclipse.osbp.xtext.reportdsl.ReportModel;
import org.eclipse.osbp.xtext.reportdsl.ReportPackage;
import org.eclipse.osbp.xtext.reportdsl.Style;
import org.eclipse.osbp.xtext.reportdsl.SubSubTitle;
import org.eclipse.osbp.xtext.reportdsl.SubTitle;
import org.eclipse.osbp.xtext.reportdsl.Text;
import org.eclipse.osbp.xtext.reportdsl.Title;
import org.eclipse.osbp.xtext.reportdsl.UnitEnum;
import org.eclipse.osbp.xtext.reportdsl.common.BaseReport;
import org.eclipse.osbp.xtext.reportdsl.common.BirtEngine;
import org.eclipse.osbp.xtext.reportdsl.common.DataTypes;
import org.eclipse.osbp.xtext.reportdsl.common.OdaConnProperties;
import org.eclipse.osbp.xtext.reportdsl.common.attribute.Attribute;
import org.eclipse.osbp.xtext.reportdsl.common.attribute.Width;
import org.eclipse.osbp.xtext.reportdsl.common.item.BodyItem;
import org.eclipse.osbp.xtext.reportdsl.common.item.CellItem;
import org.eclipse.osbp.xtext.reportdsl.common.item.ContainerItem;
import org.eclipse.osbp.xtext.reportdsl.common.item.GridItem;
import org.eclipse.osbp.xtext.reportdsl.common.item.ImageItem;
import org.eclipse.osbp.xtext.reportdsl.common.item.PageFooterItem;
import org.eclipse.osbp.xtext.reportdsl.common.item.PageHeaderItem;
import org.eclipse.osbp.xtext.reportdsl.jvmmodel.ReportGeneratorWorkSet;
import org.eclipse.osbp.xtext.reportdsl.jvmmodel.Utilities;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.common.types.JvmDeclaredType;
import org.eclipse.xtext.generator.IFileSystemAccess;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
import org.eclipse.xtext.xbase.compiler.ImportManager;
import org.eclipse.xtext.xbase.compiler.output.TreeAppendable;
import org.eclipse.xtext.xbase.lib.Conversions;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.IteratorExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
@SuppressWarnings("all")
public class ReportModelGenerator extends I18NModelGenerator {
@Inject
@Extension
private IQualifiedNameProvider _iQualifiedNameProvider;
@Inject
@Extension
private DatamartDSLJvmModelInferrer datamartInferrer;
@Inject
@Extension
private NamingExtensions _namingExtensions;
@Inject
@Extension
private BasicDslGeneratorUtils _basicDslGeneratorUtils;
@Inject
@Extension
private DataType dtType;
private static Object designEngine = null;
public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(BaseReport.CAPTION_I18NKEY_SAVE_PDF, "");
_builder.append(",");
_builder.append(BaseReport.CAPTION_I18NKEY_PRINT_PDF, "");
this.addTranslatables(_builder.toString());
super.doGenerate(input, fsa);
}
protected void _internalDoGenerate(final ReportModel orgModel, final IFileSystemAccess fsa) {
IDesignEngine _createDesignEngine = BirtEngine.createDesignEngine();
ReportModelGenerator.designEngine = _createDesignEngine;
EList<ReportPackage> _pckg = orgModel.getPckg();
for (final ReportPackage pkg : _pckg) {
EList<Report> _reports = pkg.getReports();
for (final Report report : _reports) {
try {
this.generateReportFile(pkg, report, fsa);
} catch (final Throwable _t) {
if (_t instanceof Exception) {
final Exception e = (Exception)_t;
e.printStackTrace();
} else {
throw Exceptions.sneakyThrow(_t);
}
}
}
}
}
private void generateReportFile(final ReportPackage pckg, final Report report, final IFileSystemAccess fsa) {
ReportDesign _design = report.getDesign();
if ((_design instanceof ReportDesignTemplate)) {
this.generateReportRoleFile(pckg, report, null, fsa);
DatamartDefinition _datamartRef = report.getDatamartRef();
EList<DatamartRole> _roles = _datamartRef.getRoles();
for (final DatamartRole role : _roles) {
this.generateReportRoleFile(pckg, report, role, fsa);
}
}
}
private void generateReportRoleFile(final ReportPackage pckg, final Report report, final DatamartRole role, final IFileSystemAccess fsa) {
ReportGeneratorWorkSet workSet = new ReportGeneratorWorkSet();
workSet.generator = this;
workSet.report = report;
workSet.role = role;
ReportDesign _design = report.getDesign();
ReportDesignTemplate template = ((ReportDesignTemplate) _design);
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pckg);
String pckgName = _fullyQualifiedName.toString();
String pckgNamePath = pckgName.replaceAll("\\.", "/");
StringConcatenation _builder = new StringConcatenation();
String _name = report.getName();
_builder.append(_name, "");
{
boolean _notEquals = (!Objects.equal(role, null));
if (_notEquals) {
Role _assignedRole = role.getAssignedRole();
String _name_1 = _assignedRole.getName();
_builder.append(_name_1, "");
}
}
_builder.append(".rptdesign");
String filename = _builder.toString();
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(pckgNamePath, "");
_builder_1.append("/");
_builder_1.append(filename, "");
String fullpath = _builder_1.toString();
Locale _default = Locale.getDefault();
ULocale _forLocale = ULocale.forLocale(_default);
SessionHandle session = ((IDesignEngine) ReportModelGenerator.designEngine).newSessionHandle(_forLocale);
ReportDesignHandle _createDesign = session.createDesign();
workSet.design = _createDesign;
ElementFactory _elementFactory = workSet.design.getElementFactory();
workSet.factory = _elementFactory;
workSet.design.setIncludeResource("i18n/I18N");
Media _media = report.getMedia();
workSet.setRequestedMedia(_media);
DatamartDefinition _datamartRef = report.getDatamartRef();
PageTemplate _pageTemplate = report.getPageTemplate();
PageHeader _header = template.getHeader();
PageFooter _footer = template.getFooter();
this.generateMasterPage(_datamartRef, workSet, _pageTemplate, _header, _footer);
DatamartDefinition _datamartRef_1 = report.getDatamartRef();
this.addDatamartSourceAndSet(_datamartRef_1, workSet, null, null);
BodyItem body = new BodyItem(workSet);
DatamartDefinition _datamartRef_2 = report.getDatamartRef();
PageDetail _detail = template.getDetail();
EList<Element> _elements = _detail.getElements();
this.generateItems(_datamartRef_2, workSet, body, ((Element[])Conversions.unwrapArray(_elements, Element.class)));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
Module _module = workSet.design.getModule();
_module.prepareToSave();
Module _module_1 = workSet.design.getModule();
ModuleWriter _writer = _module_1.getWriter();
_writer.write(baos);
Module _module_2 = workSet.design.getModule();
_module_2.onSave();
} catch (final Throwable _t) {
if (_t instanceof Exception) {
final Exception e = (Exception)_t;
ByteArrayOutputStream _byteArrayOutputStream = new ByteArrayOutputStream();
baos = _byteArrayOutputStream;
PrintStream _printStream = new PrintStream(baos);
e.printStackTrace(_printStream);
} else {
throw Exceptions.sneakyThrow(_t);
}
}
String _string = baos.toString();
fsa.generateFile(fullpath, DSLOutputConfigurationProvider.DEFAULT_REPORT_OUTPUT, _string);
}
private void generateMasterPage(final DatamartDefinition datamart, final ReportGeneratorWorkSet workSet, final PageTemplate pageTemplate, final PageHeader pageHeader, final PageFooter pageFooter) {
try {
PageHeader header = pageHeader;
PageFooter footer = pageFooter;
boolean _equals = Objects.equal(header, null);
if (_equals) {
PageHeader _header = pageTemplate.getHeader();
header = _header;
}
boolean _equals_1 = Objects.equal(footer, null);
if (_equals_1) {
PageFooter _footer = pageTemplate.getFooter();
footer = _footer;
}
String _name = pageTemplate.getName();
SimpleMasterPageHandle masterPage = workSet.factory.newSimpleMasterPage(_name);
PageSizeEnum _size = pageTemplate.getSize();
String _name_1 = _size.name();
String _lowerCase = _name_1.toLowerCase();
masterPage.setPageType(_lowerCase);
OrientationEnum _orientation = pageTemplate.getOrientation();
String _name_2 = _orientation.name();
String _lowerCase_1 = _name_2.toLowerCase();
masterPage.setOrientation(_lowerCase_1);
DimensionHandle _topMargin = masterPage.getTopMargin();
double _topMarginValue = pageTemplate.getTopMarginValue();
UnitEnum _topMarginUnit = pageTemplate.getTopMarginUnit();
String _name_3 = _topMarginUnit.name();
String _lowerCase_2 = _name_3.toLowerCase();
DimensionValue _dimensionValue = new DimensionValue(_topMarginValue, _lowerCase_2);
_topMargin.setValue(_dimensionValue);
DimensionHandle _leftMargin = masterPage.getLeftMargin();
double _leftMarginValue = pageTemplate.getLeftMarginValue();
UnitEnum _leftMarginUnit = pageTemplate.getLeftMarginUnit();
String _name_4 = _leftMarginUnit.name();
String _lowerCase_3 = _name_4.toLowerCase();
DimensionValue _dimensionValue_1 = new DimensionValue(_leftMarginValue, _lowerCase_3);
_leftMargin.setValue(_dimensionValue_1);
DimensionHandle _bottomMargin = masterPage.getBottomMargin();
double _bottomMarginValue = pageTemplate.getBottomMarginValue();
UnitEnum _bottomMarginUnit = pageTemplate.getBottomMarginUnit();
String _name_5 = _bottomMarginUnit.name();
String _lowerCase_4 = _name_5.toLowerCase();
DimensionValue _dimensionValue_2 = new DimensionValue(_bottomMarginValue, _lowerCase_4);
_bottomMargin.setValue(_dimensionValue_2);
DimensionHandle _rightMargin = masterPage.getRightMargin();
double _rightMarginValue = pageTemplate.getRightMarginValue();
UnitEnum _rightMarginUnit = pageTemplate.getRightMarginUnit();
String _name_6 = _rightMarginUnit.name();
String _lowerCase_5 = _name_6.toLowerCase();
DimensionValue _dimensionValue_3 = new DimensionValue(_rightMarginValue, _lowerCase_5);
_rightMargin.setValue(_dimensionValue_3);
boolean _notEquals = (!Objects.equal(header, null));
if (_notEquals) {
boolean _isShowOnFirst = header.isShowOnFirst();
masterPage.setShowHeaderOnFirst(_isShowOnFirst);
DimensionHandle _headerHeight = masterPage.getHeaderHeight();
double _heightValue = header.getHeightValue();
UnitEnum _heightUnit = header.getHeightUnit();
String _name_7 = _heightUnit.name();
String _lowerCase_6 = _name_7.toLowerCase();
DimensionValue _dimensionValue_4 = new DimensionValue(_heightValue, _lowerCase_6);
_headerHeight.setValue(_dimensionValue_4);
PageHeaderItem _pageHeaderItem = new PageHeaderItem(workSet, masterPage);
EList<Element> _elements = header.getElements();
this.generateItems(datamart, workSet, _pageHeaderItem, ((Element[])Conversions.unwrapArray(_elements, Element.class)));
}
boolean _notEquals_1 = (!Objects.equal(footer, null));
if (_notEquals_1) {
boolean _isShowOnLast = footer.isShowOnLast();
masterPage.setShowFooterOnLast(_isShowOnLast);
DimensionHandle _footerHeight = masterPage.getFooterHeight();
double _heightValue_1 = footer.getHeightValue();
UnitEnum _heightUnit_1 = footer.getHeightUnit();
String _name_8 = _heightUnit_1.name();
String _lowerCase_7 = _name_8.toLowerCase();
DimensionValue _dimensionValue_5 = new DimensionValue(_heightValue_1, _lowerCase_7);
_footerHeight.setValue(_dimensionValue_5);
PageFooterItem _pageFooterItem = new PageFooterItem(workSet, masterPage);
EList<Element> _elements_1 = footer.getElements();
this.generateItems(datamart, workSet, _pageFooterItem, ((Element[])Conversions.unwrapArray(_elements_1, Element.class)));
}
SlotHandle _masterPages = workSet.design.getMasterPages();
_masterPages.add(masterPage);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private void addDatamartSourceAndSet(final DatamartDefinition datamart, final ReportGeneratorWorkSet workSet, final String alias, final DatamartProperty[] hiddens) {
try {
String _dataSourceName = Utilities.getDataSourceName(alias, datamart);
String dataSourceName = _dataSourceName.toString();
OdaDataSourceHandle odsourceh = workSet.factory.newOdaDataSource(dataSourceName, BaseReport.DATASOURCE_EXTENSION_ID);
DesignElement _element = odsourceh.getElement();
Module _module = workSet.design.getModule();
long _nextID = _module.getNextID();
_element.setID(_nextID);
Module _module_1 = workSet.design.getModule();
DesignElement _element_1 = odsourceh.getElement();
_module_1.addElementID(_element_1);
Module _module_2 = workSet.design.getModule();
DesignElement _element_2 = odsourceh.getElement();
_module_2.add(_element_2, IModuleModel.DATA_SOURCE_SLOT);
String _dataSetName = Utilities.getDataSetName(alias, datamart);
String dataSetName = _dataSetName.toString();
String _concat = BaseReport.DATASOURCE_EXTENSION_ID.concat(".dataSet");
OdaDataSetHandle odseth = workSet.factory.newOdaDataSet(dataSetName, _concat);
workSet.dataSets.put(dataSetName, odseth);
DesignElement _element_3 = odseth.getElement();
Module _module_3 = workSet.design.getModule();
long _nextID_1 = _module_3.getNextID();
_element_3.setID(_nextID_1);
String _bundleName = Utilities.getBundleName(datamart);
odseth.setProperty(OdaConnProperties.DATAMART_BUNDLENAME, _bundleName);
CharSequence _datamartClassName = this.getDatamartClassName(alias, datamart);
odseth.setProperty(OdaConnProperties.DATAMART_CLASSNAME, _datamartClassName);
DesignElement _element_4 = odsourceh.getElement();
String _name = _element_4.getName();
odseth.setProperty(OdaConnProperties.DATAMART_DATASOURCE, _name);
odseth.setProperty(OdaConnProperties.DATAMART_DATASOURCENAME, dataSourceName);
odseth.setProperty(OdaConnProperties.DATAMART_DATASETNAME, dataSetName);
DatamartSource _source = datamart.getSource();
boolean _matched = false;
if (!_matched) {
if (_source instanceof DatamartCube) {
_matched=true;
this.addDatamartCubeResultSet(workSet, odseth, dataSetName, datamart);
}
}
if (!_matched) {
if (_source instanceof DatamartEntity) {
_matched=true;
this.addDatamartEntityResultSet(workSet, odseth, dataSetName, datamart);
}
}
if (!_matched) {
if (_source instanceof DatamartTask) {
_matched=true;
System.err.println("DatamartTask ... todo");
}
}
Module _module_4 = workSet.design.getModule();
DesignElement _element_5 = odseth.getElement();
_module_4.addElementID(_element_5);
Module _module_5 = workSet.design.getModule();
DesignElement _element_6 = odseth.getElement();
_module_5.add(_element_6, IModuleModel.DATA_SET_SLOT);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private void addDatamartCubeResultSet(final ReportGeneratorWorkSet workSet, final OdaDataSetHandle odseth, final String dataSetName, final DatamartDefinition datamart) {
try {
System.err.println("DatamartCube ... todo");
DatamartSource _source = datamart.getSource();
DatamartCube cube = ((DatamartCube) _source);
String selectColumns = "";
CachedMetaData cmd = new CachedMetaData();
ArrayList<OdaResultSetColumn> sd = new ArrayList<OdaResultSetColumn>();
ArrayList<ComputedColumn> cc = new ArrayList<ComputedColumn>();
StringConcatenation _builder = new StringConcatenation();
_builder.append("select ");
_builder.append(selectColumns, "");
_builder.append(" from ");
String _name = datamart.getName();
_builder.append(_name, "");
String _string = _builder.toString();
odseth.setProperty("queryText", _string);
cmd.setProperty(IDataSetModel.RESULT_SET_PROP, sd);
odseth.setProperty(IDataSetModel.CACHED_METADATA_PROP, cmd);
DesignElement _element = odseth.getElement();
_element.setProperty(IDataSetModel.RESULT_SET_PROP, sd);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private void addAllDatamartProperties(final ReportGeneratorWorkSet workSet, final ArrayList<OdaResultSetColumn> sd, final ArrayList<ComputedColumn> cc, final EObject container) {
boolean _matched = false;
if (!_matched) {
if (container instanceof DatamartEntity) {
_matched=true;
EList<DatamartNavigation> _navigations = ((DatamartEntity)container).getNavigations();
for (final DatamartNavigation navigation : _navigations) {
TreeIterator<EObject> _eAllContents = navigation.eAllContents();
final Procedure1<EObject> _function = new Procedure1<EObject>() {
public void apply(final EObject element) {
ReportModelGenerator.this.addAllDatamartProperties(workSet, sd, cc, element);
}
};
IteratorExtensions.<EObject>forEach(_eAllContents, _function);
}
EList<DatamartProperty> _properties = ((DatamartEntity)container).getProperties();
boolean _isEmpty = _properties.isEmpty();
if (_isEmpty) {
LEntity _entityRef = ((DatamartEntity)container).getEntityRef();
List<LEntityAttribute> _allAttributes = _entityRef.getAllAttributes();
for (final LEntityAttribute attribute : _allAttributes) {
boolean _and = false;
boolean _isId = attribute.isId();
boolean _not = (!_isId);
if (!_not) {
_and = false;
} else {
boolean _isUuid = attribute.isUuid();
boolean _not_1 = (!_isUuid);
_and = _not_1;
}
if (_and) {
LEntity _entityRef_1 = ((DatamartEntity)container).getEntityRef();
String _name = attribute.getName();
boolean _isAuthorized = this.datamartInferrer.isAuthorized(workSet.role, _entityRef_1, _name);
if (_isAuthorized) {
this.addDatamartProperty(workSet, sd, cc, attribute);
}
}
}
} else {
EList<DatamartProperty> _properties_1 = ((DatamartEntity)container).getProperties();
for (final DatamartProperty property : _properties_1) {
LEntity _entityRef_2 = ((DatamartEntity)container).getEntityRef();
LEntityAttribute _propertyRef = property.getPropertyRef();
String _name_1 = _propertyRef.getName();
boolean _isAuthorized_1 = this.datamartInferrer.isAuthorized(workSet.role, _entityRef_2, _name_1);
if (_isAuthorized_1) {
this.addDatamartProperty(workSet, sd, cc, property);
}
}
}
}
}
}
private void addDatamartEntityResultSet(final ReportGeneratorWorkSet workSet, final OdaDataSetHandle odseth, final String dataSetName, final DatamartDefinition datamart) {
try {
String selectColumns = "";
CachedMetaData cmd = new CachedMetaData();
ArrayList<OdaResultSetColumn> sd = new ArrayList<OdaResultSetColumn>();
ArrayList<ComputedColumn> cc = new ArrayList<ComputedColumn>();
workSet.fPosition = 0;
DatamartSource _source = datamart.getSource();
this.addAllDatamartProperties(workSet, sd, cc, _source);
workSet.putResultSetColumns(dataSetName, sd);
workSet.putComputedColumns(dataSetName, cc);
for (final ComputedColumn cc1 : cc) {
boolean _isEmpty = selectColumns.isEmpty();
if (_isEmpty) {
String _name = cc1.getName();
selectColumns = _name;
} else {
String _concat = selectColumns.concat(",");
String _name_1 = cc1.getName();
String _concat_1 = _concat.concat(_name_1);
selectColumns = _concat_1;
}
}
StringConcatenation _builder = new StringConcatenation();
_builder.append("select ");
_builder.append(selectColumns, "");
_builder.append(" from ");
String _name_2 = datamart.getName();
_builder.append(_name_2, "");
String _string = _builder.toString();
odseth.setProperty("queryText", _string);
cmd.setProperty(IDataSetModel.RESULT_SET_PROP, sd);
odseth.setProperty(IDataSetModel.CACHED_METADATA_PROP, cmd);
DesignElement _element = odseth.getElement();
_element.setProperty(IDataSetModel.RESULT_SET_PROP, sd);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private void addDatamartProperty(final ReportGeneratorWorkSet workSet, final ArrayList<OdaResultSetColumn> sd, final ArrayList<ComputedColumn> cc, final DatamartProperty property) {
LEntityAttribute _propertyRef = property.getPropertyRef();
this.addDatamartProperty(workSet, sd, cc, _propertyRef);
}
private void addDatamartProperty(final ReportGeneratorWorkSet workSet, final ArrayList<OdaResultSetColumn> sd, final ArrayList<ComputedColumn> cc, final LEntityAttribute attribute) {
IDataMart.EType etype = this.dtType.getBasicType(attribute);
DataTypes dataType = DataTypes.typeFor(etype);
boolean _equals = Objects.equal(dataType, DataTypes.ANY);
if (_equals) {
LScalarType _type = attribute.getType();
DataTypes _typeFor = DataTypes.typeFor(_type);
dataType = _typeFor;
}
String _columnName = this._namingExtensions.toColumnName(attribute);
String name = _columnName.toLowerCase();
for (final OdaResultSetColumn column : sd) {
String _columnName_1 = column.getColumnName();
boolean _equalsIgnoreCase = _columnName_1.equalsIgnoreCase(name);
if (_equalsIgnoreCase) {
return;
}
}
OdaResultSetColumn st = new OdaResultSetColumn();
st.setColumnName(name);
st.setProperty("name", name);
int _nativeOdaDataTypeId = dataType.getNativeOdaDataTypeId();
st.setNativeDataType(Integer.valueOf(_nativeOdaDataTypeId));
st.setNativeName(name);
workSet.fPosition = (workSet.fPosition + 1);
st.setPosition(Integer.valueOf(workSet.fPosition));
String _nativeOdaDataTypeName = dataType.getNativeOdaDataTypeName();
st.setDataType(_nativeOdaDataTypeName);
sd.add(st);
ComputedColumn cs1 = StructureFactory.createComputedColumn();
cs1.setName(name);
cs1.setDisplayName(name);
String _concat = "dataSetRow[\"".concat(name);
String _concat_1 = _concat.concat("\"]");
cs1.setExpression(_concat_1);
String _nativeOdaDataTypeName_1 = dataType.getNativeOdaDataTypeName();
cs1.setDataType(_nativeOdaDataTypeName_1);
cc.add(cs1);
}
private CharSequence getDatamartClassName(final String alias, final DatamartDefinition datamart) {
StringConcatenation _builder = new StringConcatenation();
EObject _eContainer = datamart.eContainer();
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((LPackage) _eContainer));
_builder.append(_fullyQualifiedName, "");
_builder.append(".");
String _name = datamart.getName();
_builder.append(_name, "");
_builder.append("Class");
return _builder;
}
public void generateItems(final DatamartDefinition datamart, final ReportGeneratorWorkSet workSet, final ContainerItem container, final Element[] elements) {
boolean _notEquals = (!Objects.equal(elements, null));
if (_notEquals) {
for (final Element element : elements) {
try {
boolean _matched = false;
if (!_matched) {
if (element instanceof Title) {
_matched=true;
String _text = ((Title)element).getText();
String _key = I18NKeyGenerator.key(_text);
String _text_1 = ((Title)element).getText();
String _replace = _text_1.replace("\"", "");
Style _style = ((Title)element).getStyle();
container.addHeader(1, _key, _replace, _style);
}
}
if (!_matched) {
if (element instanceof SubTitle) {
_matched=true;
String _text = ((SubTitle)element).getText();
String _key = I18NKeyGenerator.key(_text);
String _text_1 = ((SubTitle)element).getText();
String _replace = _text_1.replace("\"", "");
Style _style = ((SubTitle)element).getStyle();
container.addHeader(2, _key, _replace, _style);
}
}
if (!_matched) {
if (element instanceof SubSubTitle) {
_matched=true;
String _text = ((SubSubTitle)element).getText();
String _key = I18NKeyGenerator.key(_text);
String _text_1 = ((SubSubTitle)element).getText();
String _replace = _text_1.replace("\"", "");
Style _style = ((SubSubTitle)element).getStyle();
container.addHeader(3, _key, _replace, _style);
}
}
if (!_matched) {
if (element instanceof Label) {
_matched=true;
String _text = ((Label)element).getText();
String _key = I18NKeyGenerator.key(_text);
String _text_1 = ((Label)element).getText();
String _replace = _text_1.replace("\"", "");
Style _style = ((Label)element).getStyle();
container.addLabel(_key, _replace, _style);
}
}
if (!_matched) {
if (element instanceof Text) {
_matched=true;
String _text = ((Text)element).getText();
String _key = I18NKeyGenerator.key(_text);
String _text_1 = ((Text)element).getText();
String _replace = _text_1.replace("\"", "");
Style _style = ((Text)element).getStyle();
container.addText(_key, _replace, _style);
}
}
if (!_matched) {
if (element instanceof AutoText) {
_matched=true;
AutoTextEnum _type = ((AutoText)element).getType();
String _string = _type.toString();
Style _style = ((AutoText)element).getStyle();
container.addAutoText(_string, _style);
}
}
if (!_matched) {
if (element instanceof DatamartTableProperty) {
_matched=true;
Style _style = ((DatamartTableProperty)element).getStyle();
container.addData(((DatamartTableProperty)element), _style);
}
}
if (!_matched) {
if (element instanceof Image) {
_matched=true;
this.addImage(workSet, container, ((Image)element), null);
}
}
if (!_matched) {
if (element instanceof DatamartTable) {
_matched=true;
Width _width = new Width("100%");
this.addDatamartTable(datamart, workSet, container, ((DatamartTable)element), _width);
}
}
if (!_matched) {
if (element instanceof Grid) {
_matched=true;
Width _width = new Width("100%");
this.addGrid(datamart, workSet, container, ((Grid)element), null, _width);
}
}
} catch (final Throwable _t) {
if (_t instanceof ContentException) {
final ContentException ce = (ContentException)_t;
StringConcatenation _builder = new StringConcatenation();
Class<? extends ContentException> _class = ce.getClass();
String _simpleName = _class.getSimpleName();
_builder.append(_simpleName, "");
_builder.append(": ");
String _localizedMessage = ce.getLocalizedMessage();
_builder.append(_localizedMessage, "");
System.err.println(_builder);
} else if (_t instanceof Exception) {
final Exception e = (Exception)_t;
e.printStackTrace();
} else {
throw Exceptions.sneakyThrow(_t);
}
}
}
}
}
private void addDatamartTable(final DatamartDefinition datamart, final ReportGeneratorWorkSet workSet, final ContainerItem container, final DatamartTable datamartTable, final Attribute... attributes) {
try {
ArrayList<DatamartProperty> hiddens = new ArrayList<DatamartProperty>();
DatamartTableDetail _detail = datamartTable.getDetail();
EList<DatamartTableProperty> _columnFormatters = _detail.getColumnFormatters();
for (final DatamartTableProperty columnFormatter : _columnFormatters) {
}
String alias = datamartTable.getName();
String _dataSetName = Utilities.getDataSetName(alias, datamart);
String dataSetName = _dataSetName.toString();
OdaDataSetHandle dataSet = workSet.dataSets.get(dataSetName);
boolean _equals = Objects.equal(dataSet, null);
if (_equals) {
final ArrayList<DatamartProperty> _converted_hiddens = (ArrayList<DatamartProperty>)hiddens;
this.addDatamartSourceAndSet(datamart, workSet, alias, ((DatamartProperty[])Conversions.unwrapArray(_converted_hiddens, DatamartProperty.class)));
OdaDataSetHandle _get = workSet.dataSets.get(dataSetName);
dataSet = _get;
}
ArrayList<ComputedColumn> _computedColumns = workSet.getComputedColumns(dataSetName);
EList<DatamartTableGroup> _groups = datamartTable.getGroups();
DatamartTableDetail _detail_1 = datamartTable.getDetail();
Style _style = _detail_1.getStyle();
DatamartTableDetail _detail_2 = datamartTable.getDetail();
EList<DatamartTableProperty> _columnFormatters_1 = _detail_2.getColumnFormatters();
Style _style_1 = datamartTable.getStyle();
container.addTable(dataSet, datamartTable, _computedColumns, ((DatamartTableGroup[])Conversions.unwrapArray(_groups, DatamartTableGroup.class)), _style, ((DatamartTableProperty[])Conversions.unwrapArray(_columnFormatters_1, DatamartTableProperty.class)), _style_1, attributes);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private void addImage(final ReportGeneratorWorkSet workSet, final ContainerItem container, final Image imageData, final Style style, final Attribute... attributes) {
try {
ImageSizeEnum _size = imageData.getSize();
String _literal = _size.getLiteral();
double _scale = imageData.getScale();
ImageSourceEnum _sourceType = imageData.getSourceType();
String _literal_1 = _sourceType.getLiteral();
String _filename = imageData.getFilename();
ImageItem image = new ImageItem(workSet,
null, _literal, _scale, _literal_1, _filename);
container.add(image, style, attributes);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private void addGrid(final DatamartDefinition datamart, final ReportGeneratorWorkSet workSet, final ContainerItem container, final Grid grid, final Style style, final Attribute... attributes) {
try {
EList<GridRow> _rows = grid.getRows();
int rowCount = ((Object[])Conversions.unwrapArray(_rows, Object.class)).length;
int columnCount = 0;
EList<GridRow> _rows_1 = grid.getRows();
for (final GridRow row : _rows_1) {
EList<GridCell> _cells = row.getCells();
int _length = ((Object[])Conversions.unwrapArray(_cells, Object.class)).length;
int _max = Math.max(columnCount, _length);
columnCount = _max;
}
GridItem gridItem = new GridItem(workSet, columnCount, rowCount);
int rowNo = 0;
EList<GridRow> _rows_2 = grid.getRows();
for (final GridRow row_1 : _rows_2) {
{
int columnNo = 0;
EList<GridCell> _cells_1 = row_1.getCells();
for (final GridCell cell : _cells_1) {
{
CellItem _cell = gridItem.getCell(columnNo, rowNo);
int _columnspan = cell.getColumnspan();
CellItem _setColumnSpan = _cell.setColumnSpan(_columnspan);
EList<Element> _elements = cell.getElements();
this.generateItems(datamart, workSet, _setColumnSpan, ((Element[])Conversions.unwrapArray(_elements, Element.class)));
columnNo = (columnNo + 1);
}
}
Style _style = row_1.getStyle();
boolean _notEquals = (!Objects.equal(_style, null));
if (_notEquals) {
Style _style_1 = row_1.getStyle();
gridItem.applyStyle(rowNo, _style_1);
}
rowNo = (rowNo + 1);
}
}
container.add(gridItem, style, attributes);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public TreeAppendable createAppendable(final EObject context, final ImportManager importManager, final GeneratorConfig config) {
TreeAppendable _xblockexpression = null;
{
Resource _eResource = context.eResource();
this.setBuilder(_eResource);
this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, ReportGeneratorWorkSet.class, HorizontalLayout.class, ViewLayoutManager.class, BrowserFrame.class, StreamResource.class, Sizeable.Unit.class, Button.class, com.vaadin.ui.Label.class, IEventBroker.class, EventHandler.class, Event.class, EventUtils.class, EventBrokerMsg.class, CustomMsgException.class, IReportProvider.Rendering.class, AbstractComponent.class, UUID.class, Container.Filter.class, IToolbarAction.class);
_xblockexpression = super.createAppendable(context, importManager, config);
}
return _xblockexpression;
}
public void internalDoGenerate(final EObject orgModel, final IFileSystemAccess fsa) {
if (orgModel instanceof JvmDeclaredType) {
_internalDoGenerate((JvmDeclaredType)orgModel, fsa);
return;
} else if (orgModel instanceof ReportModel) {
_internalDoGenerate((ReportModel)orgModel, fsa);
return;
} else if (orgModel != null) {
_internalDoGenerate(orgModel, fsa);
return;
} else {
throw new IllegalArgumentException("Unhandled parameter types: " +
Arrays.<Object>asList(orgModel, fsa).toString());
}
}
}