| /** |
| * 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()); |
| } |
| } |
| } |