blob: 9be8a6c8ab64b50dc8b01b56e39cc240bba02001 [file] [log] [blame]
/**
* Copyright (c) 2013, 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 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.xtext.datamartdsl.jvmmodel;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.inject.Inject;
import mondrian.rolap.RolapConnection;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.bpm.api.IBPMEngine;
import org.eclipse.osbp.bpm.api.IBPMTaskClient;
import org.eclipse.osbp.core.api.persistence.IPersistenceService;
import org.eclipse.osbp.dsl.common.datatypes.IDto;
import org.eclipse.osbp.dsl.common.xtext.extensions.AnnotationExtension;
import org.eclipse.osbp.dsl.entity.xtext.extensions.ModelExtensions;
import org.eclipse.osbp.dsl.entity.xtext.extensions.NamingExtensions;
import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
import org.eclipse.osbp.dsl.semantic.common.types.LKeyAndValue;
import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
import org.eclipse.osbp.dsl.semantic.entity.LBean;
import org.eclipse.osbp.dsl.semantic.entity.LBeanAttribute;
import org.eclipse.osbp.dsl.semantic.entity.LEntity;
import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
import org.eclipse.osbp.dsl.semantic.entity.LEntityReference;
import org.eclipse.osbp.preferences.EnumDatabaseVendor;
import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
import org.eclipse.osbp.ui.api.datamart.DatamartPrimary;
import org.eclipse.osbp.ui.api.datamart.IDataMart;
import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
import org.eclipse.osbp.ui.api.user.IUser;
import org.eclipse.osbp.ui.api.useraccess.IUserAccessService;
import org.eclipse.osbp.utils.common.EntityUtils;
import org.eclipse.osbp.utils.entityhelper.DataType;
import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
import org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage;
import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
import org.eclipse.osbp.xtext.cubedsl.CubePackage;
import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
import org.eclipse.osbp.xtext.datamart.common.ACubeDatamart;
import org.eclipse.osbp.xtext.datamart.common.AEntityDatamart;
import org.eclipse.osbp.xtext.datamart.common.ATaskDatamart;
import org.eclipse.osbp.xtext.datamart.common.DatamartDefinitionUtil;
import org.eclipse.osbp.xtext.datamart.common.DatamartDtoMapper;
import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCellSet;
import org.eclipse.osbp.xtext.datamartdsl.Addition;
import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
import org.eclipse.osbp.xtext.datamartdsl.ConditionalExpression;
import org.eclipse.osbp.xtext.datamartdsl.Conjunction;
import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregation;
import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunction;
import org.eclipse.osbp.xtext.datamartdsl.DatamartAggregationFunctionInterface;
import org.eclipse.osbp.xtext.datamartdsl.DatamartAttribute;
import org.eclipse.osbp.xtext.datamartdsl.DatamartAttributeBase;
import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
import org.eclipse.osbp.xtext.datamartdsl.DatamartColumn;
import org.eclipse.osbp.xtext.datamartdsl.DatamartCondition;
import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeAxis;
import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLFactory;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDefineDerivedMeasure;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
import org.eclipse.osbp.xtext.datamartdsl.DatamartFunction;
import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionIntParameter;
import org.eclipse.osbp.xtext.datamartdsl.DatamartFunctionInterface;
import org.eclipse.osbp.xtext.datamartdsl.DatamartHierarchy;
import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure;
import org.eclipse.osbp.xtext.datamartdsl.DatamartMember;
import org.eclipse.osbp.xtext.datamartdsl.DatamartMemberTuple;
import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
import org.eclipse.osbp.xtext.datamartdsl.DatamartOrder;
import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
import org.eclipse.osbp.xtext.datamartdsl.DatamartParameterFunction;
import org.eclipse.osbp.xtext.datamartdsl.DatamartReference;
import org.eclipse.osbp.xtext.datamartdsl.DatamartReferenceBase;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregation;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSetAggregationFunction;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunction;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSetFunctionInterface;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSetParameterFunction;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSetTuple;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSlicer;
import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
import org.eclipse.osbp.xtext.datamartdsl.DatamartTask;
import org.eclipse.osbp.xtext.datamartdsl.DatamartTaskFilter;
import org.eclipse.osbp.xtext.datamartdsl.Disjunction;
import org.eclipse.osbp.xtext.datamartdsl.Division;
import org.eclipse.osbp.xtext.datamartdsl.Expression;
import org.eclipse.osbp.xtext.datamartdsl.Multiplication;
import org.eclipse.osbp.xtext.datamartdsl.Subtraction;
import org.eclipse.osbp.xtext.datamartdsl.util.DatamartAttributeUtil;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.common.types.JvmAnnotationReference;
import org.eclipse.xtext.common.types.JvmDeclaredType;
import org.eclipse.xtext.common.types.JvmField;
import org.eclipse.xtext.common.types.JvmFormalParameter;
import org.eclipse.xtext.common.types.JvmGenericType;
import org.eclipse.xtext.common.types.JvmMember;
import org.eclipse.xtext.common.types.JvmOperation;
import org.eclipse.xtext.common.types.JvmTypeReference;
import org.eclipse.xtext.common.types.JvmVisibility;
import org.eclipse.xtext.common.types.util.TypeReferences;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.xbase.compiler.output.ITreeAppendable;
import org.eclipse.xtext.xbase.jvmmodel.AbstractModelInferrer;
import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor;
import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
import org.eclipse.xtext.xbase.lib.Pair;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.eclipse.xtext.xbase.lib.StringExtensions;
import org.junit.Test;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.osgi.service.component.annotations.ReferencePolicy;
import org.slf4j.Logger;
/**
* <p>Infers a JVM model from the source model.</p>
*
* <p>The JVM model should contain all elements that would appear in the Java code
* which is generated from the source model. Other models link against the JVM model rather than the source model.</p>
*/
@SuppressWarnings("all")
public class DatamartDSLJvmModelInferrer extends AbstractModelInferrer {
/**
* convenience API to build and initialize JVM types and their members.
*/
@Inject
@Extension
private JvmTypesBuilder _jvmTypesBuilder;
@Inject
@Extension
private IQualifiedNameProvider _iQualifiedNameProvider;
@Inject
@Extension
private NamingExtensions _namingExtensions;
@Inject
@Extension
private TypeReferences _typeReferences;
@Inject
@Extension
private AnnotationExtension _annotationExtension;
@Inject
@Extension
private ModelExtensions _modelExtensions;
@Inject
@Extension
private DataType dtType;
private HashMap<String, Integer> sqlAliasCounter = CollectionLiterals.<String, Integer>newHashMap();
private HashMap<String, DatamartAttributeBase> sqlFilterMap = CollectionLiterals.<String, DatamartAttributeBase>newHashMap();
private HashMap<String, LEntity> idMap = CollectionLiterals.<String, LEntity>newHashMap();
private String datamartDtoMapper = ((String) null);
private boolean ignoreEntityGrouping = false;
private boolean sqlHasAggregate = false;
private boolean sqlHasOrder = false;
public static String pckgName = null;
private String binderClassName = "";
private int defaultColumnWeight = 500;
public void generatePckgName(final DatamartPackage pckg, final IJvmDeclaredTypeAcceptor acceptor) {
DatamartDSLJvmModelInferrer.pckgName = pckg.getName();
}
/**
* <p>infer method dispatches the neccessary routines to build fields, setter, getter, constructors and methods of the generated code.</p>
*/
protected void _infer(final DatamartPackage datamart, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
this.generatePckgName(datamart, acceptor);
JvmGenericType cls = this._jvmTypesBuilder.toClass(datamart, datamart.getName().toString().concat("TestClass"));
cls.setSimpleName(StringExtensions.toFirstUpper(cls.getSimpleName()));
final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
it.setPackageName(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).toString());
this.toTestCalls(it, datamart);
this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(datamart));
};
acceptor.<JvmGenericType>accept(cls, _function);
String _string = this._iQualifiedNameProvider.getFullyQualifiedName(datamart).toString();
String _plus = (_string + ".");
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus_1 = (_plus + _firstUpper);
String _plus_2 = (_plus_1 + "ServiceBinder");
this.binderClassName = _plus_2;
cls = this._jvmTypesBuilder.toClass(datamart, datamart.getName().toString().concat("ServiceBinder"));
cls.setSimpleName(StringExtensions.toFirstUpper(cls.getSimpleName()));
final Procedure1<JvmGenericType> _function_1 = (JvmGenericType it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
EList<JvmAnnotationReference> _annotations_1 = it.getAnnotations();
JvmAnnotationReference _annotationRef_1 = this._annotationTypesBuilder.annotationRef(Component.class);
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations_1, _annotationRef_1);
it.setPackageName(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).toString());
this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(datamart));
this.toBinderFields(it, datamart);
this.toBinderOperations(it, datamart);
};
acceptor.<JvmGenericType>accept(cls, _function_1);
EList<DatamartDefinition> _definitions = datamart.getDefinitions();
for (final DatamartDefinition definition : _definitions) {
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(definition);
String _plus_3 = (_fullyQualifiedName + IDataMart.DATAMART_CLASS_POSTFIX);
final Procedure1<JvmGenericType> _function_2 = (JvmGenericType it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(SuppressWarnings.class, "serial");
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
it.setPackageName(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).toString());
DatamartSource _source = definition.getSource();
if ((_source instanceof DatamartEntity)) {
EList<JvmTypeReference> _superTypes = it.getSuperTypes();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(AEntityDatamart.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _typeRef);
}
DatamartSource _source_1 = definition.getSource();
if ((_source_1 instanceof DatamartCube)) {
EList<JvmTypeReference> _superTypes_1 = it.getSuperTypes();
JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(ACubeDatamart.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_1, _typeRef_1);
}
DatamartSource _source_2 = definition.getSource();
if ((_source_2 instanceof DatamartTask)) {
EList<JvmTypeReference> _superTypes_2 = it.getSuperTypes();
JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(ATaskDatamart.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes_2, _typeRef_2);
}
this.toFields(it, definition);
this.toGetterSetter(it, definition);
this.toOperations(it, definition, datamart);
};
acceptor.<JvmGenericType>accept(this._jvmTypesBuilder.toClass(definition, _plus_3), _function_2);
}
}
public void toTestCalls(final JvmGenericType type, final DatamartPackage datamart) {
JvmOperation operation = null;
EList<DatamartDefinition> _definitions = datamart.getDefinitions();
for (final DatamartDefinition definition : _definitions) {
{
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Test.class);
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _allTestcalls = this.getAllTestcalls(definition);
_builder.append(_allTestcalls);
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
operation = this._jvmTypesBuilder.toMethod(definition, "test".concat(definition.getName()), this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
}
}
}
public String getAllTestcalls(final DatamartDefinition definition) {
String body = "";
StringConcatenation _builder = new StringConcatenation();
_builder.append(body);
_builder.newLineIfNotEmpty();
String _name = definition.getName();
_builder.append(_name);
_builder.append("Datamart ");
String _firstLower = StringExtensions.toFirstLower(definition.getName());
_builder.append(_firstLower);
_builder.append("Datamart = new ");
String _name_1 = definition.getName();
_builder.append(_name_1);
_builder.append("Datamart();");
_builder.newLineIfNotEmpty();
String _firstLower_1 = StringExtensions.toFirstLower(definition.getName());
_builder.append(_firstLower_1);
_builder.append("Datamart.setUser(new User(\"");
_builder.append(IUserAccessService.ADMINISTRATOR);
_builder.append("\"));");
_builder.newLineIfNotEmpty();
_builder.append(body);
String _firstLower_2 = StringExtensions.toFirstLower(definition.getName());
_builder.append(_firstLower_2);
_builder.append("Datamart.Test");
String _name_2 = definition.getName();
_builder.append(_name_2);
_builder.append("();");
_builder.newLineIfNotEmpty();
body = _builder.toString();
return body;
}
public void toBinderFields(final JvmDeclaredType type, final DatamartPackage datamart) {
JvmField field = null;
final Procedure1<JvmField> _function = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("org.slf4j.LoggerFactory.getLogger(\"servicebinder\")");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_1);
};
field = this._jvmTypesBuilder.toField(datamart, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function);
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
field = this._jvmTypesBuilder.toField(datamart, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
field = this._jvmTypesBuilder.toField(datamart, "bpmEngine", this._typeReferenceBuilder.typeRef(IBPMEngine.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
field = this._jvmTypesBuilder.toField(datamart, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
field = this._jvmTypesBuilder.toField(datamart, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
field = this._jvmTypesBuilder.toField(datamart, "taskClient", this._typeReferenceBuilder.typeRef(IBPMTaskClient.class));
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_5 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
}
public void toBinderOperations(final JvmDeclaredType type, final DatamartPackage datamart) {
EList<JvmMember> _members = type.getMembers();
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return persistenceService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(datamart, "getPersistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class), _function);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
EList<JvmMember> _members_1 = type.getMembers();
final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return bpmEngine;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(datamart, "getBpmEngine", this._typeReferenceBuilder.typeRef(IBPMEngine.class), _function_1);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
EList<JvmMember> _members_2 = type.getMembers();
final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return userAccessService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_3);
};
JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(datamart, "getUserAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class), _function_2);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
EList<JvmMember> _members_3 = type.getMembers();
final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return dslMetadataService;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_4);
};
JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(datamart, "getDSLMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class), _function_3);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
EList<JvmMember> _members_4 = type.getMembers();
final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setStatic(true);
final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return taskClient;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_5);
};
JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(datamart, "getTaskClient", this._typeReferenceBuilder.typeRef(IBPMTaskClient.class), _function_4);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
EList<JvmMember> _members_5 = type.getMembers();
final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".persistenceService = persistenceService;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart PersistenceService bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_6);
};
JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(datamart, "bindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_5);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
EList<JvmMember> _members_6 = type.getMembers();
final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "persistenceService", this._typeReferenceBuilder.typeRef(IPersistenceService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".persistenceService = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart PersistenceService unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_7);
};
JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(datamart, "unbindPersistenceMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_6);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
EList<JvmMember> _members_7 = type.getMembers();
final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.OPTIONAL);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.DYNAMIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "bpmEngine", this._typeReferenceBuilder.typeRef(IBPMEngine.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".bpmEngine = bpmEngine;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart BPMEngine bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_8);
};
JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(datamart, "bindBPMMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
EList<JvmMember> _members_8 = type.getMembers();
final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "bpmEngine", this._typeReferenceBuilder.typeRef(IBPMEngine.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".bpmEngine = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart BPMEngine unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_9);
};
JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(datamart, "unbindBPMMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
EList<JvmMember> _members_9 = type.getMembers();
final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".userAccessService = userAccessService;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart UserAccessService bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_10);
};
JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(datamart, "bindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
EList<JvmMember> _members_10 = type.getMembers();
final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "userAccessService", this._typeReferenceBuilder.typeRef(IUserAccessService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".userAccessService = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart UserAccessService unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_11);
};
JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(datamart, "unbindUserAccessMethod", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
EList<JvmMember> _members_11 = type.getMembers();
final Procedure1<JvmOperation> _function_11 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.MANDATORY);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.STATIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_12 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".dslMetadataService = dslMetadataService;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart DSLMetadataService bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_12);
};
JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(datamart, "bindDSLMetadataService", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_11);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, _method_11);
EList<JvmMember> _members_12 = type.getMembers();
final Procedure1<JvmOperation> _function_12 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_13 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".dslMetadataService = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart DSLMetadataService unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_13);
};
JvmOperation _method_12 = this._jvmTypesBuilder.toMethod(datamart, "unbindDSLMetadataService", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_12);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_12, _method_12);
EList<JvmMember> _members_13 = type.getMembers();
final Procedure1<JvmOperation> _function_13 = (JvmOperation it) -> {
JvmAnnotationReference annotationRef = this._annotationTypesBuilder.annotationRef(Reference.class);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "cardinality", ReferenceCardinality.OPTIONAL);
this._annotationExtension.addAnnAttr(annotationRef, datamart, "policy", ReferencePolicy.DYNAMIC);
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, annotationRef);
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "taskClient", this._typeReferenceBuilder.typeRef(IBPMTaskClient.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_14 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".taskClient = taskClient;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart BPMTaskClient bound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_14);
};
JvmOperation _method_13 = this._jvmTypesBuilder.toMethod(datamart, "bindTaskClient", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_13);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_13, _method_13);
EList<JvmMember> _members_14 = type.getMembers();
final Procedure1<JvmOperation> _function_14 = (JvmOperation it) -> {
it.setVisibility(JvmVisibility.PUBLIC);
it.setSynchronized(true);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(datamart, "taskClient", this._typeReferenceBuilder.typeRef(IBPMTaskClient.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_15 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus);
_builder.append(".taskClient = null;");
_builder.newLineIfNotEmpty();
_builder.append("log.debug(\"Datamart BPMTaskClient unbound\");");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_15);
};
JvmOperation _method_14 = this._jvmTypesBuilder.toMethod(datamart, "unbindTaskClient", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_14);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_14, _method_14);
}
/**
* <p>build the class variables for each datamart definition.</p>
*/
public void toFields(final JvmDeclaredType type, final DatamartDefinition definition) {
final HashMap<String, LAttribute> typesMap = CollectionLiterals.<String, LAttribute>newHashMap();
final HashMap<String, LEntity> entityMap = CollectionLiterals.<String, LEntity>newHashMap();
JvmField field = null;
final Procedure1<JvmField> _function = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("org.slf4j.LoggerFactory.getLogger(\"datamarts\")");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_1);
};
field = this._jvmTypesBuilder.toField(definition, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function);
field.setStatic(true);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
field = this._jvmTypesBuilder.toField(definition, "user", this._typeReferenceBuilder.typeRef(IUser.class));
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
DatamartSource _source = definition.getSource();
if ((_source instanceof DatamartCube)) {
final Procedure1<JvmField> _function_1 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("\"");
String _createMDXStatement = this.createMDXStatement(definition);
_builder.append(_createMDXStatement);
_builder.append("\"");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_2);
};
field = this._jvmTypesBuilder.toField(definition, "statement", this._typeReferenceBuilder.typeRef(String.class), _function_1);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
final Procedure1<JvmField> _function_2 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("null");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_3);
};
field = this._jvmTypesBuilder.toField(definition, "connection", this._typeReferenceBuilder.typeRef(RolapConnection.class), _function_2);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
final Procedure1<JvmField> _function_3 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new DatamartDtoMapper()");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_4);
};
field = this._jvmTypesBuilder.toField(definition, "datamartDtoMapper", this._typeReferenceBuilder.typeRef(DatamartDtoMapper.class), _function_3);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
}
DatamartSource _source_1 = definition.getSource();
if ((_source_1 instanceof DatamartEntity)) {
final Procedure1<JvmField> _function_4 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<String, Map<String, String>>()");
DatamartSource _source_2 = definition.getSource();
String _createFilterAttributeProperties = this.createFilterAttributeProperties(((DatamartEntity) _source_2));
_builder.append(_createFilterAttributeProperties);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_5);
};
field = this._jvmTypesBuilder.toField(definition, "dateFilterAttributeProperties",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(String.class))), _function_4);
field.setVisibility(JvmVisibility.PRIVATE);
EList<JvmMember> _members_5 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
final Procedure1<JvmField> _function_5 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("\"");
DatamartSource _source_2 = definition.getSource();
String _createSQLStatements = this.createSQLStatements(definition, ((DatamartEntity) _source_2), typesMap, entityMap);
_builder.append(_createSQLStatements);
_builder.append("\"");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_6);
};
field = this._jvmTypesBuilder.toField(definition, "statement",
this._typeReferenceBuilder.typeRef(String.class), _function_5);
EList<JvmMember> _members_6 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_6, field);
final Procedure1<JvmField> _function_6 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append(this.datamartDtoMapper);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_7);
};
field = this._jvmTypesBuilder.toField(definition, "datamartDtoMapper", this._typeReferenceBuilder.typeRef(DatamartDtoMapper.class), _function_6);
EList<JvmMember> _members_7 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_7, field);
final Procedure1<JvmField> _function_7 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("null");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_8);
};
field = this._jvmTypesBuilder.toField(definition, "connection", this._typeReferenceBuilder.typeRef(Connection.class), _function_7);
EList<JvmMember> _members_8 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_8, field);
final Procedure1<JvmField> _function_8 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<Integer,ArrayList<String>>() ");
String _createAxisMap = this.createAxisMap(definition, entityMap);
_builder.append(_createAxisMap);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_9);
};
field = this._jvmTypesBuilder.toField(definition, "axisMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(Integer.class),
this._typeReferenceBuilder.typeRef(ArrayList.class, this._typeReferenceBuilder.typeRef(String.class))), _function_8);
EList<JvmMember> _members_9 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_9, field);
final Procedure1<JvmField> _function_9 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<String,String>() ");
String _createAliasMap = this.createAliasMap(definition, entityMap);
_builder.append(_createAliasMap);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_10);
};
field = this._jvmTypesBuilder.toField(definition, "aliasMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(String.class)), _function_9);
EList<JvmMember> _members_10 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_10, field);
}
DatamartSource _source_2 = definition.getSource();
if ((_source_2 instanceof DatamartTask)) {
final Procedure1<JvmField> _function_10 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<Integer,ArrayList<String>>() ");
String _createAxisMap = this.createAxisMap(definition, entityMap);
_builder.append(_createAxisMap);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_11);
};
field = this._jvmTypesBuilder.toField(definition, "axisMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(Integer.class),
this._typeReferenceBuilder.typeRef(ArrayList.class, this._typeReferenceBuilder.typeRef(String.class))), _function_10);
EList<JvmMember> _members_11 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_11, field);
final Procedure1<JvmField> _function_11 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_12 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new DatamartDtoMapper()");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_12);
};
field = this._jvmTypesBuilder.toField(definition, "datamartDtoMapper", this._typeReferenceBuilder.typeRef(DatamartDtoMapper.class), _function_11);
EList<JvmMember> _members_12 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_12, field);
}
final Procedure1<JvmField> _function_12 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_13 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<String,EType>() ");
String _createIdMap = this.createIdMap(definition);
_builder.append(_createIdMap);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_13);
};
field = this._jvmTypesBuilder.toField(definition, "idMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(IDataMart.EType.class)), _function_12);
EList<JvmMember> _members_13 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_13, field);
final Procedure1<JvmField> _function_13 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_14 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new ArrayList<DatamartPrimary<?>>() ");
String _createPrimaryList = this.createPrimaryList(definition);
_builder.append(_createPrimaryList);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_14);
};
field = this._jvmTypesBuilder.toField(definition, "primaryList",
this._typeReferenceBuilder.typeRef(ArrayList.class,
this._typeReferences.getTypeForName(DatamartPrimary.class, definition, this._typeReferenceBuilder.wildcard())), _function_13);
EList<JvmMember> _members_14 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_14, field);
final Procedure1<JvmField> _function_14 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_15 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<String,EType>() ");
String _createTypesMaps = this.createTypesMaps(definition, typesMap);
_builder.append(_createTypesMaps);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_15);
};
field = this._jvmTypesBuilder.toField(definition, "typesMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(IDataMart.EType.class)), _function_14);
EList<JvmMember> _members_15 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_15, field);
final Procedure1<JvmField> _function_15 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_16 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<String, String>() ");
String _createTypesProps = this.createTypesProps(definition, typesMap);
_builder.append(_createTypesProps);
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_16);
};
field = this._jvmTypesBuilder.toField(definition, "typesProp",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(String.class)), _function_15);
EList<JvmMember> _members_16 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_16, field);
final Procedure1<JvmField> _function_16 = (JvmField it) -> {
final Procedure1<ITreeAppendable> _function_17 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("new HashMap<String,String>()");
it_1.append(_builder);
};
this._jvmTypesBuilder.setInitializer(it, _function_17);
};
field = this._jvmTypesBuilder.toField(definition, "resultAttributes",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(String.class)), _function_16);
EList<JvmMember> _members_17 = type.getMembers();
this._jvmTypesBuilder.<JvmField>operator_add(_members_17, field);
}
/**
* <p>build the getters and setters from class variables of datamart definition.</p>
*/
public void toGetterSetter(final JvmDeclaredType type, final DatamartDefinition definition) {
JvmOperation operation = null;
operation = this._jvmTypesBuilder.toGetter(definition, "idMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(IDataMart.EType.class)));
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
operation = this._jvmTypesBuilder.toGetter(definition, "primaryList",
this._typeReferenceBuilder.typeRef(List.class,
this._typeReferences.getTypeForName(DatamartPrimary.class, definition, this._typeReferenceBuilder.wildcard())));
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
if (((definition.getSource() instanceof DatamartEntity) || (definition.getSource() instanceof DatamartTask))) {
operation = this._jvmTypesBuilder.toGetter(definition, "axisMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(Integer.class),
this._typeReferenceBuilder.typeRef(ArrayList.class, this._typeReferenceBuilder.typeRef(String.class))));
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, operation);
}
DatamartSource _source = definition.getSource();
if ((_source instanceof DatamartEntity)) {
operation = this._jvmTypesBuilder.toGetter(definition, "aliasMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(String.class)));
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, operation);
}
operation = this._jvmTypesBuilder.toGetter(definition, "typesProp",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(String.class)));
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, operation);
operation = this._jvmTypesBuilder.toGetter(definition, "user", this._typeReferenceBuilder.typeRef(IUser.class));
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_5 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, operation);
operation = this._jvmTypesBuilder.toSetter(definition, "user", this._typeReferenceBuilder.typeRef(IUser.class));
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_6 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, operation);
}
/**
* <p>build the methods separately for cube, entity and task or SQL and MDX respective.</p>
*/
public void toOperations(final JvmDeclaredType type, final DatamartDefinition definition, final DatamartPackage datamart) {
JvmOperation operation = null;
final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return new ArrayList<DatamartFilter>() ");
String _createFilterMap = this.createFilterMap(definition);
_builder.append(_createFilterMap);
_builder.append(";");
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_1);
};
operation = this._jvmTypesBuilder.toMethod(definition, "initializeFilterMap",
this._typeReferenceBuilder.typeRef(ArrayList.class, this._typeReferenceBuilder.typeRef(DatamartFilter.class)), _function);
operation.setVisibility(JvmVisibility.PROTECTED);
EList<JvmMember> _members = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return \"");
String _createPrimaryFilterId = this.createPrimaryFilterId(definition);
_builder.append(_createPrimaryFilterId);
_builder.append("\";");
_builder.newLineIfNotEmpty();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_2);
};
operation = this._jvmTypesBuilder.toMethod(definition, "getPrimaryFilterId", this._typeReferenceBuilder.typeRef(String.class), _function_1);
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_1 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, operation);
final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
{
DatamartSource _source = definition.getSource();
if ((_source instanceof DatamartCube)) {
_builder.append("try {");
_builder.newLine();
_builder.append("\t");
_builder.append(this.binderClassName, "\t");
_builder.append(".getPersistenceService().clearCubeCache(");
_builder.append(this.binderClassName, "\t");
_builder.append(".getPersistenceService().getMondrianConnection(getPersistenceUnit(), \"");
DatamartSource _source_1 = definition.getSource();
EObject _eContainer = ((DatamartCube) _source_1).getCubeRef().eContainer();
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((CubePackage) _eContainer));
_builder.append(_fullyQualifiedName, "\t");
_builder.append("\"), \"");
DatamartSource _source_2 = definition.getSource();
String _name = ((DatamartCube) _source_2).getCubeRef().getName();
_builder.append(_name, "\t");
_builder.append("\");");
_builder.newLineIfNotEmpty();
_builder.append("} catch (SQLException e) {");
_builder.newLine();
_builder.append("\t");
_builder.append("log.error(\"{}\", e);");
_builder.newLine();
_builder.append("};");
_builder.newLine();
_builder.append("\t\t\t\t");
}
}
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_3);
};
operation = this._jvmTypesBuilder.toMethod(definition, "clearCache", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
EList<JvmMember> _members_2 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, operation);
final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
EList<JvmAnnotationReference> _annotations = it.getAnnotations();
JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(definition, "attributeName", this._typeReferenceBuilder.typeRef(String.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return resultAttributes.get(attributeName);");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_4);
};
operation = this._jvmTypesBuilder.toMethod(definition, "getResultAttribute", this._typeReferenceBuilder.typeRef(String.class), _function_3);
EList<JvmMember> _members_3 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, operation);
final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return typesMap;");
_builder.newLine();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_5);
};
operation = this._jvmTypesBuilder.toMethod(definition, "getTypesMap",
this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class),
this._typeReferenceBuilder.typeRef(IDataMart.EType.class)), _function_4);
operation.setVisibility(JvmVisibility.PUBLIC);
EList<JvmMember> _members_4 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, operation);
DatamartSource _source = definition.getSource();
if ((_source instanceof DatamartTask)) {
EList<JvmMember> _members_5 = type.getMembers();
final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return null;");
_builder.newLine();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_6);
};
JvmOperation _method = this._jvmTypesBuilder.toMethod(definition, "getPersistenceUnit", this._typeReferenceBuilder.typeRef(String.class), _function_5);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method);
EList<JvmMember> _members_6 = type.getMembers();
final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("return null;");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_7);
};
JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(definition, "connect", this._typeReferenceBuilder.typeRef(Connection.class), _function_6);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_1);
EList<JvmMember> _members_7 = type.getMembers();
final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_8);
};
JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(definition, "disconnect", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_2);
final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("for (DatamartFilter filter : getFilters()) {");
_builder.newLine();
_builder.append("\t");
_builder.append("filter.clearData();");
_builder.newLine();
_builder.append("\t");
_builder.append("if (filter.getName().equals(\"Groups\")) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("for(String grp : ");
_builder.append(this.binderClassName, "\t\t");
_builder.append(".getBpmEngine().getGroups()) {");
_builder.newLineIfNotEmpty();
_builder.append("\t\t\t");
_builder.append("filter.addItem(grp, true);");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("if (filter.getName().equals(\"Users\")) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("for(String usr : ");
_builder.append(this.binderClassName, "\t\t");
_builder.append(".getBpmEngine().getUsers()) {");
_builder.newLineIfNotEmpty();
_builder.append("\t\t\t");
_builder.append("filter.addItem(usr, true);");
_builder.newLine();
_builder.append("\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_9);
};
operation = this._jvmTypesBuilder.toMethod(definition, "renderFilters", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
EList<JvmMember> _members_8 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, operation);
EList<JvmMember> _members_9 = type.getMembers();
final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("if(user != null) {");
_builder.newLine();
_builder.append("\t");
_builder.append("List<BPMTaskSummary> tasks = ");
String _firstUpper = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus = (_firstUpper + "ServiceBinder");
_builder.append(_plus, "\t");
_builder.append(".getTaskClient().getUserTaskList(user, false);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("if (tasks == null || tasks.size() == 0) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("tasks = ");
String _firstUpper_1 = StringExtensions.toFirstUpper(this._iQualifiedNameProvider.getFullyQualifiedName(datamart).getLastSegment());
String _plus_1 = (_firstUpper_1 + "ServiceBinder");
_builder.append(_plus_1, "\t\t");
_builder.append(".getTaskClient().getUserTaskList(user, true);");
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("return (new DerivedCellSet(new SqlCellSet(tasks, getAxisMap()), null,");
_builder.newLine();
_builder.append("\t\t");
_builder.append(this.binderClassName, "\t\t");
_builder.append(".getDSLMetadataService(),");
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("user));");
_builder.newLine();
_builder.append("}");
_builder.newLine();
_builder.append("return null;");
_builder.newLine();
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_10);
};
JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(definition, "getResults", this._typeReferenceBuilder.typeRef(DerivedCellSet.class), _function_9);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_3);
EList<JvmMember> _members_10 = type.getMembers();
final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(definition, "client", this._typeReferenceBuilder.typeRef(IBPMTaskClient.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(definition, "taskId", this._typeReferenceBuilder.typeRef(Long.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
StringConcatenation _builder = new StringConcatenation();
_builder.append("List<BPMTaskSummary> myTasks = new ArrayList<>(); ");
_builder.newLine();
_builder.append("myTasks.add(client.getUserTask(taskId, user));");
_builder.newLine();
_builder.append("return (new DerivedCellSet(new SqlCellSet(myTasks, getAxisMap()), null,");
_builder.newLine();
_builder.append("\t");
_builder.append(this.binderClassName, "\t");
_builder.append(".getDSLMetadataService(), user));");
it_1.append(_builder);
};
this._jvmTypesBuilder.setBody(it, _function_11);
};
JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(definition, "getResultsByTaskId", this._typeReferenceBuilder.typeRef(DerivedCellSet.class), _function_10);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_4);
StringConcatenation _builder = new StringConcatenation();
_builder.append("Test");
String _name = definition.getName();
_builder.append(_name);
final Procedure1<JvmOperation> _function_11 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_12 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("renderFilters();");
_builder_1.newLine();
_builder_1.append("org.junit.Assert.assertNotNull(getResults());");
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_12);
};
operation = this._jvmTypesBuilder.toMethod(definition, _builder.toString(), this._typeReferenceBuilder.typeRef(String.class), _function_11);
operation.setReturnType(this._typeReferenceBuilder.typeRef(Void.TYPE));
JvmAnnotationReference annRef = this._annotationTypesBuilder.annotationRef(Test.class);
operation.getAnnotations().add(annRef);
EList<JvmMember> _members_11 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_11, operation);
}
DatamartSource _source_1 = definition.getSource();
if ((_source_1 instanceof DatamartCube)) {
DatamartSource _source_2 = definition.getSource();
CubeTypeEntity _cubeTypeEntity = ((DatamartCube) _source_2).getCubeRef().getCubeTypeEntity();
boolean _tripleNotEquals = (_cubeTypeEntity != null);
if (_tripleNotEquals) {
DatamartSource _source_3 = definition.getSource();
final LEntity entity = ((DatamartCube) _source_3).getCubeRef().getCubeTypeEntity().getEntityRef().getEntityValue();
EList<JvmMember> _members_12 = type.getMembers();
final Procedure1<JvmOperation> _function_12 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_13 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("return \"");
String _persistenceUnit = ((LEntity) entity).getPersistenceUnit();
_builder_1.append(_persistenceUnit);
_builder_1.append("\";");
_builder_1.newLineIfNotEmpty();
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_13);
};
JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(definition, "getPersistenceUnit", this._typeReferenceBuilder.typeRef(String.class), _function_12);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_12, _method_5);
EList<JvmMember> _members_13 = type.getMembers();
final Procedure1<JvmOperation> _function_13 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_14 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("if (connection == null) { \t\t\t");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("try {");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("connection = ");
_builder_1.append(this.binderClassName, "\t\t");
_builder_1.append(".getPersistenceService().getMondrianConnection(getPersistenceUnit(), \"");
DatamartSource _source_4 = definition.getSource();
EObject _eContainer = ((DatamartCube) _source_4).getCubeRef().eContainer();
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((CubePackage) _eContainer));
_builder_1.append(_fullyQualifiedName, "\t\t");
_builder_1.append("\");");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t\t");
_builder_1.append(this.binderClassName, "\t\t");
_builder_1.append(".getPersistenceService().registerPersistenceUnit(getPersistenceUnit(), ");
QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(((LEntity) entity));
_builder_1.append(_fullyQualifiedName_1, "\t\t");
_builder_1.append(".class);");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t");
_builder_1.append("} catch (SQLException e) {");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("log.error(\"{}\", e);");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("return (connection);");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("return (connection);");
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_14);
};
JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(definition, "connect", this._typeReferenceBuilder.typeRef(RolapConnection.class), _function_13);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_13, _method_6);
EList<JvmMember> _members_14 = type.getMembers();
final Procedure1<JvmOperation> _function_14 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_15 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("if (connection != null) {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("connection.close();");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("connection = null;");
_builder_1.newLine();
_builder_1.append("}");
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_15);
};
JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(definition, "disconnect", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_14);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_14, _method_7);
final Procedure1<JvmOperation> _function_15 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_16 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("connect();");
_builder_1.newLine();
_builder_1.append("if (connection != null) {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("for (DatamartFilter filter : getFilters()) {");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("filter.clearData();");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("DerivedCellSet cellSet = new DerivedCellSet(");
_builder_1.append(this.binderClassName, "\t\t");
_builder_1.append(".getPersistenceService().sendQuery(connection,getVendorSql(filter)),");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t\t\t");
_builder_1.append(this.binderClassName, "\t\t\t");
_builder_1.append(".getDSLMetadataService(),");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t\t\t");
_builder_1.append("user);");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("List<DerivedAxis> axes = cellSet.getAxes();");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("DerivedAxis columnsAxis = axes.get(Axis.COLUMNS.ordinal());");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("for (DerivedPosition position : columnsAxis.getPositions()) {");
_builder_1.newLine();
_builder_1.append("\t\t\t");
_builder_1.append("DerivedMember measure = position.getMembers().get(0);");
_builder_1.newLine();
_builder_1.append("\t\t\t");
_builder_1.append("filter.addOlapItem(measure.getHierarchy().getName(), measure.getUniqueName());");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("disconnect();");
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_16);
};
operation = this._jvmTypesBuilder.toMethod(definition, "renderFilters", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_15);
EList<JvmMember> _members_15 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_15, operation);
final Procedure1<JvmOperation> _function_16 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_17 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("String filteredStatement = statement;");
_builder_1.newLine();
_builder_1.append("computeConditions();");
_builder_1.newLine();
_builder_1.append("for (DatamartFilter filter : getFilters()) {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("if(filter.getCondition() != null) {");
_builder_1.newLine();
_builder_1.append("\t\t");
_builder_1.append("filteredStatement = filteredStatement.replace(filter.getDecoratedName(), filter.getCondition().replace(\"\'\",\"\"));");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("filteredStatement = filteredStatement.replace(\"<empty>,\",\"\").replace(\",<empty>\",\"\").replace(\"<empty>\",\"\");");
_builder_1.newLine();
_builder_1.append("log.debug(\"");
String _name_1 = definition.getName();
_builder_1.append(_name_1);
_builder_1.append(":\"+filteredStatement);");
_builder_1.newLineIfNotEmpty();
_builder_1.append("return filteredStatement;");
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_17);
};
operation = this._jvmTypesBuilder.toMethod(definition, "applyFilters", this._typeReferenceBuilder.typeRef(String.class), _function_16);
EList<JvmMember> _members_16 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_16, operation);
EList<JvmMember> _members_17 = type.getMembers();
final Procedure1<JvmOperation> _function_17 = (JvmOperation it) -> {
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(definition, "operativeDtoClass", this._typeReferenceBuilder.typeRef(Class.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(definition, "operativeDtos",
this._typeReferenceBuilder.typeRef(List.class, this._typeReferenceBuilder.typeRef(IDto.class)));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
final Procedure1<ITreeAppendable> _function_18 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("DerivedCellSet derivedCellSet = null;");
_builder_1.newLine();
_builder_1.append("connect();");
_builder_1.newLine();
_builder_1.append("if (connection != null) {");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append("derivedCellSet = new DerivedCellSet(");
_builder_1.append(this.binderClassName, "\t");
_builder_1.append(".getPersistenceService().sendQuery(connection, applyFilters()),");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t\t\t");
_builder_1.append(this.binderClassName, "\t\t\t");
_builder_1.append(".getDSLMetadataService(),");
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t\t\t");
_builder_1.append("user);");
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.append("disconnect();");
_builder_1.newLine();
_builder_1.append("return derivedCellSet;");
it_1.append(_builder_1);
};
this._jvmTypesBuilder.setBody(it, _function_18);
};
JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(definition, "getResults", this._typeReferenceBuilder.typeRef(DerivedCellSet.class), _function_17);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_17, _method_8);
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("Test");
String _name_1 = definition.getName();
_builder_1.append(_name_1);
final Procedure1<JvmOperation> _function_18 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_19 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("renderFilters();");
_builder_2.newLine();
_builder_2.append("org.junit.Assert.assertNotNull(getResults(null, null));");
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_19);
};
operation = this._jvmTypesBuilder.toMethod(definition, _builder_1.toString(), this._typeReferenceBuilder.typeRef(String.class), _function_18);
operation.setReturnType(this._typeReferenceBuilder.typeRef(Void.TYPE));
JvmAnnotationReference annRef_1 = this._annotationTypesBuilder.annotationRef(Test.class);
operation.getAnnotations().add(annRef_1);
EList<JvmMember> _members_18 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_18, operation);
}
}
DatamartSource _source_4 = definition.getSource();
if ((_source_4 instanceof DatamartEntity)) {
EList<JvmMember> _members_19 = type.getMembers();
final Procedure1<JvmOperation> _function_19 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_20 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("return \"");
DatamartSource _source_5 = definition.getSource();
LEntity _entityRef = null;
if (((DatamartEntity) _source_5)!=null) {
_entityRef=((DatamartEntity) _source_5).getEntityRef();
}
String _persistenceUnit = null;
if (_entityRef!=null) {
_persistenceUnit=_entityRef.getPersistenceUnit();
}
_builder_2.append(_persistenceUnit);
_builder_2.append("\";");
_builder_2.newLineIfNotEmpty();
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_20);
};
JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(definition, "getPersistenceUnit", this._typeReferenceBuilder.typeRef(String.class), _function_19);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_19, _method_9);
EList<JvmMember> _members_20 = type.getMembers();
final Procedure1<JvmOperation> _function_20 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_21 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("if (connection == null) { \t\t\t");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("connection = ");
_builder_2.append(this.binderClassName, "\t\t");
_builder_2.append(".getPersistenceService().getPersistenceUnitConnection(getPersistenceUnit());");
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t\t");
_builder_2.append(this.binderClassName, "\t\t");
_builder_2.append(".getPersistenceService().registerPersistenceUnit(getPersistenceUnit(), ");
DatamartSource _source_5 = definition.getSource();
LEntity _entityRef = null;
if (((DatamartEntity) _source_5)!=null) {
_entityRef=((DatamartEntity) _source_5).getEntityRef();
}
QualifiedName _fullyQualifiedName = null;
if (_entityRef!=null) {
_fullyQualifiedName=this._iQualifiedNameProvider.getFullyQualifiedName(_entityRef);
}
_builder_2.append(_fullyQualifiedName, "\t\t");
_builder_2.append(".class);");
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t");
_builder_2.append("} catch (SQLException e) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("log.error(\"{}\", e);");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("return (connection);");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("return (connection);");
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_21);
};
JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(definition, "connect", this._typeReferenceBuilder.typeRef(Connection.class), _function_20);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_20, _method_10);
EList<JvmMember> _members_21 = type.getMembers();
final Procedure1<JvmOperation> _function_21 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_22 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("if (connection != null) { \t\t\t");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("connection.close();");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("connection = null;");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("} catch (SQLException e) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("log.error(\"{}\", e);");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("}");
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_22);
};
JvmOperation _method_11 = this._jvmTypesBuilder.toMethod(definition, "disconnect", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_21);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_21, _method_11);
EList<JvmMember> _members_22 = type.getMembers();
final Procedure1<JvmOperation> _function_22 = (JvmOperation it) -> {
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(definition, "filteredStatement", this._typeReferenceBuilder.typeRef(String.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(definition, "condition", this._typeReferenceBuilder.typeRef(String.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
final Procedure1<ITreeAppendable> _function_23 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("int index = filteredStatement.indexOf(\"order by\");");
_builder_2.newLine();
_builder_2.append("if(index > -1) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("return filteredStatement.substring(0, index-1) + condition + filteredStatement.substring(index-1); ");
_builder_2.newLine();
_builder_2.append("} else {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("return filteredStatement + condition;");
_builder_2.newLine();
_builder_2.append("}");
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_23);
};
JvmOperation _method_12 = this._jvmTypesBuilder.toMethod(definition, "insertCondition", this._typeReferenceBuilder.typeRef(String.class), _function_22);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_22, _method_12);
final Procedure1<JvmOperation> _function_23 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_24 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("connect();");
_builder_2.newLine();
_builder_2.append("if (connection != null) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("for (DatamartFilter filter : getFilters()) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("if((DatamartFilter.FilterType.BY_ID != filter.getType()) && (DatamartFilter.FilterType.BETWEEN != filter.getType()) && (DatamartFilter.FilterType.BETWEEN_DATE != filter.getType())) {");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("ResultSet rs = null;");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("rs = connection.createStatement().executeQuery(getVendorSql(filter));");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("if (rs != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("while (rs.next()) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t");
_builder_2.append("int type = rs.getMetaData().getColumnType(1);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t");
_builder_2.append("switch (type) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.DATE:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t ");
_builder_2.append("Date date = rs.getDate(1);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t ");
_builder_2.append("if (date != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t");
_builder_2.append("if (user == null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t\t");
_builder_2.append("filter.addItem(date.toString(), getVendorToDateSQLMethod()+\"(\'\"+date.toString().replace(\".0\",\"\")+\"\',\'YYYY-MM-DD HH24:MI:SS\')\", false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t");
_builder_2.append("} else {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t\t");
_builder_2.append("filter.addItem(SimpleDateFormatter.getFormat(\"LONGDATE\", user.getLocale()).format(date), getVendorToDateSQLMethod()+\"(\'\"+date.toString().replace(\".0\",\"\")+\"\',\'YYYY-MM-DD HH24:MI:SS\')\", false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.TIMESTAMP:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("Timestamp timestamp = rs.getTimestamp(1);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("if (timestamp != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t");
_builder_2.append("if (user == null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t\t");
_builder_2.append("filter.addItem(timestamp.toString(), getVendorToTimestampSQLMethod()+\"(\'\"+timestamp.toString().replace(\".0\",\"\")+\"\',\'YYYY-MM-DD HH24:MI:SS\')\", false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t");
_builder_2.append("} else {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t\t");
_builder_2.append("filter.addItem(SimpleDateFormatter.getFormat(\"LONGDATE\", user.getLocale()).format(timestamp), getVendorToTimestampSQLMethod()+\"(\'\"+timestamp.toString().replace(\".0\",\"\")+\"\',\'YYYY-MM-DD HH24:MI:SS\')\", false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.DECIMAL:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("BigDecimal bigDecimal = rs.getBigDecimal(1);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("if (bigDecimal != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t\t");
_builder_2.append("filter.addItem(bigDecimal.toPlainString(), bigDecimal.toPlainString(), false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.NUMERIC:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.DOUBLE:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("filter.addItem(Double.toString(rs.getDouble(1)), Double.toString(rs.getDouble(1)), false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.INTEGER:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.BIGINT:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("filter.addItem(Integer.toString(rs.getInt(1)), Integer.toString(rs.getInt(1)), false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.FLOAT:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("filter.addItem(Float.toString(rs.getFloat(1)), Float.toString(rs.getFloat(1)), false);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.CHAR:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.NCHAR:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.NVARCHAR:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t \t\t\t");
_builder_2.append("case java.sql.Types.VARCHAR:");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t\t\t");
_builder_2.append("case java.sql.Types.LONGVARCHAR: ");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t\t\t\t\t\t");
_builder_2.append("filter.addItem(rs.getString(1), rs.getString(1), true);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t\t\t\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("} catch (SQLException e) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("log.error(\"{}\", e);");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("} finally {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("rs.close();");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("} catch (java.sql.SQLException e) {}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("disconnect();");
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_24);
};
operation = this._jvmTypesBuilder.toMethod(definition, "renderFilters", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_23);
EList<JvmMember> _members_23 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_23, operation);
final Procedure1<JvmOperation> _function_24 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_25 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("String filteredStatement = statement;");
_builder_2.newLine();
_builder_2.append("computeConditions();");
_builder_2.newLine();
_builder_2.append("for (DatamartFilter filter : getFilters()) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("if (DatamartFilter.FilterType.BY_ID == filter.getType()) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("if(filter.getCondition() != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("if\t(!filteredStatement.toLowerCase().contains(\" where \")) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("if\t((\" \"+filter.getCondition()).toLowerCase().contains(\"where \")) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("filteredStatement = insertCondition(filteredStatement, \" \"+filter.getCondition());");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("else {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("filteredStatement = insertCondition(filteredStatement, \" where \"+filter.getCondition());");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("else {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("if\t(filter.getCondition().trim().toLowerCase().startsWith(\"and \") ||");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t ");
_builder_2.append("filter.getCondition().trim().toLowerCase().startsWith(\"or \") ) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("filteredStatement = insertCondition(filteredStatement, filter.getCondition());");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("else {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("filteredStatement = insertCondition(filteredStatement, \" and \"+filter.getCondition());");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("else {");
_builder_2.newLine();
_builder_2.append("\t \t");
_builder_2.append("filteredStatement = filteredStatement.replace(filter.getDecoratedName(), filter.getCondition());");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("log.debug(\"");
String _name_2 = definition.getName();
_builder_2.append(_name_2);
_builder_2.append(":\"+filteredStatement);");
_builder_2.newLineIfNotEmpty();
_builder_2.append("return filteredStatement;");
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_25);
};
operation = this._jvmTypesBuilder.toMethod(definition, "applyFilters", this._typeReferenceBuilder.typeRef(String.class), _function_24);
EList<JvmMember> _members_24 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_24, operation);
EList<JvmMember> _members_25 = type.getMembers();
final Procedure1<JvmOperation> _function_25 = (JvmOperation it) -> {
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(definition, "operativeDtoClass", this._typeReferenceBuilder.typeRef(Class.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(definition, "operativeDtos",
this._typeReferenceBuilder.typeRef(List.class, this._typeReferenceBuilder.typeRef(IDto.class)));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
final Procedure1<ITreeAppendable> _function_26 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("ResultSet rs = null;");
_builder_2.newLine();
_builder_2.append("SqlCellSet cellSet = null;");
_builder_2.newLine();
_builder_2.append("java.sql.ResultSetMetaData metaData = null;");
_builder_2.newLine();
_builder_2.append("// --- if filler text is enabled ---");
_builder_2.newLine();
_builder_2.append("if\t(fFillerTextEnabled) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("// --- try to generate filler text ---");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("rs = generateFillerTextResultSet();");
_builder_2.newLine();
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("// --- if no result set is generated by now ---");
_builder_2.newLine();
_builder_2.append("connect();");
_builder_2.newLine();
_builder_2.append("if (rs == null) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("if (connection != null) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("String query = applyFilters();");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("if (query.length()>0) {");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("rs = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY).executeQuery(query);");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("} catch (SQLException e) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("log.error(\"Query: \"+query);");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("log.error(\"{}\", e);");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("if (rs != null) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("cellSet = new SqlCellSet(rs, getAxisMap(), getIdMap(), getAliasMap(), datamartDtoMapper, operativeDtoClass, operativeDtos, getPrimaryList(), ");
_builder_2.append(this.binderClassName, "\t\t");
_builder_2.append(".getUserAccessService());");
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t\t");
_builder_2.append("registerFirstLine(rs, user);");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("metaData = rs.getMetaData();");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("rs.close();");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("catch (java.sql.SQLException e) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("try {");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("log.error(\"Statement: \"+rs.getStatement().toString());");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("} catch (SQLException e1) {}");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("log.error(\"{}\", e);");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("return (new DerivedCellSet(cellSet,");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("metaData,");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append(this.binderClassName, "\t\t");
_builder_2.append(".getDSLMetadataService(), user));");
_builder_2.newLineIfNotEmpty();
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("disconnect();");
_builder_2.newLine();
_builder_2.append("return null;");
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_26);
};
JvmOperation _method_13 = this._jvmTypesBuilder.toMethod(definition, "getResults", this._typeReferenceBuilder.typeRef(DerivedCellSet.class), _function_25);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_25, _method_13);
EList<JvmMember> _members_26 = type.getMembers();
final Procedure1<JvmOperation> _function_26 = (JvmOperation it) -> {
EList<JvmFormalParameter> _parameters = it.getParameters();
JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(definition, "rs", this._typeReferenceBuilder.typeRef(ResultSet.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
EList<JvmFormalParameter> _parameters_1 = it.getParameters();
JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(definition, "user", this._typeReferenceBuilder.typeRef(IUser.class));
this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
EList<JvmTypeReference> _exceptions = it.getExceptions();
JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(SQLException.class);
this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
final Procedure1<ITreeAppendable> _function_27 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("if (rs != null && rs.first()) {");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("for (int column = 1; column <= rs.getMetaData().getColumnCount(); column++) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("int type = rs.getMetaData().getColumnType(column);");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("switch (type) {");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.DATE:");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("if(rs.getDate(column) != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("if (user == null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column), rs.getDate(column).toString());");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("} else {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column),");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t\t\t");
_builder_2.append("SimpleDateFormatter.getFormat(\"LONGDATE\", user.getLocale()).format(rs.getDate(column)));");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.TIMESTAMP:");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("if(rs.getTimestamp(column) != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("if (user == null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column), rs.getTimestamp(column).toString());");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("} else {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column), SimpleDateFormatter");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t\t\t");
_builder_2.append(".getFormat(\"LONGDATE\", user.getLocale()).format(rs.getTimestamp(column)));");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.DECIMAL:");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("if(rs.getBigDecimal(column) != null) {");
_builder_2.newLine();
_builder_2.append("\t\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column),");
_builder_2.newLine();
_builder_2.append("\t\t\t\t\t");
_builder_2.append("rs.getBigDecimal(column).toPlainString());");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.NUMERIC:");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.DOUBLE:");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column), Double.toString(rs.getDouble(column)));");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.FLOAT:");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column), Float.toString(rs.getFloat(column)));");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.CHAR:");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.NCHAR:");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.NVARCHAR:");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.VARCHAR:");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("case java.sql.Types.LONGVARCHAR:");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("resultAttributes.put(rs.getMetaData().getColumnName(column), rs.getString(column));");
_builder_2.newLine();
_builder_2.append("\t\t\t");
_builder_2.append("break;");
_builder_2.newLine();
_builder_2.append("\t\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("\t");
_builder_2.append("}");
_builder_2.newLine();
_builder_2.append("}");
_builder_2.newLine();
it_1.append(_builder_2);
};
this._jvmTypesBuilder.setBody(it, _function_27);
};
JvmOperation _method_14 = this._jvmTypesBuilder.toMethod(definition, "registerFirstLine", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_26);
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_26, _method_14);
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append("Test");
String _name_2 = definition.getName();
_builder_2.append(_name_2);
final Procedure1<JvmOperation> _function_27 = (JvmOperation it) -> {
final Procedure1<ITreeAppendable> _function_28 = (ITreeAppendable it_1) -> {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append("renderFilters();");
_builder_3.newLine();
_builder_3.append("org.junit.Assert.assertNotNull(getResults(null, null));");
it_1.append(_builder_3);
};
this._jvmTypesBuilder.setBody(it, _function_28);
};
operation = this._jvmTypesBuilder.toMethod(definition, _builder_2.toString(), this._typeReferenceBuilder.typeRef(String.class), _function_27);
operation.setReturnType(this._typeReferenceBuilder.typeRef(Void.TYPE));
JvmAnnotationReference annRef_2 = this._annotationTypesBuilder.annotationRef(Test.class);
operation.getAnnotations().add(annRef_2);
EList<JvmMember> _members_27 = type.getMembers();
this._jvmTypesBuilder.<JvmOperation>operator_add(_members_27, operation);
}
}
public String createFilterAttributeProperties(final DatamartEntity entity) {
String text = "";
EList<DatamartCondition> _conditions = entity.getConditions();
for (final DatamartCondition condition : _conditions) {
Expression _condition = condition.getCondition();
boolean _tripleNotEquals = (_condition != null);
if (_tripleNotEquals) {
Expression _condition_1 = condition.getCondition();
if ((_condition_1 instanceof ConditionalExpression)) {
Expression _condition_2 = condition.getCondition();
Expression element = ((ConditionalExpression) _condition_2).getRight();
Expression _condition_3 = condition.getCondition();
Expression leftConditionalExpr = ((ConditionalExpression) _condition_3).getLeft();
if ((leftConditionalExpr instanceof DatamartAttributeBase)) {
Expression _condition_4 = condition.getCondition();
Expression _left = ((ConditionalExpression) _condition_4).getLeft();
DatamartAttributeBase attribute = ((DatamartAttributeBase) _left);
boolean _isRanged = element.isRanged();
if (_isRanged) {
boolean _isDate = this._modelExtensions.getDatatype(attribute.getAttributeRef()).isDate();
if (_isDate) {
if (((attribute.getAttributeRef().getProperties() != null) &&
(!attribute.getAttributeRef().getProperties().isEmpty()))) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("{{");
_builder.newLine();
_builder.append("\t");
_builder.append("put(\"");
String _attributeName = this.getAttributeName(attribute, entity);
_builder.append(_attributeName, "\t");
_builder.append("\", new HashMap<String, String>() {{");
text = _builder.toString();
EList<LKeyAndValue> _properties = attribute.getAttributeRef().getProperties();
for (final LKeyAndValue property : _properties) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(text);
_builder_1.newLineIfNotEmpty();
_builder_1.append("\t\t");
_builder_1.append("put(\"");
String _key = property.getKey();
_builder_1.append(_key, "\t\t");
_builder_1.append("\", \"");
String _value = property.getValue();
_builder_1.append(_value, "\t\t");
_builder_1.append("\");");
text = _builder_1.toString();
}
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(text);
_builder_2.newLineIfNotEmpty();
_builder_2.append("\t");
_builder_2.append("}});");
_builder_2.newLine();
_builder_2.append("}}");
text = _builder_2.toString();
}
}
}
}
}
}
}
EList<DatamartNavigation> _navigations = entity.getNavigations();
for (final DatamartNavigation navigation : _navigations) {
{
if ((navigation instanceof DatamartMember)) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(text);
_builder_3.newLineIfNotEmpty();
String _createFilterAttributeProperties = this.createFilterAttributeProperties(((DatamartMember) navigation).getDatamartEntity());
_builder_3.append(_createFilterAttributeProperties);
text = _builder_3.toString();
}
if ((navigation instanceof DatamartOwner)) {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(text);
_builder_4.newLineIfNotEmpty();
String _createFilterAttributeProperties_1 = this.createFilterAttributeProperties(((DatamartOwner) navigation).getDatamartEntity());
_builder_4.append(_createFilterAttributeProperties_1);
text = _builder_4.toString();
}
}
}
return text;
}
/**
* <p>build the id map as lookup for primary key oriented applications.</p>
*/
public String createIdMap(final DatamartDefinition definition) {
String listTxt = "";
Set<String> _keySet = this.idMap.keySet();
for (final String idColumn : _keySet) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(listTxt);
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("put(\"");
_builder.append(idColumn, "\t\t");
_builder.append("\", EType.");
LEntityAttribute _primaryKeyAttribute = this.idMap.get(idColumn).getPrimaryKeyAttribute();
IDataMart.EType _basicType = this.dtType.getBasicType(((LEntityAttribute) _primaryKeyAttribute));
_builder.append(_basicType, "\t\t");
_builder.append(");");
listTxt = _builder.toString();
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("{{");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append(listTxt, "\t");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}}");
listTxt = _builder_1.toString();
return listTxt;
}
public String createPrimaryList(final DatamartDefinition definition) {
String listTxt = "";
Set<String> _keySet = this.idMap.keySet();
for (final String idColumn : _keySet) {
{
String typeName = "";
LScalarType _idAttributeType = this.idMap.get(idColumn).getIdAttributeType();
if ((_idAttributeType instanceof LDataType)) {
LScalarType _idAttributeType_1 = this.idMap.get(idColumn).getIdAttributeType();
JvmTypeReference _jvmTypeReference = ((LDataType) _idAttributeType_1).getJvmTypeReference();
boolean _tripleNotEquals = (_jvmTypeReference != null);
if (_tripleNotEquals) {
LScalarType _idAttributeType_2 = this.idMap.get(idColumn).getIdAttributeType();
typeName = ((LDataType) _idAttributeType_2).getJvmTypeReference().getType().getSimpleName();
} else {
LScalarType _idAttributeType_3 = this.idMap.get(idColumn).getIdAttributeType();
typeName = ((LDataType) _idAttributeType_3).getName();
}
StringConcatenation _builder = new StringConcatenation();
_builder.append(listTxt);
_builder.newLineIfNotEmpty();
_builder.append("\t\t");
_builder.append("add(new DatamartPrimary<");
_builder.append(typeName, "\t\t");
_builder.append(">(\"");
_builder.append(idColumn, "\t\t");
_builder.append("\", \"");
String _name = this.idMap.get(idColumn).getPrimaryKeyAttribute().getName();
_builder.append(_name, "\t\t");
_builder.append("\", \"");
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(this.idMap.get(idColumn));
_builder.append(_fullyQualifiedName, "\t\t");
_builder.append("\"));");
listTxt = _builder.toString();
}
}
}
StringConcatenation _builder = new StringConcatenation();
_builder.append("{{");
_builder.newLine();
_builder.append("\t");
_builder.append(listTxt, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}}");
listTxt = _builder.toString();
return listTxt;
}
public String addPrimaryFilters(final DatamartDefinition definition) {
String listTxt = "";
Set<String> _keySet = this.idMap.keySet();
for (final String idColumn : _keySet) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(listTxt);
_builder.newLineIfNotEmpty();
_builder.append("add(new DatamartFilter(");
_builder.append(this.binderClassName);
_builder.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.BY_ID, \"");
String _name = this.idMap.get(idColumn).getName();
_builder.append(_name);
_builder.append(".");
String _name_1 = this.idMap.get(idColumn).getPrimaryKeyAttribute().getName();
_builder.append(_name_1);
_builder.append("\",\"\"));");
listTxt = _builder.toString();
}
return listTxt;
}
/**
* <p>build the types map as lookup for datatypes.</p>
*/
public String createTypesMaps(final DatamartDefinition definition, final HashMap<String, LAttribute> typesMap) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("{{");
_builder.newLine();
_builder.append("\t");
String _createTypesMap = this.createTypesMap(definition, typesMap);
_builder.append(_createTypesMap, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}}");
String listTxt = _builder.toString();
return listTxt;
}
/**
* <p>build the types map as lookup for datatypes.</p>
*/
public String createTypesProps(final DatamartDefinition definition, final HashMap<String, LAttribute> typesMap) {
String listTxt = "";
Set<String> _keySet = typesMap.keySet();
for (final String attribute : _keySet) {
boolean _isEmpty = typesMap.get(attribute).getProperties().isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
String attributeName = attribute.split("\\.")[1];
StringConcatenation _builder = new StringConcatenation();
_builder.append(listTxt);
_builder.newLineIfNotEmpty();
_builder.append("put(\"");
_builder.append(attributeName);
_builder.append("\", \"");
String _value = typesMap.get(attribute).getProperties().get(0).getValue();
_builder.append(_value);
_builder.append("\");");
listTxt = _builder.toString();
}
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("{{");
_builder_1.newLine();
_builder_1.append("\t");
_builder_1.append(listTxt, "\t");
_builder_1.newLineIfNotEmpty();
_builder_1.append("}}");
listTxt = _builder_1.toString();
return listTxt;
}
/**
* <p>build the types map as lookup for datatypes according to authorization roles.</p>
*/
public String createTypesMap(final DatamartDefinition definition, final HashMap<String, LAttribute> typesMap) {
String listTxt = "";
Set<String> _keySet = typesMap.keySet();
for (final String attribute : _keySet) {
{
final IDataMart.EType type = this.dtType.getBasicType(typesMap.get(attribute));
StringConcatenation _builder = new StringConcatenation();
_builder.append(listTxt);
_builder.newLineIfNotEmpty();
_builder.append("put(\"");
_builder.append(attribute);
_builder.append("\", EType.");
String _string = type.toString();
_builder.append(_string);
_builder.append(");");
listTxt = _builder.toString();
}
}
return listTxt;
}
/**
* <p>build the axis map.</p>
*/
public String createAxisMap(final DatamartDefinition definition, final Map<String, LEntity> entityMap) {
String text = "";
HashMap<Integer, Map<String, Integer>> map = CollectionLiterals.<Integer, Map<String, Integer>>newHashMap();
DatamartSource _source = definition.getSource();
boolean _tripleNotEquals = (_source != null);
if (_tripleNotEquals) {
DatamartSource _source_1 = definition.getSource();
if ((_source_1 instanceof DatamartEntity)) {
DatamartSource _source_2 = definition.getSource();
this.createAxisMap(((DatamartEntity) _source_2), map);
}
DatamartSource _source_3 = definition.getSource();
if ((_source_3 instanceof DatamartTask)) {
DatamartSource _source_4 = definition.getSource();
this.createAxisMap(((DatamartTask) _source_4), map);
}
}
Set<Integer> _keySet = map.keySet();
for (final Integer axisNumber : _keySet) {
{
if (((definition.getSource() instanceof DatamartEntity) && ((axisNumber).intValue() == AxisEnum.COLUMNS_VALUE))) {
if ((!this.ignoreEntityGrouping)) {
Collection<LEntity> _values = entityMap.values();
for (final LEntity entityRef : _values) {
{
String idColumn = DatamartDefinitionUtil.getEntityIdAliasName(entityRef);
if ((idColumn != null)) {
map.get(axisNumber).put(idColumn, Integer.valueOf(0));
}
}
}
}
}
final Function<Map.Entry<String, Integer>, String> _function = (Map.Entry<String, Integer> it) -> {
String _key = it.getKey();
String _plus = ("add(\"" + _key);
return (_plus + "\");");
};
String listTxt = map.get(axisNumber).entrySet().stream().sorted(Map.Entry.<String, Integer>comparingByValue().reversed()).<String>map(_function).collect(Collectors.joining("\n", "{{\n", "\n}}"));
StringConcatenation _builder = new StringConcatenation();
_builder.append(text);
_builder.newLineIfNotEmpty();
_builder.append("\t");
_builder.append("put(");
_builder.append(axisNumber, "\t");
_builder.append(",new ArrayList<String>() ");
_builder.append(listTxt, "\t");
_builder.append(");");
text = _builder.toString();
}
}
StringConcatenation _builder = new StringConcatenation();
_builder.append("{{");
_builder.newLine();
_builder.append("\t");
_builder.append(text, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}}");
text = _builder.toString();
return text;
}
/**
* <p>creates an axis map for tasks.</p>
*/
public void createAxisMap(final DatamartTask task, final Map<Integer, Map<String, Integer>> map) {
this.idMap.clear();
EList<DatamartColumn> _columns = task.getColumns();
for (final DatamartColumn column : _columns) {
{
int axisNumber = 0;
String name = column.getColumnRef().getLiteral();
boolean found = false;
Set<Integer> _keySet = map.keySet();
for (final Integer axNum : _keySet) {
if (((axNum).intValue() == axisNumber)) {
map.get(axNum).put(name, Integer.valueOf(this.defaultColumnWeight));
found = true;
}
}
if ((!found)) {
HashMap<String, Integer> columns = CollectionLiterals.<String, Integer>newHashMap();
columns.put(name, Integer.valueOf(this.defaultColumnWeight));
map.put(Integer.valueOf(axisNumber), columns);
}
}
}
}
public void recursAxisMap(final LScalarType type, final DatamartAttribute attribute, final Map<Integer, Map<String, Integer>> map, final int axisNumber) {
if ((type instanceof LBean)) {
LBean bean = ((LBean) type);
List<LBeanAttribute> _allAttributes = bean.getAllAttributes();
for (final LBeanAttribute attr : _allAttributes) {
LScalarType _type = attr.getType();
if ((_type instanceof LBean)) {
this.recursAxisMap(attr.getType(), attribute, map, axisNumber);
} else {
this.addAxisAttribute(attr.getName(), Integer.valueOf(this.defaultColumnWeight), map, axisNumber);
}
}
} else {
int weight = this.defaultColumnWeight;
boolean _isHasColumnWeight = attribute.isHasColumnWeight();
if (_isHasColumnWeight) {
weight = attribute.getColumnWeight();
}
this.addAxisAttribute(DatamartAttributeUtil.getAliasedAttributeName(attribute), Integer.valueOf(weight), map, axisNumber);
}
}
public Map<String, Integer> addAxisAttribute(final String name, final Integer weight, final Map<Integer, Map<String, Integer>> map, final int axisNumber) {
Map<String, Integer> _xblockexpression = null;
{
boolean found = false;
Set<Integer> _keySet = map.keySet();
for (final Integer axNum : _keySet) {
if (((axNum).intValue() == axisNumber)) {
map.get(axNum).put(name, weight);
found = true;
}
}
Map<String, Integer> _xifexpression = null;
if ((!found)) {
Map<String, Integer> _xblockexpression_1 = null;
{
HashMap<String, Integer> columns = CollectionLiterals.<String, Integer>newHashMap();
columns.put(name, weight);
_xblockexpression_1 = map.put(Integer.valueOf(axisNumber), columns);
}
_xifexpression = _xblockexpression_1;
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
/**
* <p>recursively create an axis map for entities.</p>
*/
public void createAxisMap(final DatamartEntity entity, final Map<Integer, Map<String, Integer>> map) {
ArrayList<DatamartAttribute> entityAttributes = this.entityAttributes(entity);
for (final DatamartAttribute attribute : entityAttributes) {
{
int axisNumber = (-1);
int _value = attribute.getAxis().getName().getValue();
boolean _equals = (_value == (-1));
if (_equals) {
axisNumber = 0;
} else {
axisNumber = attribute.getAxis().getName().getValue();
}
LScalarType _type = attribute.getAttributeRef().getType();
LScalarType type = ((LScalarType) _type);
this.recursAxisMap(type, attribute, map, axisNumber);
}
}
EList<DatamartNavigation> _navigations = entity.getNavigations();
for (final DatamartNavigation navigation : _navigations) {
this.createAxisMap(navigation.getDatamartEntity(), map);
}
}
/**
* <p>build the alias map.</p>
*/
public String createAliasMap(final DatamartDefinition definition, final Map<String, LEntity> entityMap) {
HashMap<String, String> aliases = CollectionLiterals.<String, String>newHashMap();
if (((definition.getSource() != null) && (definition.getSource() instanceof DatamartEntity))) {
DatamartSource _source = definition.getSource();
this.createAliasMap(((DatamartEntity) _source), aliases);
}
StringConcatenation _builder = new StringConcatenation();
_builder.append("{{");
_builder.newLine();
_builder.append("\t");
final Function1<Map.Entry<String, String>, String> _function = (Map.Entry<String, String> it) -> {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("put(\"");
String _key = it.getKey();
_builder_1.append(_key);
_builder_1.append("\",\"");
String _value = it.getValue();
_builder_1.append(_value);
_builder_1.append("\");");
return _builder_1.toString();
};
String _join = IterableExtensions.join(IterableExtensions.<Map.Entry<String, String>, String>map(aliases.entrySet(), _function), "\n");
_builder.append(_join, "\t");
_builder.newLineIfNotEmpty();
_builder.append("}}");
String text = _builder.toString();
return text;
}
public void recursAliasMap(final LScalarType type, final DatamartAttribute attribute, final Map<String, String> map) {
if ((type instanceof LBean)) {
LBean bean = ((LBean) type);
List<LBeanAttribute> _allAttributes = bean.getAllAttributes();
for (final LBeanAttribute attr : _allAttributes) {
LScalarType _type = attr.getType();
if ((_type instanceof LBean)) {
this.recursAliasMap(attr.getType(), attribute, map);
} else {
map.put(attr.getName(), this._iQualifiedNameProvider.getFullyQualifiedName(attr).toString());
}
}
} else {
String _aliasedAttributeName = DatamartAttributeUtil.getAliasedAttributeName(attribute);
String _string = this._iQualifiedNameProvider.getFullyQualifiedName(attribute.getAttributeRef().getEntity()).toString();
String _plus = (_string + ".");
String _name = attribute.getAttributeRef().getName();
String _plus_1 = (_plus + _name);
map.put(_aliasedAttributeName, _plus_1);
}
}
/**
* <p>recursively create an alias map for entities.</p>
*/
public void createAliasMap(final DatamartEntity entity, final Map<String, String> map) {
ArrayList<DatamartAttribute> entityAttributes = this.entityAttributes(entity);
for (final DatamartAttribute attribute : entityAttributes) {
{
LScalarType _type = attribute.getAttributeRef().getType();
LScalarType type = ((LScalarType) _type);
this.recursAliasMap(type, attribute, map);
}
}
EList<DatamartNavigation> _navigations = entity.getNavigations();
for (final DatamartNavigation navigation : _navigations) {
this.createAliasMap(navigation.getDatamartEntity(), map);
}
}
public LScalarType getAttributeType(final DatamartAttribute prop) {
return prop.getAttributeRef().getType();
}
/**
* <p>build a map for the filters contained in a datamart depending on a cube.</p>
*/
public String createFilterMap(final DatamartDefinition definition) {
String text = "";
DatamartSource _source = definition.getSource();
boolean _tripleNotEquals = (_source != null);
if (_tripleNotEquals) {
DatamartSource _source_1 = definition.getSource();
if ((_source_1 instanceof DatamartCube)) {
DatamartSource _source_2 = definition.getSource();
DatamartCube cube = ((DatamartCube) _source_2);
EList<DatamartCubeElement> _axisslicer = cube.getAxisslicer();
for (final DatamartCubeElement axisslicer : _axisslicer) {
{
if (((axisslicer instanceof DatamartCubeAxis) && (((DatamartCubeAxis) axisslicer).getElements() != null))) {
EList<DatamartElement> _elements = ((DatamartCubeAxis) axisslicer).getElements();
for (final DatamartElement element : _elements) {
if ((element instanceof DatamartSetAggregation)) {
DatamartSetAggregation setAggregation = ((DatamartSetAggregation) element);
Expression _set = setAggregation.getSet();
if ((_set instanceof DatamartHierarchy)) {
Expression _set_1 = setAggregation.getSet();
DatamartHierarchy hierarchy = ((DatamartHierarchy) _set_1);
String _createHierarchyFilter = this.createHierarchyFilter(hierarchy, definition);
String _plus = (text + _createHierarchyFilter);
text = _plus;
} else {
Expression _set_2 = setAggregation.getLeft().getSet();
if ((_set_2 instanceof DatamartHierarchy)) {
Expression _set_3 = setAggregation.getLeft().getSet();
DatamartHierarchy hierarchy_1 = ((DatamartHierarchy) _set_3);
String _createHierarchyFilter_1 = this.createHierarchyFilter(hierarchy_1, definition);
String _plus_1 = (text + _createHierarchyFilter_1);
text = _plus_1;
} else {
Expression _set_4 = setAggregation.getSet();
if ((_set_4 instanceof DatamartSetTuple)) {
Expression _set_5 = setAggregation.getSet();
DatamartHierarchy hierarchy_2 = ((DatamartSetTuple) _set_5).getRight();
String _createHierarchyFilter_2 = this.createHierarchyFilter(hierarchy_2, definition);
String _plus_2 = (text + _createHierarchyFilter_2);
text = _plus_2;
}
}
}
} else {
if ((element instanceof DatamartHierarchy)) {
DatamartHierarchy hierarchy_3 = ((DatamartHierarchy) element);
String _createHierarchyFilter_3 = this.createHierarchyFilter(hierarchy_3, definition);
String _plus_3 = (text + _createHierarchyFilter_3);
text = _plus_3;
}
}
}
}
if (((axisslicer instanceof DatamartSlicer) && (((DatamartSlicer) axisslicer).getElement() != null))) {
DatamartElement element_1 = ((DatamartSlicer) axisslicer).getElement();
if ((element_1 instanceof DatamartHierarchy)) {
DatamartHierarchy hierarchy_4 = ((DatamartHierarchy) element_1);
String _createHierarchyFilter_4 = this.createHierarchyFilter(hierarchy_4, definition);
String _plus_4 = (text + _createHierarchyFilter_4);
text = _plus_4;
}
}
}
}
}
DatamartSource _source_3 = definition.getSource();
if ((_source_3 instanceof DatamartEntity)) {
DatamartSource _source_4 = definition.getSource();
DatamartEntity entity = ((DatamartEntity) _source_4);
text = this.createFiltermapCondition(entity, definition);
String _addPrimaryFilters = this.addPrimaryFilters(definition);
String _plus = (text + _addPrimaryFilters);
text = _plus;
}
DatamartSource _source_5 = definition.getSource();
if ((_source_5 instanceof DatamartTask)) {
DatamartSource _source_6 = definition.getSource();
DatamartTask task = ((DatamartTask) _source_6);
String _createFiltermapCondition = this.createFiltermapCondition(task, definition);
String _plus_1 = (text + _createFiltermapCondition);
text = _plus_1;
}
int _length = text.length();
boolean _greaterThan = (_length > 0);
if (_greaterThan) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("{{");
_builder.newLine();
_builder.append(text);
_builder.newLineIfNotEmpty();
_builder.append("}}");
text = _builder.toString();
}
}
return text;
}
public String createHierarchyFilter(final DatamartHierarchy hierarchy, final DatamartDefinition definition) {
String text = "";
String ordering = null;
EObject _eContainer = hierarchy.getHierarchyRef().eContainer();
if ((_eContainer instanceof CubeDimension)) {
EObject _eContainer_1 = hierarchy.getHierarchyRef().eContainer();
boolean _isTypeTime = ((CubeDimension) _eContainer_1).isTypeTime();
if (_isTypeTime) {
ordering = "DESC";
}
}
boolean _isFiltered = hierarchy.isFiltered();
if (_isFiltered) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(text);
_builder.newLineIfNotEmpty();
_builder.append("add(new DatamartFilter(");
_builder.append(this.binderClassName);
_builder.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.SINGLEHIERARCHY, \"");
String _levelName = this.getLevelName(hierarchy, Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(true));
_builder.append(_levelName);
_builder.append("\",\"");
String _createMDXFilter = this.createMDXFilter(hierarchy, definition.getSource(), ordering, false);
_builder.append(_createMDXFilter);
_builder.append("\"));");
_builder.newLineIfNotEmpty();
text = _builder.toString();
}
boolean _isSelected = hierarchy.isSelected();
if (_isSelected) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(text);
_builder_1.newLineIfNotEmpty();
_builder_1.append("add(new DatamartFilter(");
_builder_1.append(this.binderClassName);
_builder_1.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.MULTIPLEHIERARCHY, \"");
String _levelName_1 = this.getLevelName(hierarchy, Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(true));
_builder_1.append(_levelName_1);
_builder_1.append("\",\"");
String _createMDXFilter_1 = this.createMDXFilter(hierarchy, definition.getSource(), ordering, false);
_builder_1.append(_createMDXFilter_1);
_builder_1.append("\"));");
_builder_1.newLineIfNotEmpty();
text = _builder_1.toString();
}
boolean _isExcept = hierarchy.isExcept();
if (_isExcept) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(text);
_builder_2.newLineIfNotEmpty();
_builder_2.append("add(new DatamartFilter(");
_builder_2.append(this.binderClassName);
_builder_2.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.EXCEPT, \"");
String _dimensionName = this.getDimensionName(hierarchy, Boolean.valueOf(true));
String _plus = (_dimensionName + ".[");
String _name = hierarchy.getExceptRef().getName();
String _plus_1 = (_plus + _name);
String _plus_2 = (_plus_1 + "]");
_builder_2.append(_plus_2);
_builder_2.append("\",\"");
String _createMDXFilter_2 = this.createMDXFilter(hierarchy, definition.getSource(), ordering, true);
_builder_2.append(_createMDXFilter_2);
_builder_2.append("\"));");
_builder_2.newLineIfNotEmpty();
text = _builder_2.toString();
}
return text;
}
/**
* <p>build a map for the filters contained in a datamart depending on entity.</p>
*/
public String createPrimaryFilterId(final DatamartDefinition definition) {
String text = "";
if (((definition.getSource() != null) && (definition.getSource() instanceof DatamartEntity))) {
DatamartSource _source = definition.getSource();
DatamartEntity entity = ((DatamartEntity) _source);
StringConcatenation _builder = new StringConcatenation();
String _name = entity.getEntityRef().getName();
_builder.append(_name);
_builder.append(".");
String _name_1 = entity.getEntityRef().getPrimaryKeyAttribute().getName();
_builder.append(_name_1);
text = _builder.toString();
}
return text;
}
/**
* <p>build a map for the filters contained in a datamart depending on a task.</p>
*/
public String createFiltermapCondition(final DatamartTask task, final DatamartDefinition definition) {
String text = "";
EList<DatamartCondition> _conditions = task.getConditions();
for (final DatamartCondition condition : _conditions) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(text);
_builder.newLineIfNotEmpty();
String _createSQLFilter = this.createSQLFilter(condition, task, definition);
_builder.append(_createSQLFilter);
text = _builder.toString();
}
return text;
}
/**
* <p>build the sql filter condition depending on an entity.</p>
*/
public String createSQLFilter(final DatamartCondition condition, final DatamartTask task, final DatamartDefinition definition) {
String text = "";
Expression _condition = condition.getCondition();
boolean _tripleNotEquals = (_condition != null);
if (_tripleNotEquals) {
Expression _condition_1 = condition.getCondition();
if ((_condition_1 instanceof ConditionalExpression)) {
Expression _condition_2 = condition.getCondition();
Expression element = ((ConditionalExpression) _condition_2).getRight();
Expression _condition_3 = condition.getCondition();
Expression _left = ((ConditionalExpression) _condition_3).getLeft();
if ((_left instanceof DatamartTaskFilter)) {
Expression _condition_4 = condition.getCondition();
Expression _left_1 = ((ConditionalExpression) _condition_4).getLeft();
DatamartTaskFilter taskFilter = ((DatamartTaskFilter) _left_1);
if ((element.isFiltered() || element.isSelected())) {
StringConcatenation _builder = new StringConcatenation();
String _literal = taskFilter.getFilterRef().getLiteral();
_builder.append(_literal);
String filter = _builder.toString();
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(text);
_builder_1.newLineIfNotEmpty();
_builder_1.append("add(new DatamartFilter(");
_builder_1.append(this.binderClassName);
_builder_1.append(".getDSLMetadataService(), user, ");
{
boolean _isFiltered = element.isFiltered();
if (_isFiltered) {
_builder_1.append("DatamartFilter.FilterType.SINGLE");
} else {
boolean _isSelected = element.isSelected();
if (_isSelected) {
_builder_1.append("DatamartFilter.FilterType.MULTIPLE");
}
}
}
_builder_1.append(", \"");
String _literal_1 = taskFilter.getFilterRef().getLiteral();
_builder_1.append(_literal_1);
_builder_1.append("\",\"");
_builder_1.append(filter);
_builder_1.append("\"));");
text = _builder_1.toString();
}
}
}
}
return text;
}
/**
* <p>build a map for the filters contained in a datamart depending on an entity.</p>
*/
public String createFiltermapCondition(final DatamartEntity entity, final DatamartDefinition definition) {
String text = "";
EList<DatamartCondition> _conditions = entity.getConditions();
for (final DatamartCondition condition : _conditions) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(text);
_builder.newLineIfNotEmpty();
String _createSQLFilter = this.createSQLFilter(condition, entity, definition);
_builder.append(_createSQLFilter);
text = _builder.toString();
}
EList<DatamartNavigation> _navigations = entity.getNavigations();
for (final DatamartNavigation navigation : _navigations) {
{
if ((navigation instanceof DatamartMember)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(text);
_builder_1.newLineIfNotEmpty();
String _createFiltermapCondition = this.createFiltermapCondition(((DatamartMember) navigation).getDatamartEntity(), definition);
_builder_1.append(_createFiltermapCondition);
text = _builder_1.toString();
}
if ((navigation instanceof DatamartOwner)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(text);
_builder_2.newLineIfNotEmpty();
String _createFiltermapCondition_1 = this.createFiltermapCondition(((DatamartOwner) navigation).getDatamartEntity(), definition);
_builder_2.append(_createFiltermapCondition_1);
text = _builder_2.toString();
}
}
}
return text;
}
/**
* <p>build the sql filter condition depending on an entity.</p>
*/
public String createSQLFilter(final DatamartCondition condition, final DatamartEntity entity, final DatamartDefinition definition) {
String text = "";
Expression _condition = condition.getCondition();
boolean _tripleNotEquals = (_condition != null);
if (_tripleNotEquals) {
Expression _condition_1 = condition.getCondition();
if ((_condition_1 instanceof ConditionalExpression)) {
Expression _condition_2 = condition.getCondition();
Expression element = ((ConditionalExpression) _condition_2).getRight();
Expression _condition_3 = condition.getCondition();
Expression leftCondExpr = ((ConditionalExpression) _condition_3).getLeft();
if ((leftCondExpr instanceof DatamartAttributeBase)) {
Expression _condition_4 = condition.getCondition();
Expression _left = ((ConditionalExpression) _condition_4).getLeft();
DatamartAttributeBase attribute = ((DatamartAttributeBase) _left);
String filter = this.createSQLFilter(element, entity, attribute);
boolean _isFiltered = element.isFiltered();
if (_isFiltered) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(text);
_builder.append("add(new DatamartFilter(");
_builder.append(this.binderClassName);
_builder.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.SINGLE, \"");
String _attributeName = this.getAttributeName(attribute, entity);
_builder.append(_attributeName);
_builder.append("\",\"");
_builder.append(filter);
_builder.append("\"));");
text = _builder.toString();
}
boolean _isSelected = element.isSelected();
if (_isSelected) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(text);
_builder_1.append("add(new DatamartFilter(");
_builder_1.append(this.binderClassName);
_builder_1.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.MULTIPLE, \"");
String _attributeName_1 = this.getAttributeName(attribute, entity);
_builder_1.append(_attributeName_1);
_builder_1.append("\",\"");
_builder_1.append(filter);
_builder_1.append("\"));");
text = _builder_1.toString();
}
boolean _isRanged = element.isRanged();
if (_isRanged) {
boolean _isDate = this._modelExtensions.getDatatype(attribute.getAttributeRef()).isDate();
if (_isDate) {
EList<LKeyAndValue> _properties = attribute.getAttributeRef().getProperties();
boolean _tripleNotEquals_1 = (_properties != null);
if (_tripleNotEquals_1) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(text);
_builder_2.append("add(new DatamartFilter(");
_builder_2.append(this.binderClassName);
_builder_2.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.BETWEEN_DATE, dateFilterAttributeProperties.get(\"");
String _attributeName_2 = this.getAttributeName(attribute, entity);
_builder_2.append(_attributeName_2);
_builder_2.append("\"), \"");
String _attributeName_3 = this.getAttributeName(attribute, entity);
_builder_2.append(_attributeName_3);
_builder_2.append("\",\"\"));");
text = _builder_2.toString();
} else {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(text);
_builder_3.append("add(new DatamartFilter(");
_builder_3.append(this.binderClassName);
_builder_3.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.BETWEEN_DATE, \"");
String _attributeName_4 = this.getAttributeName(attribute, entity);
_builder_3.append(_attributeName_4);
_builder_3.append("\",\"\"));");
text = _builder_3.toString();
}
} else {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(text);
_builder_4.append("add(new DatamartFilter(");
_builder_4.append(this.binderClassName);
_builder_4.append(".getDSLMetadataService(), user, DatamartFilter.FilterType.BETWEEN, \"");
String _attributeName_5 = this.getAttributeName(attribute, entity);
_builder_4.append(_attributeName_5);
_builder_4.append("\",\"\"));");
text = _builder_4.toString();
}
}
}
}
}
return text;
}
public String createSQLFilter(final Expression element, final DatamartEntity entity, final DatamartAttributeBase attribute) {
String tableName = this._namingExtensions.toTableName(entity.getEntityRef());
boolean _hasSuperType = this.hasSuperType(entity);
if (_hasSuperType) {
tableName = this._namingExtensions.toTableName(entity.getEntityRef().getSuperType());
}
LScalarType type = attribute.getAttributeRef().getType();
String filter = "";
if ((type instanceof LDataType)) {
if ((element.isOptional() && (!((LDataType)type).isDate()))) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("select ");
_builder.append(IDataMart.SQLFILTERNOTHING);
_builder.append(" from ");
_builder.append(EnumDatabaseVendor.ONE_ROW_ONE_COLUMN_TABLE);
_builder.append(" union ");
filter = _builder.toString();
}
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(filter);
_builder_1.append("select distinct ");
String _columnName = this._namingExtensions.toColumnName(attribute.getAttributeRef());
_builder_1.append(_columnName);
_builder_1.append(" as \\\"");
String _aliasedAttributeName = DatamartAttributeUtil.getAliasedAttributeName(attribute);
_builder_1.append(_aliasedAttributeName);
_builder_1.append("\\\" from ");
CharSequence _provideSchemaName = this.getProvideSchemaName(entity.getEntityRef().getPersistenceInfo().getSchemaName());
_builder_1.append(_provideSchemaName);
_builder_1.append(tableName);
_builder_1.append(" order by 1");
filter = _builder_1.toString();
return filter;
}
/**
* <p>build the mdx filter slice depending on a cube.</p>
*/
public String createMDXFilter(final DatamartHierarchy hierarchy, final DatamartSource source, final String ordering, final boolean isExcept) {
String filter = "select {} on columns,";
if (((hierarchy.getLevelRef() != null) && (!isExcept))) {
if ((ordering != null)) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(filter);
_builder.append("Order(");
String _levelName = this.getLevelName(hierarchy, Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(true));
_builder.append(_levelName);
_builder.append(".members,[");
String _hierarchyName = this.getHierarchyName(hierarchy);
_builder.append(_hierarchyName);
_builder.append("].CurrentMember.Properties(\\\"MEMBER_KEY\\\"),");
_builder.append(ordering);
_builder.append(") on rows");
filter = _builder.toString();
} else {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(filter);
String _levelName_1 = this.getLevelName(hierarchy, Boolean.valueOf(true), Boolean.valueOf(false), Boolean.valueOf(false), Boolean.valueOf(true));
_builder_1.append(_levelName_1);
_builder_1.append(".members on rows");
filter = _builder_1.toString();
}
}
if (((hierarchy.getExceptRef() != null) && isExcept)) {
if ((ordering != null)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(filter);
_builder_2.append("Order(");
String _dimensionName = this.getDimensionName(hierarchy, Boolean.valueOf(true));
String _plus = (_dimensionName + ".[");
String _name = hierarchy.getExceptRef().getName();
String _plus_1 = (_plus + _name);
String _plus_2 = (_plus_1 + "]");
_builder_2.append(_plus_2);
_builder_2.append(".members,[");
String _exceptHierarchyName = this.getExceptHierarchyName(hierarchy);
_builder_2.append(_exceptHierarchyName);
_builder_2.append("].CurrentMember.Properties(\\\"MEMBER_KEY\\\"),");
_builder_2.append(ordering);
_builder_2.append(") on rows");
filter = _builder_2.toString();
} else {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(filter);
String _dimensionName_1 = this.getDimensionName(hierarchy, Boolean.valueOf(true));
String _plus_3 = (_dimensionName_1 + ".[");
String _name_1 = hierarchy.getExceptRef().getName();
String _plus_4 = (_plus_3 + _name_1);
String _plus_5 = (_plus_4 + "]");
_builder_3.append(_plus_5);
_builder_3.append(".members on rows");
filter = _builder_3.toString();
}
}
if ((source instanceof DatamartCube)) {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(filter);
_builder_4.append(" from ");
String _name_2 = ((DatamartCube) source).getCubeRef().getName();
_builder_4.append(_name_2);
filter = _builder_4.toString();
}
return filter;
}
/**
* <p>helper to get a level name.</p>
*/
public String getFilterAlias(final DatamartHierarchy level) {
String text = "";
CubeLevel _levelRef = level.getLevelRef();
boolean _tripleNotEquals = (_levelRef != null);
if (_tripleNotEquals) {
StringConcatenation _builder = new StringConcatenation();
String _dimensionName = this.getDimensionName(level, Boolean.valueOf(false));
_builder.append(_dimensionName);
String _firstUpper = StringExtensions.toFirstUpper(level.getLevelRef().getName());
_builder.append(_firstUpper);
text = _builder.toString();
}
return text;
}
/**
* <p>mdx syntax part for aggregations on sets.</p>
*/
public String createSetAggregation(final List<DatamartSetAggregation> usedSetAggregation, final Boolean nonEmpty) {
String set = "";
boolean firstTuple = true;
for (final DatamartSetAggregation element : usedSetAggregation) {
{
if (firstTuple) {
firstTuple = false;
} else {
StringConcatenation _builder = new StringConcatenation();
_builder.append(set);
_builder.append(",");
set = _builder.toString();
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(set);
String _evaluateExpression = this.evaluateExpression(element, null);
_builder_1.append(_evaluateExpression);
set = _builder_1.toString();
}
}
int _size = usedSetAggregation.size();
boolean _greaterThan = (_size > 1);
if (_greaterThan) {
StringConcatenation _builder = new StringConcatenation();
{
if ((nonEmpty).booleanValue()) {
_builder.append("Non Empty");
}
}
_builder.append("{");
_builder.append(set);
_builder.append("}");
set = _builder.toString();
} else {
int _size_1 = usedSetAggregation.size();
boolean _greaterThan_1 = (_size_1 > 0);
if (_greaterThan_1) {
StringConcatenation _builder_1 = new StringConcatenation();
{
if ((nonEmpty).booleanValue()) {
_builder_1.append("Non Empty ");
}
}
_builder_1.append(set);
set = _builder_1.toString();
}
}
return set;
}
/**
* <p>mdx syntax part for hierarchies.</p>
*/
public String createHierarchies(final List<DatamartHierarchy> usedHierarchies, final Boolean nonEmpty) {
String set = "";
boolean firstTuple = true;
for (final DatamartHierarchy element : usedHierarchies) {
{
if (firstTuple) {
firstTuple = false;
} else {
StringConcatenation _builder = new StringConcatenation();
_builder.append(set);
_builder.append(",");
set = _builder.toString();
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(set);
String _levelName = this.getLevelName(element, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_1.append(_levelName);
set = _builder_1.toString();
}
}
int _size = usedHierarchies.size();
boolean _greaterThan = (_size > 1);
if (_greaterThan) {
StringConcatenation _builder = new StringConcatenation();
{
if ((nonEmpty).booleanValue()) {
_builder.append("Non Empty");
}
}
_builder.append("{");
_builder.append(set);
_builder.append("}");
set = _builder.toString();
} else {
int _size_1 = usedHierarchies.size();
boolean _greaterThan_1 = (_size_1 > 0);
if (_greaterThan_1) {
StringConcatenation _builder_1 = new StringConcatenation();
{
if ((nonEmpty).booleanValue()) {
_builder_1.append("Non Empty ");
}
}
_builder_1.append(set);
set = _builder_1.toString();
}
}
return set;
}
/**
* <p>mdx syntax part for measures.</p>
*/
public String createMeasures(final List<DatamartMeasure> usedMeasures, final List<DatamartDerivedMeasure> usedDerived, final Boolean nonEmpty) {
String set = "";
boolean firstTuple = true;
for (final DatamartMeasure element : usedMeasures) {
{
if (firstTuple) {
firstTuple = false;
} else {
StringConcatenation _builder = new StringConcatenation();
_builder.append(set);
_builder.append(",");
set = _builder.toString();
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(set);
String _measureName = this.getMeasureName(element);
_builder_1.append(_measureName);
set = _builder_1.toString();
}
}
for (final DatamartDerivedMeasure element_1 : usedDerived) {
{
if (firstTuple) {
firstTuple = false;
} else {
StringConcatenation _builder = new StringConcatenation();
_builder.append(set);
_builder.append(",");
set = _builder.toString();
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(set);
String _derivedMeasureName = this.getDerivedMeasureName(element_1);
_builder_1.append(_derivedMeasureName);
set = _builder_1.toString();
}
}
int _size = usedMeasures.size();
int _size_1 = usedDerived.size();
int _plus = (_size + _size_1);
boolean _greaterThan = (_plus > 1);
if (_greaterThan) {
StringConcatenation _builder = new StringConcatenation();
{
if ((nonEmpty).booleanValue()) {
_builder.append("Non Empty");
}
}
_builder.append("{");
_builder.append(set);
_builder.append("}");
set = _builder.toString();
} else {
int _size_2 = usedMeasures.size();
int _size_3 = usedDerived.size();
int _plus_1 = (_size_2 + _size_3);
boolean _greaterThan_1 = (_plus_1 > 0);
if (_greaterThan_1) {
StringConcatenation _builder_1 = new StringConcatenation();
{
if ((nonEmpty).booleanValue()) {
_builder_1.append("Non Empty ");
}
}
_builder_1.append(set);
set = _builder_1.toString();
}
}
return set;
}
/**
* <p>the main function to build a mdx statement.</p>
*/
public String createMDXStatement(final DatamartDefinition definition) {
this.sqlAliasCounter.clear();
this.sqlFilterMap.clear();
this.ignoreEntityGrouping = false;
this.sqlHasAggregate = false;
this.sqlHasOrder = false;
this.idMap.clear();
DatamartSource _source = definition.getSource();
DatamartCube cube = ((DatamartCube) _source);
String body = "";
String slice = "";
String derived = "";
boolean firstAxis = true;
boolean firstSlice = true;
boolean firstderived = true;
EList<DatamartCubeElement> _axisslicer = cube.getAxisslicer();
for (final DatamartCubeElement axisslicer : _axisslicer) {
{
if ((axisslicer instanceof DatamartCubeAxis)) {
boolean crossJoinMeasure = false;
boolean crossJoinHierarchy = false;
boolean crossJoinSetAggregation = false;
DatamartCubeAxis axis = ((DatamartCubeAxis) axisslicer);
if (firstAxis) {
firstAxis = false;
} else {
StringConcatenation _builder = new StringConcatenation();
_builder.append(body);
_builder.append(",");
body = _builder.toString();
}
EList<DatamartElement> _elements = axis.getElements();
boolean _tripleNotEquals = (_elements != null);
if (_tripleNotEquals) {
String set = "";
final ArrayList<DatamartHierarchy> usedHierarchies = CollectionLiterals.<DatamartHierarchy>newArrayList();
final ArrayList<DatamartMeasure> usedMeasures = CollectionLiterals.<DatamartMeasure>newArrayList();
final ArrayList<DatamartDerivedMeasure> usedDerivedMeasure = CollectionLiterals.<DatamartDerivedMeasure>newArrayList();
final ArrayList<DatamartSetAggregation> usedSetAggregation = CollectionLiterals.<DatamartSetAggregation>newArrayList();
EList<DatamartElement> _elements_1 = axis.getElements();
for (final DatamartElement element : _elements_1) {
{
if ((element instanceof DatamartSetAggregation)) {
if (((usedMeasures.size() > 0) || (usedDerivedMeasure.size() > 0))) {
if (crossJoinMeasure) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(set);
_builder_1.append(",");
set = _builder_1.toString();
}
StringConcatenation _builder_2 = new StringConcatenation();
{
boolean _isNonEmpty = cube.isNonEmpty();
if (_isNonEmpty) {
_builder_2.append("NonEmptyCrossjoin");
} else {
_builder_2.append("CrossJoin");
}
}
_builder_2.append("(");
_builder_2.append(set);
String _createMeasures = this.createMeasures(usedMeasures, usedDerivedMeasure, Boolean.valueOf(false));
_builder_2.append(_createMeasures);
set = _builder_2.toString();
if (crossJoinMeasure) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(set);
_builder_3.append(")");
set = _builder_3.toString();
}
usedMeasures.clear();
usedDerivedMeasure.clear();
crossJoinSetAggregation = true;
}
int _size = usedHierarchies.size();
boolean _greaterThan = (_size > 0);
if (_greaterThan) {
if (crossJoinHierarchy) {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(set);
_builder_4.append(",");
set = _builder_4.toString();
}
StringConcatenation _builder_5 = new StringConcatenation();
{
boolean _isNonEmpty_1 = cube.isNonEmpty();
if (_isNonEmpty_1) {
_builder_5.append("NonEmptyCrossjoin");
} else {
_builder_5.append("CrossJoin");
}
}
_builder_5.append("(");
_builder_5.append(set);
String _createHierarchies = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
_builder_5.append(_createHierarchies);
set = _builder_5.toString();
if (crossJoinHierarchy) {
StringConcatenation _builder_6 = new StringConcatenation();
_builder_6.append(set);
_builder_6.append(")");
set = _builder_6.toString();
}
usedHierarchies.clear();
crossJoinSetAggregation = true;
}
DatamartSetAggregation setAggregation = ((DatamartSetAggregation) element);
usedSetAggregation.add(setAggregation);
}
if ((element instanceof DatamartHierarchy)) {
if (((usedMeasures.size() > 0) || (usedDerivedMeasure.size() > 0))) {
if (crossJoinMeasure) {
StringConcatenation _builder_7 = new StringConcatenation();
_builder_7.append(set);
_builder_7.append(",");
set = _builder_7.toString();
}
StringConcatenation _builder_8 = new StringConcatenation();
{
boolean _isNonEmpty_2 = cube.isNonEmpty();
if (_isNonEmpty_2) {
_builder_8.append("NonEmptyCrossjoin");
} else {
_builder_8.append("CrossJoin");
}
}
_builder_8.append("(");
_builder_8.append(set);
String _createMeasures_1 = this.createMeasures(usedMeasures, usedDerivedMeasure, Boolean.valueOf(false));
_builder_8.append(_createMeasures_1);
set = _builder_8.toString();
if (crossJoinMeasure) {
StringConcatenation _builder_9 = new StringConcatenation();
_builder_9.append(set);
_builder_9.append(")");
set = _builder_9.toString();
}
usedMeasures.clear();
usedDerivedMeasure.clear();
crossJoinMeasure = true;
}
int _size_1 = usedSetAggregation.size();
boolean _greaterThan_1 = (_size_1 > 0);
if (_greaterThan_1) {
if (crossJoinSetAggregation) {
StringConcatenation _builder_10 = new StringConcatenation();
_builder_10.append(set);
_builder_10.append(",");
set = _builder_10.toString();
}
StringConcatenation _builder_11 = new StringConcatenation();
{
boolean _isNonEmpty_3 = cube.isNonEmpty();
if (_isNonEmpty_3) {
_builder_11.append("NonEmptyCrossjoin");
} else {
_builder_11.append("CrossJoin");
}
}
_builder_11.append("(");
_builder_11.append(set);
String _createSetAggregation = this.createSetAggregation(usedSetAggregation, Boolean.valueOf(false));
_builder_11.append(_createSetAggregation);
set = _builder_11.toString();
if (crossJoinSetAggregation) {
StringConcatenation _builder_12 = new StringConcatenation();
_builder_12.append(set);
_builder_12.append(")");
set = _builder_12.toString();
}
usedSetAggregation.clear();
crossJoinSetAggregation = true;
}
DatamartHierarchy hierarchyLevel = ((DatamartHierarchy) element);
DatamartHierarchy lastHierarchy = IterableExtensions.<DatamartHierarchy>last(usedHierarchies);
if (((!crossJoinHierarchy) && ((lastHierarchy == null) ||
this.getHierarchyName(hierarchyLevel).equals(this.getHierarchyName(lastHierarchy))))) {
usedHierarchies.add(hierarchyLevel);
} else {
if (crossJoinHierarchy) {
StringConcatenation _builder_13 = new StringConcatenation();
_builder_13.append(set);
_builder_13.append(",");
set = _builder_13.toString();
}
StringConcatenation _builder_14 = new StringConcatenation();
{
boolean _isNonEmpty_4 = cube.isNonEmpty();
if (_isNonEmpty_4) {
_builder_14.append("NonEmptyCrossjoin");
} else {
_builder_14.append("CrossJoin");
}
}
_builder_14.append("(");
_builder_14.append(set);
String _createHierarchies_1 = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
_builder_14.append(_createHierarchies_1);
set = _builder_14.toString();
if (crossJoinHierarchy) {
StringConcatenation _builder_15 = new StringConcatenation();
_builder_15.append(set);
_builder_15.append(")");
set = _builder_15.toString();
}
usedHierarchies.clear();
usedHierarchies.add(hierarchyLevel);
crossJoinHierarchy = true;
}
}
if ((element instanceof DatamartMeasure)) {
int _size_2 = usedHierarchies.size();
boolean _greaterThan_2 = (_size_2 > 0);
if (_greaterThan_2) {
if (crossJoinMeasure) {
StringConcatenation _builder_16 = new StringConcatenation();
_builder_16.append(set);
_builder_16.append(",");
set = _builder_16.toString();
}
StringConcatenation _builder_17 = new StringConcatenation();
{
boolean _isNonEmpty_5 = cube.isNonEmpty();
if (_isNonEmpty_5) {
_builder_17.append("NonEmptyCrossjoin");
} else {
_builder_17.append("CrossJoin");
}
}
_builder_17.append("(");
_builder_17.append(set);
String _createHierarchies_2 = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
_builder_17.append(_createHierarchies_2);
set = _builder_17.toString();
if (crossJoinMeasure) {
StringConcatenation _builder_18 = new StringConcatenation();
_builder_18.append(set);
_builder_18.append(")");
set = _builder_18.toString();
}
usedHierarchies.clear();
crossJoinMeasure = true;
}
int _size_3 = usedSetAggregation.size();
boolean _greaterThan_3 = (_size_3 > 0);
if (_greaterThan_3) {
if (crossJoinSetAggregation) {
StringConcatenation _builder_19 = new StringConcatenation();
_builder_19.append(set);
_builder_19.append(",");
set = _builder_19.toString();
}
StringConcatenation _builder_20 = new StringConcatenation();
{
boolean _isNonEmpty_6 = cube.isNonEmpty();
if (_isNonEmpty_6) {
_builder_20.append("NonEmptyCrossjoin");
} else {
_builder_20.append("CrossJoin");
}
}
_builder_20.append("(");
_builder_20.append(set);
String _createSetAggregation_1 = this.createSetAggregation(usedSetAggregation, Boolean.valueOf(false));
_builder_20.append(_createSetAggregation_1);
set = _builder_20.toString();
if (crossJoinSetAggregation) {
StringConcatenation _builder_21 = new StringConcatenation();
_builder_21.append(set);
_builder_21.append(")");
set = _builder_21.toString();
}
usedSetAggregation.clear();
crossJoinSetAggregation = true;
}
DatamartMeasure measure = ((DatamartMeasure) element);
usedMeasures.add(measure);
}
if ((element instanceof DatamartDerivedMeasure)) {
int _size_4 = usedHierarchies.size();
boolean _greaterThan_4 = (_size_4 > 0);
if (_greaterThan_4) {
if (crossJoinMeasure) {
StringConcatenation _builder_22 = new StringConcatenation();
_builder_22.append(set);
_builder_22.append(",");
set = _builder_22.toString();
}
StringConcatenation _builder_23 = new StringConcatenation();
{
boolean _isNonEmpty_7 = cube.isNonEmpty();
if (_isNonEmpty_7) {
_builder_23.append("NonEmptyCrossjoin");
} else {
_builder_23.append("CrossJoin");
}
}
_builder_23.append("(");
_builder_23.append(set);
String _createHierarchies_3 = this.createHierarchies(usedHierarchies, Boolean.valueOf(false));
_builder_23.append(_createHierarchies_3);
set = _builder_23.toString();
if (crossJoinMeasure) {
StringConcatenation _builder_24 = new StringConcatenation();
_builder_24.append(set);
_builder_24.append(")");
set = _builder_24.toString();
}
usedHierarchies.clear();
crossJoinMeasure = true;
}
int _size_5 = usedSetAggregation.size();
boolean _greaterThan_5 = (_size_5 > 0);
if (_greaterThan_5) {
if (crossJoinSetAggregation) {
StringConcatenation _builder_25 = new StringConcatenation();
_builder_25.append(set);
_builder_25.append(",");
set = _builder_25.toString();
}
StringConcatenation _builder_26 = new StringConcatenation();
{
boolean _isNonEmpty_8 = cube.isNonEmpty();
if (_isNonEmpty_8) {
_builder_26.append("NonEmptyCrossjoin");
} else {
_builder_26.append("CrossJoin");
}
}
_builder_26.append("(");
_builder_26.append(set);
String _createSetAggregation_2 = this.createSetAggregation(usedSetAggregation, Boolean.valueOf(false));
_builder_26.append(_createSetAggregation_2);
set = _builder_26.toString();
if (crossJoinSetAggregation) {
StringConcatenation _builder_27 = new StringConcatenation();
_builder_27.append(set);
_builder_27.append(")");
set = _builder_27.toString();
}
usedSetAggregation.clear();
crossJoinSetAggregation = true;
}
DatamartDerivedMeasure measure_1 = ((DatamartDerivedMeasure) element);
usedDerivedMeasure.add(measure_1);
}
}
}
if (((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(set);
_builder_1.append(",");
set = _builder_1.toString();
}
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(set);
String _createHierarchies = this.createHierarchies(usedHierarchies,
Boolean.valueOf((cube.isNonEmpty() && (!((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation)))));
_builder_2.append(_createHierarchies);
set = _builder_2.toString();
usedHierarchies.clear();
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(set);
String _createMeasures = this.createMeasures(usedMeasures, usedDerivedMeasure,
Boolean.valueOf((cube.isNonEmpty() && (!((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation)))));
_builder_3.append(_createMeasures);
set = _builder_3.toString();
usedMeasures.clear();
usedDerivedMeasure.clear();
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(set);
String _createSetAggregation = this.createSetAggregation(usedSetAggregation,
Boolean.valueOf((cube.isNonEmpty() && (!((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation)))));
_builder_4.append(_createSetAggregation);
set = _builder_4.toString();
usedMeasures.clear();
if (((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation)) {
StringConcatenation _builder_5 = new StringConcatenation();
_builder_5.append(set);
_builder_5.append(")");
set = _builder_5.toString();
}
StringConcatenation _builder_6 = new StringConcatenation();
_builder_6.append(body);
_builder_6.append(set);
_builder_6.append(" on ");
AxisEnum _name = axis.getAxis().getName();
_builder_6.append(_name);
body = _builder_6.toString();
}
}
if ((axisslicer instanceof DatamartSlicer)) {
if (firstSlice) {
firstSlice = false;
} else {
StringConcatenation _builder_7 = new StringConcatenation();
_builder_7.append(slice);
_builder_7.append(",");
slice = _builder_7.toString();
}
DatamartElement element_1 = ((DatamartSlicer) axisslicer).getElement();
if ((element_1 instanceof DatamartHierarchy)) {
DatamartHierarchy hierarchyLevel = ((DatamartHierarchy) element_1);
StringConcatenation _builder_8 = new StringConcatenation();
_builder_8.append(slice);
String _levelName = this.getLevelName(hierarchyLevel, Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true));
_builder_8.append(_levelName);
slice = _builder_8.toString();
}
if ((element_1 instanceof DatamartMeasure)) {
StringConcatenation _builder_9 = new StringConcatenation();
_builder_9.append(slice);
String _measureName = this.getMeasureName(((DatamartMeasure) element_1));
_builder_9.append(_measureName);
slice = _builder_9.toString();
}
}
if ((axisslicer instanceof DatamartDefineDerivedMeasure)) {
if (firstderived) {
firstderived = false;
}
DatamartDefineDerivedMeasure derivedMeasure = ((DatamartDefineDerivedMeasure) axisslicer);
StringConcatenation _builder_10 = new StringConcatenation();
_builder_10.append(derived);
_builder_10.append(" member [Measures].[");
String _name_1 = derivedMeasure.getName();
_builder_10.append(_name_1);
_builder_10.append("] as ");
String _buildDerivedFormula = this.buildDerivedFormula(derivedMeasure);
_builder_10.append(_buildDerivedFormula);
derived = _builder_10.toString();
}
}
}
if ((!firstSlice)) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(" ");
_builder.append("where (");
_builder.append(slice, " ");
_builder.append(")");
slice = _builder.toString();
}
if ((!firstderived)) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("with");
_builder_1.append(derived);
_builder_1.append(" ");
derived = _builder_1.toString();
}
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(derived);
_builder_2.append("select ");
_builder_2.append(body);
_builder_2.append(" from ");
String _name = cube.getCubeRef().getName();
_builder_2.append(_name);
_builder_2.append(slice);
return _builder_2.toString();
}
public boolean isCrossJoined(final DatamartDefinition definition) {
DatamartSource _source = definition.getSource();
boolean _not = (!(_source instanceof DatamartCube));
if (_not) {
return false;
}
DatamartSource _source_1 = definition.getSource();
DatamartCube cube = ((DatamartCube) _source_1);
boolean firstAxis = true;
EList<DatamartCubeElement> _axisslicer = cube.getAxisslicer();
for (final DatamartCubeElement axisslicer : _axisslicer) {
if ((axisslicer instanceof DatamartCubeAxis)) {
boolean crossJoinMeasure = false;
boolean crossJoinHierarchy = false;
boolean crossJoinSetAggregation = false;
DatamartCubeAxis axis = ((DatamartCubeAxis) axisslicer);
if (firstAxis) {
firstAxis = false;
}
EList<DatamartElement> _elements = axis.getElements();
boolean _tripleNotEquals = (_elements != null);
if (_tripleNotEquals) {
final ArrayList<DatamartHierarchy> usedHierarchies = CollectionLiterals.<DatamartHierarchy>newArrayList();
final ArrayList<DatamartMeasure> usedMeasures = CollectionLiterals.<DatamartMeasure>newArrayList();
final ArrayList<DatamartDerivedMeasure> usedDerivedMeasure = CollectionLiterals.<DatamartDerivedMeasure>newArrayList();
final ArrayList<DatamartSetAggregation> usedSetAggregation = CollectionLiterals.<DatamartSetAggregation>newArrayList();
EList<DatamartElement> _elements_1 = axis.getElements();
for (final DatamartElement element : _elements_1) {
{
if ((element instanceof DatamartSetAggregation)) {
if (((usedMeasures.size() > 0) || (usedDerivedMeasure.size() > 0))) {
usedMeasures.clear();
usedDerivedMeasure.clear();
crossJoinSetAggregation = true;
}
int _size = usedHierarchies.size();
boolean _greaterThan = (_size > 0);
if (_greaterThan) {
usedHierarchies.clear();
crossJoinSetAggregation = true;
}
DatamartSetAggregation setAggregation = ((DatamartSetAggregation) element);
usedSetAggregation.add(setAggregation);
}
if ((element instanceof DatamartHierarchy)) {
if (((usedMeasures.size() > 0) || (usedDerivedMeasure.size() > 0))) {
usedMeasures.clear();
usedDerivedMeasure.clear();
crossJoinMeasure = true;
}
int _size_1 = usedSetAggregation.size();
boolean _greaterThan_1 = (_size_1 > 0);
if (_greaterThan_1) {
usedSetAggregation.clear();
crossJoinSetAggregation = true;
}
DatamartHierarchy hierarchyLevel = ((DatamartHierarchy) element);
DatamartHierarchy lastHierarchy = IterableExtensions.<DatamartHierarchy>last(usedHierarchies);
if (((!crossJoinHierarchy) && ((lastHierarchy == null) ||
this.getHierarchyName(hierarchyLevel).equals(this.getHierarchyName(lastHierarchy))))) {
usedHierarchies.add(hierarchyLevel);
} else {
usedHierarchies.clear();
usedHierarchies.add(hierarchyLevel);
crossJoinHierarchy = true;
}
}
if ((element instanceof DatamartMeasure)) {
int _size_2 = usedHierarchies.size();
boolean _greaterThan_2 = (_size_2 > 0);
if (_greaterThan_2) {
usedHierarchies.clear();
crossJoinMeasure = true;
}
int _size_3 = usedSetAggregation.size();
boolean _greaterThan_3 = (_size_3 > 0);
if (_greaterThan_3) {
usedSetAggregation.clear();
crossJoinSetAggregation = true;
}
DatamartMeasure measure = ((DatamartMeasure) element);
usedMeasures.add(measure);
}
if ((element instanceof DatamartDerivedMeasure)) {
int _size_4 = usedHierarchies.size();
boolean _greaterThan_4 = (_size_4 > 0);
if (_greaterThan_4) {
usedHierarchies.clear();
crossJoinMeasure = true;
}
int _size_5 = usedSetAggregation.size();
boolean _greaterThan_5 = (_size_5 > 0);
if (_greaterThan_5) {
usedSetAggregation.clear();
crossJoinSetAggregation = true;
}
DatamartDerivedMeasure measure_1 = ((DatamartDerivedMeasure) element);
usedDerivedMeasure.add(measure_1);
}
}
}
usedMeasures.clear();
usedDerivedMeasure.clear();
usedMeasures.clear();
}
return ((crossJoinMeasure || crossJoinHierarchy) || crossJoinSetAggregation);
}
}
return false;
}
/**
* <p>mdx syntax part for hierarchy names. If a hierarchy itself has no name in the cube definition, the dimension name is used instead</p>
*/
public String getHierarchyName(final DatamartHierarchy hierarchy) {
String _xifexpression = null;
String _name = hierarchy.getHierarchyRef().getName();
boolean _tripleEquals = (_name == null);
if (_tripleEquals) {
EObject _eContainer = hierarchy.getHierarchyRef().eContainer();
return ((CubeDimension) _eContainer).getName();
} else {
_xifexpression = hierarchy.getHierarchyRef().getName();
}
return _xifexpression;
}
/**
* <p>mdx syntax part for hierarchy names of execpt keyword. If a hierarchy itself has no name in the cube definition, the dimension name is used instead</p>
*/
public String getExceptHierarchyName(final DatamartHierarchy hierarchy) {
String _xifexpression = null;
String _name = hierarchy.getExceptRef().getName();
boolean _tripleEquals = (_name == null);
if (_tripleEquals) {
EObject _eContainer = hierarchy.getExceptRef().eContainer();
return ((CubeDimension) _eContainer).getName();
} else {
_xifexpression = hierarchy.getExceptRef().getName();
}
return _xifexpression;
}
/**
* <p>mdx syntax part for derived measure expressions.</p>
*/
public String buildDerivedFormula(final DatamartDefineDerivedMeasure derivedMeasure) {
String formula = "";
EList<Expression> _derivedElement = derivedMeasure.getDerivedElement();
for (final Expression element : _derivedElement) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(formula);
String _evaluateExpression = this.evaluateExpression(element, null);
_builder.append(_evaluateExpression);
formula = _builder.toString();
}
return "\'".concat(formula).concat("\'");
}
/**
* <p>as the grammar makes use of expressions along an abstract syntax tree, we need this recursive dispatcher to synthesize resulting code.</p>
*/
public String evaluateExpression(final Expression element, final DatamartEntity entity) {
String evaluation = "";
String _value = element.getValue();
boolean _tripleNotEquals = (_value != null);
if (_tripleNotEquals) {
evaluation = element.getValue();
}
String _numberValue = element.getNumberValue();
boolean _tripleNotEquals_1 = (_numberValue != null);
if (_tripleNotEquals_1) {
evaluation = element.getNumberValue();
}
String _stringValue = element.getStringValue();
boolean _tripleNotEquals_2 = (_stringValue != null);
if (_tripleNotEquals_2) {
evaluation = "\'".concat(element.getStringValue()).concat("\'");
}
if (((element.isFiltered() || element.isSelected()) || element.isRanged())) {
StringConcatenation _builder = new StringConcatenation();
EObject _eContainer = element.eContainer();
Expression _left = ((ConditionalExpression) _eContainer).getLeft();
String _decorate = DatamartFilter.decorate(this.getAttributeName(((DatamartAttributeBase) _left), entity));
_builder.append(_decorate);
evaluation = _builder.toString();
}
boolean _isUnreferenced = element.isUnreferenced();
if (_isUnreferenced) {
EObject _eContainer_1 = element.eContainer();
Expression leftConditionExpression = ((ConditionalExpression) _eContainer_1).getLeft();
LEntityFeature entityF = null;
if ((leftConditionExpression instanceof DatamartReferenceBase)) {
EObject _eContainer_2 = element.eContainer();
Expression _left_1 = ((ConditionalExpression) _eContainer_2).getLeft();
entityF = ((DatamartReferenceBase) _left_1).getReferenceRef();
} else {
if ((leftConditionExpression instanceof DatamartAttributeBase)) {
EObject _eContainer_3 = element.eContainer();
Expression _left_2 = ((ConditionalExpression) _eContainer_3).getLeft();
entityF = ((DatamartAttributeBase) _left_2).getAttributeRef();
}
}
if ((entityF != null)) {
StringConcatenation _builder_1 = new StringConcatenation();
String _name = entityF.getEntity().getName();
_builder_1.append(_name);
_builder_1.append(".");
String _columnName = this._namingExtensions.toColumnName(entityF);
_builder_1.append(_columnName);
_builder_1.append(" is null");
evaluation = _builder_1.toString();
}
}
DatamartFunctionInterface _function = element.getFunction();
boolean _tripleNotEquals_3 = (_function != null);
if (_tripleNotEquals_3) {
DatamartFunctionInterface _function_1 = element.getFunction();
if ((_function_1 instanceof DatamartFunction)) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(evaluation);
String _levelName = this.getLevelName(element.getHierarchy(), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_2.append(_levelName);
_builder_2.append(".");
DatamartFunctionInterface _function_2 = element.getFunction();
String _name_1 = ((DatamartFunction) _function_2).getFunction().name();
_builder_2.append(_name_1);
evaluation = _builder_2.toString();
}
DatamartFunctionInterface _function_3 = element.getFunction();
if ((_function_3 instanceof DatamartParameterFunction)) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(evaluation);
String _levelName_1 = this.getLevelName(element.getHierarchy(), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_3.append(_levelName_1);
_builder_3.append(".");
DatamartFunctionInterface _function_4 = element.getFunction();
String _name_2 = ((DatamartParameterFunction) _function_4).getFunction().name();
_builder_3.append(_name_2);
_builder_3.append("(");
DatamartFunctionInterface _function_5 = element.getFunction();
int _value_1 = ((DatamartParameterFunction) _function_5).getParameter().getValue();
_builder_3.append(_value_1);
_builder_3.append(")");
evaluation = _builder_3.toString();
}
}
if (((element.getHierarchy() != null) && (element.getFunction() == null))) {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(evaluation);
String _levelName_2 = this.getLevelName(element.getHierarchy(), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_4.append(_levelName_2);
evaluation = _builder_4.toString();
}
if ((element instanceof DatamartSetTuple)) {
DatamartSetFunctionInterface _setFunction = ((DatamartSetTuple) element).getLeft().getSetFunction();
boolean _tripleNotEquals_4 = (_setFunction != null);
if (_tripleNotEquals_4) {
DatamartSetFunctionInterface _setFunction_1 = ((DatamartSetTuple) element).getLeft().getSetFunction();
if ((_setFunction_1 instanceof DatamartSetFunction)) {
StringConcatenation _builder_5 = new StringConcatenation();
_builder_5.append(evaluation);
DatamartSetFunctionInterface _setFunction_2 = ((DatamartSetTuple) element).getLeft().getSetFunction();
String _name_3 = ((DatamartSetFunction) _setFunction_2).getSetFunction().name();
_builder_5.append(_name_3);
_builder_5.append("(");
String _levelName_3 = this.getLevelName(((DatamartSetTuple) element).getRight(), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_5.append(_levelName_3);
_builder_5.append(")");
evaluation = _builder_5.toString();
}
DatamartSetFunctionInterface _setFunction_3 = ((DatamartSetTuple) element).getLeft().getSetFunction();
if ((_setFunction_3 instanceof DatamartSetParameterFunction)) {
StringConcatenation _builder_6 = new StringConcatenation();
_builder_6.append(evaluation);
DatamartSetFunctionInterface _setFunction_4 = ((DatamartSetTuple) element).getLeft().getSetFunction();
String _name_4 = ((DatamartSetParameterFunction) _setFunction_4).getSetFunction().name();
_builder_6.append(_name_4);
_builder_6.append("(");
String _levelName_4 = this.getLevelName(((DatamartSetTuple) element).getRight(), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_6.append(_levelName_4);
_builder_6.append(",");
DatamartSetFunctionInterface _setFunction_5 = ((DatamartSetTuple) element).getLeft().getSetFunction();
DatamartFunctionIntParameter _parameter = ((DatamartSetParameterFunction) _setFunction_5).getParameter();
int _value_2 = ((DatamartFunctionIntParameter) _parameter).getValue();
_builder_6.append(_value_2);
_builder_6.append(")");
evaluation = _builder_6.toString();
}
}
}
if ((element instanceof DatamartMeasure)) {
StringConcatenation _builder_7 = new StringConcatenation();
String _measureName = this.getMeasureName(((DatamartMeasure) element));
_builder_7.append(_measureName);
evaluation = _builder_7.toString();
}
if ((element instanceof DatamartDerivedMeasure)) {
StringConcatenation _builder_8 = new StringConcatenation();
String _derivedMeasureName = this.getDerivedMeasureName(((DatamartDerivedMeasure) element));
_builder_8.append(_derivedMeasureName);
evaluation = _builder_8.toString();
}
if ((element instanceof DatamartHierarchy)) {
StringConcatenation _builder_9 = new StringConcatenation();
String _levelName_5 = this.getLevelName(((DatamartHierarchy) element), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_9.append(_levelName_5);
evaluation = _builder_9.toString();
}
if ((element instanceof DatamartAttributeBase)) {
StringConcatenation _builder_10 = new StringConcatenation();
String _attributeName = this.getAttributeName(((DatamartAttributeBase) element), entity);
_builder_10.append(_attributeName);
evaluation = _builder_10.toString();
}
if ((element instanceof Multiplication)) {
StringConcatenation _builder_11 = new StringConcatenation();
String _evaluateExpression = this.evaluateExpression(((Multiplication) element).getLeft(), entity);
_builder_11.append(_evaluateExpression);
evaluation = _builder_11.toString();
StringConcatenation _builder_12 = new StringConcatenation();
_builder_12.append(evaluation);
_builder_12.append("*");
evaluation = _builder_12.toString();
StringConcatenation _builder_13 = new StringConcatenation();
_builder_13.append(evaluation);
String _evaluateExpression_1 = this.evaluateExpression(((Multiplication) element).getRight(), entity);
_builder_13.append(_evaluateExpression_1);
evaluation = _builder_13.toString();
}
if ((element instanceof Division)) {
StringConcatenation _builder_14 = new StringConcatenation();
String _evaluateExpression_2 = this.evaluateExpression(((Division) element).getLeft(), entity);
_builder_14.append(_evaluateExpression_2);
evaluation = _builder_14.toString();
StringConcatenation _builder_15 = new StringConcatenation();
_builder_15.append(evaluation);
_builder_15.append("/");
evaluation = _builder_15.toString();
StringConcatenation _builder_16 = new StringConcatenation();
_builder_16.append(evaluation);
String _evaluateExpression_3 = this.evaluateExpression(((Division) element).getRight(), entity);
_builder_16.append(_evaluateExpression_3);
evaluation = _builder_16.toString();
}
if ((element instanceof Addition)) {
StringConcatenation _builder_17 = new StringConcatenation();
_builder_17.append("(");
String _evaluateExpression_4 = this.evaluateExpression(((Addition) element).getLeft(), entity);
_builder_17.append(_evaluateExpression_4);
evaluation = _builder_17.toString();
StringConcatenation _builder_18 = new StringConcatenation();
_builder_18.append(evaluation);
_builder_18.append("+");
evaluation = _builder_18.toString();
StringConcatenation _builder_19 = new StringConcatenation();
_builder_19.append(evaluation);
String _evaluateExpression_5 = this.evaluateExpression(((Addition) element).getRight(), entity);
_builder_19.append(_evaluateExpression_5);
_builder_19.append(")");
evaluation = _builder_19.toString();
}
if ((element instanceof Subtraction)) {
StringConcatenation _builder_20 = new StringConcatenation();
_builder_20.append("(");
String _evaluateExpression_6 = this.evaluateExpression(((Subtraction) element).getLeft(), entity);
_builder_20.append(_evaluateExpression_6);
evaluation = _builder_20.toString();
StringConcatenation _builder_21 = new StringConcatenation();
_builder_21.append(evaluation);
_builder_21.append("-");
evaluation = _builder_21.toString();
StringConcatenation _builder_22 = new StringConcatenation();
_builder_22.append(evaluation);
String _evaluateExpression_7 = this.evaluateExpression(((Subtraction) element).getRight(), entity);
_builder_22.append(_evaluateExpression_7);
_builder_22.append(")");
evaluation = _builder_22.toString();
}
if ((element instanceof Conjunction)) {
StringConcatenation _builder_23 = new StringConcatenation();
String _evaluateExpression_8 = this.evaluateExpression(((Conjunction) element).getLeft(), entity);
_builder_23.append(_evaluateExpression_8);
evaluation = _builder_23.toString();
StringConcatenation _builder_24 = new StringConcatenation();
_builder_24.append(evaluation);
_builder_24.append(" and ");
evaluation = _builder_24.toString();
StringConcatenation _builder_25 = new StringConcatenation();
_builder_25.append(evaluation);
String _evaluateExpression_9 = this.evaluateExpression(((Conjunction) element).getRight(), entity);
_builder_25.append(_evaluateExpression_9);
evaluation = _builder_25.toString();
}
if ((element instanceof Disjunction)) {
StringConcatenation _builder_26 = new StringConcatenation();
_builder_26.append("(");
String _evaluateExpression_10 = this.evaluateExpression(((Disjunction) element).getLeft(), entity);
_builder_26.append(_evaluateExpression_10);
evaluation = _builder_26.toString();
StringConcatenation _builder_27 = new StringConcatenation();
_builder_27.append(evaluation);
_builder_27.append(" or ");
evaluation = _builder_27.toString();
StringConcatenation _builder_28 = new StringConcatenation();
_builder_28.append(evaluation);
String _evaluateExpression_11 = this.evaluateExpression(((Disjunction) element).getRight(), entity);
_builder_28.append(_evaluateExpression_11);
_builder_28.append(")");
evaluation = _builder_28.toString();
}
if ((element instanceof ConditionalExpression)) {
StringConcatenation _builder_29 = new StringConcatenation();
String _evaluateExpression_12 = this.evaluateExpression(((ConditionalExpression) element).getLeft(), entity);
_builder_29.append(_evaluateExpression_12);
evaluation = _builder_29.toString();
boolean optionalAllowed = true;
Expression _left_3 = ((ConditionalExpression) element).getLeft();
if ((_left_3 instanceof DatamartAttributeBase)) {
Expression _left_4 = ((ConditionalExpression) element).getLeft();
LScalarType type = ((DatamartAttributeBase) _left_4).getAttributeRef().getType();
if ((type instanceof LDataType)) {
boolean _isDate = ((LDataType)type).isDate();
boolean _not = (!_isDate);
optionalAllowed = _not;
}
}
boolean _isSelected = ((ConditionalExpression) element).getRight().isSelected();
if (_isSelected) {
StringConcatenation _builder_30 = new StringConcatenation();
_builder_30.append(evaluation);
_builder_30.append(" in ");
evaluation = _builder_30.toString();
StringConcatenation _builder_31 = new StringConcatenation();
_builder_31.append(evaluation);
_builder_31.append("(");
String _evaluateExpression_13 = this.evaluateExpression(((ConditionalExpression) element).getRight(), entity);
_builder_31.append(_evaluateExpression_13);
_builder_31.append(")");
evaluation = _builder_31.toString();
} else {
boolean _isRanged = ((ConditionalExpression) element).getRight().isRanged();
if (_isRanged) {
StringConcatenation _builder_32 = new StringConcatenation();
String _evaluateExpression_14 = this.evaluateExpression(((ConditionalExpression) element).getRight(), entity);
_builder_32.append(_evaluateExpression_14);
evaluation = _builder_32.toString();
} else {
boolean _isUnreferenced_1 = ((ConditionalExpression) element).getRight().isUnreferenced();
if (_isUnreferenced_1) {
StringConcatenation _builder_33 = new StringConcatenation();
String _evaluateExpression_15 = this.evaluateExpression(((ConditionalExpression) element).getRight(), entity);
_builder_33.append(_evaluateExpression_15);
evaluation = _builder_33.toString();
} else {
StringConcatenation _builder_34 = new StringConcatenation();
_builder_34.append(evaluation);
_builder_34.append(" ");
String _literal = ((ConditionalExpression) element).getOperator().getLiteral();
_builder_34.append(_literal);
_builder_34.append(" ");
evaluation = _builder_34.toString();
StringConcatenation _builder_35 = new StringConcatenation();
_builder_35.append(evaluation);
String _evaluateExpression_16 = this.evaluateExpression(((ConditionalExpression) element).getRight(), entity);
_builder_35.append(_evaluateExpression_16);
evaluation = _builder_35.toString();
}
}
}
if ((((ConditionalExpression) element).getRight().isOptional() && optionalAllowed)) {
StringConcatenation _builder_36 = new StringConcatenation();
_builder_36.append("(");
String _evaluateExpression_17 = this.evaluateExpression(((ConditionalExpression) element).getRight(), entity);
_builder_36.append(_evaluateExpression_17);
_builder_36.append("=");
_builder_36.append(IDataMart.SQLFILTERNOTHING);
_builder_36.append(" or ");
_builder_36.append(evaluation);
_builder_36.append(")");
evaluation = _builder_36.toString();
}
}
if ((element instanceof DatamartMemberTuple)) {
StringConcatenation _builder_37 = new StringConcatenation();
_builder_37.append("(");
String _evaluateExpression_18 = this.evaluateExpression(((DatamartMemberTuple) element).getRight(), entity);
_builder_37.append(_evaluateExpression_18);
evaluation = _builder_37.toString();
StringConcatenation _builder_38 = new StringConcatenation();
_builder_38.append(evaluation);
_builder_38.append(",");
evaluation = _builder_38.toString();
StringConcatenation _builder_39 = new StringConcatenation();
_builder_39.append(evaluation);
String _evaluateExpression_19 = this.evaluateExpression(((DatamartMemberTuple) element).getLeft(), entity);
_builder_39.append(_evaluateExpression_19);
_builder_39.append(")");
evaluation = _builder_39.toString();
}
if ((element instanceof DatamartAggregation)) {
DatamartAggregationFunctionInterface _aggregation = ((DatamartAggregation) element).getLeft().getAggregation();
boolean _tripleNotEquals_5 = (_aggregation != null);
if (_tripleNotEquals_5) {
DatamartAggregationFunctionInterface _aggregation_1 = ((DatamartAggregation) element).getLeft().getAggregation();
if ((_aggregation_1 instanceof DatamartAggregationFunction)) {
StringConcatenation _builder_40 = new StringConcatenation();
DatamartAggregationFunctionInterface _aggregation_2 = ((DatamartAggregation) element).getLeft().getAggregation();
String _name_5 = ((DatamartAggregationFunction) _aggregation_2).getAggregation().name();
_builder_40.append(_name_5);
_builder_40.append("(");
evaluation = _builder_40.toString();
Expression _set = ((DatamartAggregation) element).getLeft().getSet();
if ((_set instanceof DatamartHierarchy)) {
StringConcatenation _builder_41 = new StringConcatenation();
_builder_41.append(evaluation);
Expression _set_1 = ((DatamartAggregation) element).getLeft().getSet();
String _levelName_6 = this.getLevelName(((DatamartHierarchy) _set_1), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_41.append(_levelName_6);
evaluation = _builder_41.toString();
}
Expression _set_2 = ((DatamartAggregation) element).getLeft().getSet();
if ((_set_2 instanceof DatamartSetTuple)) {
StringConcatenation _builder_42 = new StringConcatenation();
_builder_42.append(evaluation);
Expression _set_3 = ((DatamartAggregation) element).getLeft().getSet();
String _evaluateExpression_20 = this.evaluateExpression(((DatamartSetTuple) _set_3), entity);
_builder_42.append(_evaluateExpression_20);
evaluation = _builder_42.toString();
}
}
}
StringConcatenation _builder_43 = new StringConcatenation();
_builder_43.append(evaluation);
_builder_43.append(",");
evaluation = _builder_43.toString();
StringConcatenation _builder_44 = new StringConcatenation();
_builder_44.append(evaluation);
String _evaluateExpression_21 = this.evaluateExpression(((DatamartAggregation) element).getRight(), entity);
_builder_44.append(_evaluateExpression_21);
_builder_44.append(")");
evaluation = _builder_44.toString();
}
if ((element instanceof DatamartSetAggregation)) {
DatamartAggregationFunctionInterface _aggregation_3 = ((DatamartSetAggregation) element).getLeft().getAggregation();
boolean _tripleNotEquals_6 = (_aggregation_3 != null);
if (_tripleNotEquals_6) {
DatamartAggregationFunctionInterface _aggregation_4 = ((DatamartSetAggregation) element).getLeft().getAggregation();
if ((_aggregation_4 instanceof DatamartSetAggregationFunction)) {
StringConcatenation _builder_45 = new StringConcatenation();
DatamartAggregationFunctionInterface _aggregation_5 = ((DatamartSetAggregation) element).getLeft().getAggregation();
String _name_6 = ((DatamartSetAggregationFunction) _aggregation_5).getAggregation().name();
_builder_45.append(_name_6);
_builder_45.append("(");
evaluation = _builder_45.toString();
Expression _set_4 = ((DatamartSetAggregation) element).getLeft().getSet();
if ((_set_4 instanceof DatamartHierarchy)) {
StringConcatenation _builder_46 = new StringConcatenation();
_builder_46.append(evaluation);
Expression _set_5 = ((DatamartSetAggregation) element).getLeft().getSet();
String _levelName_7 = this.getLevelName(((DatamartHierarchy) _set_5), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(true), Boolean.valueOf(false));
_builder_46.append(_levelName_7);
evaluation = _builder_46.toString();
}
Expression _set_6 = ((DatamartSetAggregation) element).getLeft().getSet();
if ((_set_6 instanceof DatamartSetTuple)) {
StringConcatenation _builder_47 = new StringConcatenation();
_builder_47.append(evaluation);
Expression _set_7 = ((DatamartSetAggregation) element).getLeft().getSet();
String _evaluateExpression_22 = this.evaluateExpression(((DatamartSetTuple) _set_7), entity);
_builder_47.append(_evaluateExpression_22);
evaluation = _builder_47.toString();
}
}
}
StringConcatenation _builder_48 = new StringConcatenation();
_builder_48.append(evaluation);
_builder_48.append(",");
DatamartAggregationFunctionInterface _aggregation_6 = ((DatamartSetAggregation) element).getLeft().getAggregation();
DatamartFunctionIntParameter _parameter_1 = ((DatamartSetAggregationFunction) _aggregation_6).getParameter();
int _value_3 = ((DatamartFunctionIntParameter) _parameter_1).getValue();
_builder_48.append(_value_3);
_builder_48.append(",");
evaluation = _builder_48.toString();
StringConcatenation _builder_49 = new StringConcatenation();
_builder_49.append(evaluation);
String _evaluateExpression_23 = this.evaluateExpression(((DatamartSetAggregation) element).getRight(), entity);
_builder_49.append(_evaluateExpression_23);
_builder_49.append(")");
evaluation = _builder_49.toString();
}
return evaluation;
}
/**
* <p>mdx syntax part for attribute names, full qualified and aliased>
*/
public String getAttributeName(final DatamartAttributeBase attribute, final DatamartEntity entity) {
if ((entity != null)) {
StringConcatenation _builder = new StringConcatenation();
String _entityAlias = this.getEntityAlias(entity);
_builder.append(_entityAlias);
_builder.append(".");
String _columnName = this._namingExtensions.toColumnName(attribute.getAttributeRef());
_builder.append(_columnName);
return _builder.toString();
} else {
StringConcatenation _builder_1 = new StringConcatenation();
EObject _eContainer = attribute.getAttributeRef().eContainer();
String _name = ((LEntity) _eContainer).getName();
_builder_1.append(_name);
_builder_1.append(".");
String _columnName_1 = this._namingExtensions.toColumnName(attribute.getAttributeRef());
_builder_1.append(_columnName_1);
return _builder_1.toString();
}
}
/**
* <p>mdx syntax part for measure names.</p>
*/
public String getMeasureName(final DatamartMeasure measure) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("[Measures].[");
String _name = measure.getMeasureRef().getName();
_builder.append(_name);
_builder.append("]");
return _builder.toString();
}
/**
* <p>mdx syntax part for derived measure names.</p>
*/
public String getDerivedMeasureName(final DatamartDerivedMeasure measure) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("[Measures].[");
String _name = measure.getDerivedRef().getName();
_builder.append(_name);
_builder.append("]");
return _builder.toString();
}
/**
* <p>mdx syntax part for dimension names.</p>
*/
public String getDimensionName(final DatamartHierarchy hierarchy, final Boolean withBrackets) {
String dim = "";
EObject _eContainer = hierarchy.getHierarchyRef().eContainer();
boolean _tripleNotEquals = (_eContainer != null);
if (_tripleNotEquals) {
String _name = hierarchy.getHierarchyRef().getName();
boolean _tripleEquals = (_name == null);
if (_tripleEquals) {
StringConcatenation _builder = new StringConcatenation();
{
if ((withBrackets).booleanValue()) {
_builder.append("[");
}
}
EObject _eContainer_1 = hierarchy.getHierarchyRef().eContainer();
String _name_1 = ((CubeDimension) _eContainer_1).getName();
_builder.append(_name_1);
{
if ((withBrackets).booleanValue()) {
_builder.append("]");
}
}
dim = _builder.toString();
} else {
StringConcatenation _builder_1 = new StringConcatenation();
{
if ((withBrackets).booleanValue()) {
_builder_1.append("[");
}
}
String _name_2 = hierarchy.getHierarchyRef().getName();
_builder_1.append(_name_2);
{
if ((withBrackets).booleanValue()) {
_builder_1.append("]");
}
}
dim = _builder_1.toString();
}
}
return dim;
}
/**
* <p>mdx syntax part for level names.</p>
*/
public String getLevelName(final DatamartHierarchy hierarchy, final Boolean withBrackets, final Boolean withFiltermask, final Boolean withFunctions, final Boolean isFilter) {
StringConcatenation _builder = new StringConcatenation();
String _dimensionName = this.getDimensionName(hierarchy, withBrackets);
_builder.append(_dimensionName);
String text = _builder.toString();
CubeLevel _levelRef = hierarchy.getLevelRef();
boolean _tripleNotEquals = (_levelRef != null);
if (_tripleNotEquals) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(text);
_builder_1.append(".");
text = _builder_1.toString();
if ((hierarchy.isFiltered() && (withFiltermask).booleanValue())) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(DatamartFilter.FILTER_PLACEHOLDER);
_builder_2.append(text);
text = _builder_2.toString();
}
if ((hierarchy.isSelected() && (withFiltermask).booleanValue())) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(DatamartFilter.FILTER_PLACEHOLDER);
_builder_3.append(text);
text = _builder_3.toString();
}
if ((withBrackets).booleanValue()) {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(text);
_builder_4.append("[");
text = _builder_4.toString();
}
StringConcatenation _builder_5 = new StringConcatenation();
_builder_5.append(text);
String _name = hierarchy.getLevelRef().getName();
_builder_5.append(_name);
text = _builder_5.toString();
if ((withBrackets).booleanValue()) {
StringConcatenation _builder_6 = new StringConcatenation();
_builder_6.append(text);
_builder_6.append("]");
text = _builder_6.toString();
}
if ((hierarchy.isFiltered() && (withFiltermask).booleanValue())) {
StringConcatenation _builder_7 = new StringConcatenation();
_builder_7.append(text);
_builder_7.append(DatamartFilter.FILTER_PLACEHOLDER);
text = _builder_7.toString();
}
if ((hierarchy.isSelected() && (withFiltermask).booleanValue())) {
StringConcatenation _builder_8 = new StringConcatenation();
_builder_8.append(text);
_builder_8.append(DatamartFilter.FILTER_PLACEHOLDER);
text = _builder_8.toString();
}
if ((hierarchy.isFiltered() || hierarchy.isSelected())) {
if ((hierarchy.isAll() && (withFunctions).booleanValue())) {
StringConcatenation _builder_9 = new StringConcatenation();
_builder_9.append(text);
_builder_9.append(".Children");
text = _builder_9.toString();
}
} else {
if ((withFunctions).booleanValue()) {
StringConcatenation _builder_10 = new StringConcatenation();
_builder_10.append(text);
_builder_10.append(".Members");
text = _builder_10.toString();
}
}
}
CubeLevel _levelRef_1 = hierarchy.getLevelRef();
boolean _tripleEquals = (_levelRef_1 == null);
if (_tripleEquals) {
if (((hierarchy.getHierarchyRef().eContainer() != null) &&
(!((CubeDimension) hierarchy.getHierarchyRef().eContainer()).isTypeTime()))) {
boolean _isAll = hierarchy.isAll();
if (_isAll) {
if ((hierarchy.isExcept() && (!(isFilter).booleanValue()))) {
StringConcatenation _builder_11 = new StringConcatenation();
_builder_11.append(text);
_builder_11.append(".Children");
text = _builder_11.toString();
} else {
StringConcatenation _builder_12 = new StringConcatenation();
_builder_12.append(text);
_builder_12.append(".Members");
text = _builder_12.toString();
}
} else {
if ((hierarchy.isAllMember() && hierarchy.getHierarchyRef().isAllMemberName())) {
StringConcatenation _builder_13 = new StringConcatenation();
_builder_13.append(text);
_builder_13.append(".[");
String _replaceAll = hierarchy.getHierarchyRef().getAllMemberNameValue().replaceAll("\"", "");
_builder_13.append(_replaceAll);
_builder_13.append("]");
text = _builder_13.toString();
} else {
boolean _isAllLevels = hierarchy.isAllLevels();
if (_isAllLevels) {
StringConcatenation _builder_14 = new StringConcatenation();
_builder_14.append(text);
_builder_14.append(".AllMembers");
text = _builder_14.toString();
} else {
if ((hierarchy.isDefaultMember() && hierarchy.getHierarchyRef().isDefaultMember())) {
StringConcatenation _builder_15 = new StringConcatenation();
_builder_15.append(text);
_builder_15.append(".Defaultmember");
text = _builder_15.toString();
} else {
boolean _isDefaultMember = hierarchy.getHierarchyRef().isDefaultMember();
if (_isDefaultMember) {
StringConcatenation _builder_16 = new StringConcatenation();
_builder_16.append(text);
_builder_16.append(".Defaultmember");
text = _builder_16.toString();
} else {
StringConcatenation _builder_17 = new StringConcatenation();
_builder_17.append(text);
_builder_17.append(".Members");
text = _builder_17.toString();
}
}
}
}
}
}
}
if ((hierarchy.isExcept() && (!(isFilter).booleanValue()))) {
StringConcatenation _builder_18 = new StringConcatenation();
_builder_18.append("Except(");
_builder_18.append(text);
_builder_18.append(",{");
_builder_18.append(DatamartFilter.FILTER_PLACEHOLDER);
String _dimensionName_1 = this.getDimensionName(hierarchy, Boolean.valueOf(true));
_builder_18.append(_dimensionName_1);
_builder_18.append(".");
{
if ((withBrackets).booleanValue()) {
_builder_18.append("[");
}
}
String _name_1 = hierarchy.getExceptRef().getName();
_builder_18.append(_name_1);
{
if ((withBrackets).booleanValue()) {
_builder_18.append("]");
}
}
_builder_18.append(DatamartFilter.FILTER_PLACEHOLDER);
_builder_18.append("})");
text = _builder_18.toString();
}
boolean _isOrdered = hierarchy.isOrdered();
if (_isOrdered) {
DatamartElement _orderRef = hierarchy.getOrderRef();
if ((_orderRef instanceof DatamartMeasure)) {
StringConcatenation _builder_19 = new StringConcatenation();
_builder_19.append("Order(");
_builder_19.append(text);
_builder_19.append(",");
DatamartElement _orderRef_1 = hierarchy.getOrderRef();
String _measureName = this.getMeasureName(((DatamartMeasure) _orderRef_1));
_builder_19.append(_measureName);
_builder_19.append(",");
{
boolean _isDescending = hierarchy.isDescending();
if (_isDescending) {
_builder_19.append("Desc");
} else {
_builder_19.append("Asc");
}
}
_builder_19.append(")");
text = _builder_19.toString();
} else {
StringConcatenation _builder_20 = new StringConcatenation();
_builder_20.append("Order(");
_builder_20.append(text);
_builder_20.append(",");
DatamartElement _orderRef_2 = hierarchy.getOrderRef();
String _derivedMeasureName = this.getDerivedMeasureName(((DatamartDerivedMeasure) _orderRef_2));
_builder_20.append(_derivedMeasureName);
_builder_20.append(",");
{
boolean _isDescending_1 = hierarchy.isDescending();
if (_isDescending_1) {
_builder_20.append("Desc");
} else {
_builder_20.append("Asc");
}
}
_builder_20.append(")");
text = _builder_20.toString();
}
}
StringConcatenation _builder_21 = new StringConcatenation();
_builder_21.append(text);
return _builder_21.toString();
}
/**
* <p>helper for entity names.</p>
*/
public String getEntityAlias(final DatamartEntity entity) {
return this.getEntityAlias(entity.getEntityRef());
}
/**
* <p>helper for entity names including aliases when used in recursive join relations.</p>
*/
public String getEntityAlias(final LEntity entityRef) {
String name = "";
boolean _hasSuperType = this.hasSuperType(entityRef);
if (_hasSuperType) {
name = entityRef.getSuperType().getName();
} else {
name = entityRef.getName();
}
String alias = name;
boolean _containsKey = this.sqlAliasCounter.containsKey(name);
if (_containsKey) {
Integer newId = this.sqlAliasCounter.get(name);
StringConcatenation _builder = new StringConcatenation();
_builder.append(alias);
{
if (((newId).intValue() > 0)) {
_builder.append(newId);
}
}
alias = _builder.toString();
}
return alias;
}
/**
* <p>helper for entity names including aliases when used in recursive join relations.</p>
*/
public String entityAlias2(final DatamartEntity entity) {
return this.entityAlias2(entity.getEntityRef());
}
public String entityAlias2(final LEntity entityRef) {
String name = "";
boolean _hasSuperType = this.hasSuperType(entityRef);
if (_hasSuperType) {
name = entityRef.getSuperType().getName();
} else {
name = entityRef.getName();
}
String alias = name;
boolean _containsKey = this.sqlAliasCounter.containsKey(name);
if (_containsKey) {
Integer newId = this.sqlAliasCounter.get(name);
this.sqlAliasCounter.put(name, Integer.valueOf(((newId).intValue() + 1)));
StringConcatenation _builder = new StringConcatenation();
_builder.append(alias);
_builder.append(((newId).intValue() + 1));
alias = _builder.toString();
} else {
this.sqlAliasCounter.put(name, Integer.valueOf(0));
}
return alias;
}
/**
* <p>main method to build sql statements bases on entities and roles.</p>
*/
public String createSQLStatements(final DatamartDefinition definition, final DatamartEntity entity, final Map<String, LAttribute> typesMap, final Map<String, LEntity> entityMap) {
return this.createSQLStatement(definition, typesMap, entityMap);
}
/**
* <p>main method to build sql statements bases on entities and a role.</p>
*/
public String createSQLStatement(final DatamartDefinition definition, final Map<String, LAttribute> typesMap, final Map<String, LEntity> entityMap) {
this.sqlAliasCounter.clear();
this.sqlFilterMap.clear();
this.sqlHasAggregate = false;
this.sqlHasOrder = false;
ArrayList<String> groupingList = CollectionLiterals.<String>newArrayList();
this.idMap.clear();
this.ignoreEntityGrouping = false;
HashMap<String, Pair<String, Integer>> attributes = CollectionLiterals.<String, Pair<String, Integer>>newHashMap();
ArrayList<String> conditions = CollectionLiterals.<String>newArrayList();
LinkedHashMap<String, Integer> orderings = CollectionLiterals.<String, Integer>newLinkedHashMap();
DatamartSource _source = definition.getSource();
DatamartEntity entity = ((DatamartEntity) _source);
String used = this.createEntity(entity, null, null, entityMap, attributes, conditions, orderings, typesMap, groupingList);
String select = this.createSelect(attributes, definition, entityMap);
String condition = this.createCondition(conditions);
String ordering = this.createOrdering(orderings);
String grouping = this.createGrouping(groupingList);
boolean _isEmpty = select.isEmpty();
if (_isEmpty) {
return "";
}
StringConcatenation _builder = new StringConcatenation();
_builder.append("select ");
_builder.append(select);
_builder.append(" from ");
_builder.append(used);
{
int _size = conditions.size();
boolean _greaterThan = (_size > 0);
if (_greaterThan) {
_builder.append(" where ");
_builder.append(condition);
}
}
{
if (this.sqlHasAggregate) {
_builder.append(" group by ");
_builder.append(grouping);
}
}
{
if (this.sqlHasOrder) {
_builder.append(" order by ");
_builder.append(ordering);
}
}
return _builder.toString();
}
/**
* <p>sql syntax part for group by.</p>
*/
public String createGrouping(final List<String> grouping) {
String groupingString = "";
for (final String groupBy : grouping) {
StringConcatenation _builder = new StringConcatenation();
{
boolean _isEmpty = groupingString.isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
_builder.append(groupingString);
_builder.append(",");
}
}
_builder.append(groupBy);
groupingString = _builder.toString();
}
return groupingString;
}
/**
* <p>sql syntax part for where.</p>
*/
public String createCondition(final ArrayList<String> conditions) {
String conditionString = "";
for (final String condition : conditions) {
StringConcatenation _builder = new StringConcatenation();
{
boolean _isEmpty = conditionString.isEmpty();
boolean _not = (!_isEmpty);
if (_not) {
_builder.append(conditionString);
_builder.append(" and ");
}
}
_builder.append("(");
_builder.append(condition);
_builder.append(")");
conditionString = _builder.toString();
}
return conditionString;
}
/**
* <p>sql syntax part for order.</p>
*/
public String createOrdering(final Map<String, Integer> orderings) {
int _size = orderings.size();
boolean _greaterThan = (_size > 0);
this.sqlHasOrder = _greaterThan;
final Function<Map.Entry<String, Integer>, String> _function = (Map.Entry<String, Integer> it) -> {
return it.getKey();
};
return orderings.entrySet().stream().sorted(Map.Entry.<String, Integer>comparingByValue().reversed()).<String>map(_function).collect(
Collectors.joining(","));
}
/**
* <p>sql syntax part for select.</p>
*/
public String createSelect(final Map<String, Pair<String, Integer>> attributes, final DatamartDefinition definition, final Map<String, LEntity> entityMap) {
String selectString = "";
DatamartSource _source = definition.getSource();
if ((_source instanceof DatamartEntity)) {
DatamartSource _source_1 = definition.getSource();
boolean _isSuppressAttributes = ((DatamartEntity) _source_1).isSuppressAttributes();
boolean _not = (!_isSuppressAttributes);
if (_not) {
final Comparator<Map.Entry<String, Pair<String, Integer>>> _function = (Map.Entry<String, Pair<String, Integer>> e1, Map.Entry<String, Pair<String, Integer>> e2) -> {
Integer _value = e2.getValue().getValue();
Integer _value_1 = e1.getValue().getValue();
return ((_value).intValue() - (_value_1).intValue());
};
final Function1<Map.Entry<String, Pair<String, Integer>>, String> _function_1 = (Map.Entry<String, Pair<String, Integer>> it) -> {
String _key = it.getKey();
String _plus = (_key + " as \\\"");
String _key_1 = it.getValue().getKey();
String _plus_1 = (_plus + _key_1);
return (_plus_1 + "\\\"");
};
selectString = IterableExtensions.join(ListExtensions.<Map.Entry<String, Pair<String, Integer>>, String>map(IterableExtensions.<Map.Entry<String, Pair<String, Integer>>>sortWith(attributes.entrySet(), _function), _function_1), ",");
StringConcatenation _builder = new StringConcatenation();
_builder.append(selectString);
selectString = _builder.toString();
}
}
this.datamartDtoMapper = "new DatamartDtoMapper()";
if ((definition != null)) {
if ((!this.ignoreEntityGrouping)) {
Collection<LEntity> _values = entityMap.values();
for (final LEntity entityRef : _values) {
{
String entityName = "";
boolean _hasSuperType = this.hasSuperType(entityRef);
if (_hasSuperType) {
entityName = entityRef.getSuperType().getName();
} else {
entityName = entityRef.getName();
}
String dtoFqn = EntityUtils.getDtoFQNForLEntity(entityRef);
String idColumn = DatamartDefinitionUtil.getEntityIdAliasName(entityRef);
LEntityAttribute _primaryKeyAttribute = entityRef.getPrimaryKeyAttribute();
boolean _tripleNotEquals = (_primaryKeyAttribute != null);
if (_tripleNotEquals) {
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(selectString);
{
boolean _isEmpty = selectString.isEmpty();
boolean _not_1 = (!_isEmpty);
if (_not_1) {
_builder_1.append(",");
}
}
_builder_1.append(entityName);
_builder_1.append(".");
String _name = entityRef.getPrimaryKeyAttribute().getName();
_builder_1.append(_name);
_builder_1.append(" as \\\"");
_builder_1.append(idColumn);
_builder_1.append("\\\"");
selectString = _builder_1.toString();
boolean _hasSuperType_1 = this.hasSuperType(entityRef);
if (_hasSuperType_1) {
this.idMap.put(idColumn, entityRef.getSuperType());
} else {
this.idMap.put(idColumn, entityRef);
}
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(this.datamartDtoMapper);
_builder_2.newLineIfNotEmpty();
_builder_2.append(".add(\"");
_builder_2.append(dtoFqn);
_builder_2.append("\", \"");
String _name_1 = entityRef.getPrimaryKeyAttribute().getName();
_builder_2.append(_name_1);
_builder_2.append("\", EType.");
IDataMart.EType _basicType = this.dtType.getBasicType(this.idMap.get(idColumn).getPrimaryKeyAttribute());
_builder_2.append(_basicType);
_builder_2.append(", \"");
_builder_2.append(idColumn);
_builder_2.append("\")");
this.datamartDtoMapper = _builder_2.toString();
}
}
}
}
}
return selectString;
}
public boolean hasSuperType(final DatamartEntity entity) {
return this.hasSuperType(entity.getEntityRef());
}
public boolean hasSuperType(final LEntity entityRef) {
return (((entityRef.getSuperType() != null) && (!entityRef.getSuperType().isMappedSuperclass())) &&
(!entityRef.getSuperType().equals(entityRef)));
}
/**
* <p>recursive entity relation builder.</p>
*/
public String createEntity(final DatamartEntity entity, final DatamartEntity parent, final DatamartNavigation parentNavigation, final Map<String, LEntity> entityMap, final Map<String, Pair<String, Integer>> attributes, final List<String> conditions, final LinkedHashMap<String, Integer> orderings, final Map<String, LAttribute> typesMap, final List<String> groupingList) {
String body = "";
String tableName = this._namingExtensions.toTableName(entity.getEntityRef());
boolean _hasSuperType = this.hasSuperType(entity);
if (_hasSuperType) {
StringConcatenation _builder = new StringConcatenation();
String _entityAlias = this.getEntityAlias(entity);
_builder.append(_entityAlias);
_builder.append(".disc=\'");
String _tableName = this._namingExtensions.toTableName(entity.getEntityRef());
_builder.append(_tableName);
_builder.append("\' ");
conditions.add(_builder.toString());
tableName = this._namingExtensions.toTableName(entity.getEntityRef().getSuperType());
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(body);
CharSequence _provideSchemaName = this.getProvideSchemaName(entity.getEntityRef().getPersistenceInfo().getSchemaName());
_builder_1.append(_provideSchemaName);
_builder_1.append(tableName);
_builder_1.append(" ");
String _entityAlias2 = this.entityAlias2(entity);
_builder_1.append(_entityAlias2);
body = _builder_1.toString();
if (((parent != null) && (parentNavigation != null))) {
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(" ");
_builder_2.append("left join ");
_builder_2.append(body, " ");
String _createJoin = this.createJoin(entity, parent, parentNavigation);
_builder_2.append(_createJoin, " ");
body = _builder_2.toString();
}
boolean _hasSuperType_1 = this.hasSuperType(entity);
if (_hasSuperType_1) {
StringConcatenation _builder_3 = new StringConcatenation();
_builder_3.append(body);
_builder_3.append(" left join ");
String _createSupertypeJoin = this.createSupertypeJoin(entity);
_builder_3.append(_createSupertypeJoin);
body = _builder_3.toString();
}
EList<DatamartNavigation> _navigations = entity.getNavigations();
for (final DatamartNavigation navigation : _navigations) {
{
if ((navigation instanceof DatamartMember)) {
StringConcatenation _builder_4 = new StringConcatenation();
_builder_4.append(body);
String _createEntity = this.createEntity(((DatamartMember) navigation).getDatamartEntity(), entity, navigation, entityMap, attributes, conditions, orderings, typesMap, groupingList);
_builder_4.append(_createEntity);
body = _builder_4.toString();
}
if ((navigation instanceof DatamartOwner)) {
StringConcatenation _builder_5 = new StringConcatenation();
_builder_5.append(body);
String _createEntity_1 = this.createEntity(((DatamartOwner) navigation).getDatamartEntity(), entity, navigation, entityMap, attributes, conditions, orderings, typesMap, groupingList);
_builder_5.append(_createEntity_1);
body = _builder_5.toString();
}
}
}
entityMap.put(this.getEntityAlias(entity), entity.getEntityRef());
if ((entity.getAttributes().isEmpty() && (!entity.isSuppressAttributes()))) {
List<LEntityAttribute> _allAttributes = entity.getEntityRef().getAllAttributes();
for (final LEntityAttribute attr : _allAttributes) {
if (((((!attr.isId()) && (!attr.isUuid())) && (!attr.isVersion())) && (!attr.isTransient()))) {
DatamartAttribute datamartAttr = DatamartDSLFactory.eINSTANCE.createDatamartAttribute();
datamartAttr.setAttributeRef(attr);
this.recurAttribute(entity, datamartAttr, false, "", Integer.valueOf(this.defaultColumnWeight), attributes, typesMap, groupingList);
}
}
} else {
EList<DatamartAttribute> _attributes = entity.getAttributes();
for (final DatamartAttribute attribute : _attributes) {
{
int columnWeight = this.defaultColumnWeight;
boolean _isHasColumnWeight = attribute.isHasColumnWeight();
if (_isHasColumnWeight) {
columnWeight = attribute.getColumnWeight();
}
this.recurAttribute(entity, attribute, attribute.isAggregated(), attribute.getAggregate().getName(), Integer.valueOf(columnWeight), attributes, typesMap, groupingList);
}
}
}
EList<DatamartCondition> _conditions = entity.getConditions();
for (final DatamartCondition condition : _conditions) {
conditions.add(this.evaluateExpression(condition.getCondition(), entity));
}
EList<DatamartOrder> _ordering = entity.getOrdering();
for (final DatamartOrder order : _ordering) {
{
Integer columnWeight = null;
boolean _isHasColumnWeight = order.isHasColumnWeight();
if (_isHasColumnWeight) {
columnWeight = Integer.valueOf(order.getColumnWeight());
} else {
columnWeight = Integer.valueOf(this.defaultColumnWeight);
}
String _entityAlias_1 = this.getEntityAlias(entity);
String _plus = (_entityAlias_1 + ".");
String _columnName = this._namingExtensions.toColumnName(order.getOrderBy());
String _plus_1 = (_plus + _columnName);
String _plus_2 = (_plus_1 + " ");
String _name = order.getOrderHow().getName();
String _plus_3 = (_plus_2 + _name);
orderings.put(_plus_3, columnWeight);
}
}
return body;
}
public void recurAttribute(final DatamartEntity entity, final DatamartAttribute datamartAttr, final boolean aggregated, final String aggregateName, final Integer columnWeight, final Map<String, Pair<String, Integer>> attributes, final Map<String, LAttribute> typesMap, final List<String> groupingList) {
LEntityAttribute attr = datamartAttr.getAttributeRef();
LScalarType type = attr.getType();
if ((type instanceof LBean)) {
LBean bean = ((LBean) type);
List<LBeanAttribute> _allAttributes = bean.getAllAttributes();
for (final LBeanAttribute battr : _allAttributes) {
LScalarType _type = battr.getType();
if ((_type instanceof LBean)) {
this.recurAttribute(entity, battr, aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
} else {
this.addAttribute(entity, battr, aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
}
}
} else {
this.addAttribute(entity, datamartAttr, aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
}
}
private void recurAttribute(final DatamartEntity entity, final LAttribute attr, final boolean aggregated, final String aggregateName, final Integer columnWeight, final Map<String, Pair<String, Integer>> attributes, final Map<String, LAttribute> typesMap, final List<String> groupingList) {
LScalarType type = attr.getType();
if ((type instanceof LBean)) {
LBean bean = ((LBean) type);
List<LBeanAttribute> _allAttributes = bean.getAllAttributes();
for (final LBeanAttribute battr : _allAttributes) {
LScalarType _type = battr.getType();
if ((_type instanceof LBean)) {
this.recurAttribute(entity, battr, aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
} else {
this.addAttribute(entity, battr, aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
}
}
} else {
this.addAttribute(entity, attr, aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
}
}
public String aliasedColumnName(final LEntity entityRef, final LAttribute attr) {
String name = "";
boolean _hasSuperType = this.hasSuperType(entityRef);
if (_hasSuperType) {
boolean _contains = entityRef.getSuperType().getAllAttributes().contains(attr);
if (_contains) {
name = entityRef.getSuperType().getName();
} else {
name = entityRef.getName();
}
} else {
name = entityRef.getName();
}
String alias = name;
boolean _containsKey = this.sqlAliasCounter.containsKey(name);
if (_containsKey) {
Integer newId = this.sqlAliasCounter.get(name);
StringConcatenation _builder = new StringConcatenation();
_builder.append(alias);
{
if (((newId).intValue() > 0)) {
_builder.append(newId);
}
}
alias = _builder.toString();
}
String _columnName = this._namingExtensions.toColumnName(attr);
return ((alias + ".") + _columnName);
}
public void addAttribute(final DatamartEntity datamartEntity, final DatamartAttribute datamartAttr, final boolean aggregated, final String aggregateName, final Integer columnWeight, final Map<String, Pair<String, Integer>> attributes, final Map<String, LAttribute> typesMap, final List<String> groupingList) {
LEntityAttribute attr = datamartAttr.getAttributeRef();
this.addAttribute(datamartEntity, attr, DatamartAttributeUtil.getAliasedAttributeName(datamartAttr), aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
}
public void addAttribute(final DatamartEntity datamartEntity, final LAttribute attr, final boolean aggregated, final String aggregateName, final Integer columnWeight, final Map<String, Pair<String, Integer>> attributes, final Map<String, LAttribute> typesMap, final List<String> groupingList) {
StringConcatenation _builder = new StringConcatenation();
String _name = null;
if (attr!=null) {
_name=attr.getName();
}
String _replace = null;
if (_name!=null) {
_replace=_name.replace("^", "");
}
_builder.append(_replace);
String attributeName = _builder.toString();
this.addAttribute(datamartEntity, attr, attributeName, aggregated, aggregateName, columnWeight, attributes, typesMap, groupingList);
}
private void addAttribute(final DatamartEntity datamartEntity, final LAttribute attr, final String attributeName, final boolean aggregated, final String aggregateName, final Integer columnWeight, final Map<String, Pair<String, Integer>> attributes, final Map<String, LAttribute> typesMap, final List<String> groupingList) {
LEntity entity = datamartEntity.getEntityRef();
String key = this.aliasedColumnName(entity, attr);
String attrName = "";
String typesAttr = "";
boolean _hasSuperType = this.hasSuperType(entity);
if (_hasSuperType) {
boolean _contains = entity.getSuperType().getAllAttributes().contains(attr);
if (_contains) {
String _name = entity.getSuperType().getName();
String _plus = (_name + ".");
String _plus_1 = (_plus + attributeName);
attrName = _plus_1;
String _name_1 = entity.getSuperType().getName();
String _plus_2 = (_name_1 + ".");
String _plus_3 = (_plus_2 + attributeName);
typesAttr = _plus_3;
} else {
String _name_2 = entity.getName();
String _plus_4 = (_name_2 + ".");
String _plus_5 = (_plus_4 + attributeName);
attrName = _plus_5;
String _name_3 = entity.getName();
String _plus_6 = (_name_3 + ".");
String _plus_7 = (_plus_6 + attributeName);
typesAttr = _plus_7;
}
} else {
String _name_4 = entity.getName();
String _plus_8 = (_name_4 + ".");
String _plus_9 = (_plus_8 + attributeName);
attrName = _plus_9;
String _name_5 = entity.getName();
String _plus_10 = (_name_5 + ".");
String _plus_11 = (_plus_10 + attributeName);
typesAttr = _plus_11;
}
typesMap.put(typesAttr, attr);
if (aggregated) {
StringConcatenation _builder = new StringConcatenation();
_builder.append(aggregateName);
_builder.append("(");
_builder.append(key);
_builder.append(")");
key = _builder.toString();
this.sqlHasAggregate = true;
String _string = key.toString();
Pair<String, Integer> _pair = new Pair<String, Integer>(attributeName, columnWeight);
attributes.put(_string, _pair);
this.ignoreEntityGrouping = true;
} else {
groupingList.add(key.toString());
String _string_1 = key.toString();
Pair<String, Integer> _pair_1 = new Pair<String, Integer>(attributeName, columnWeight);
attributes.put(_string_1, _pair_1);
}
}
public CharSequence getProvideSchemaName(final String schemaName) {
StringConcatenation _builder = new StringConcatenation();
{
if (((schemaName != null) && (schemaName.length() > 0))) {
_builder.append(schemaName);
_builder.append(".");
}
}
return _builder;
}
/**
* <p>sql syntax part for joined relations.</p>
*/
public String createJoin(final DatamartEntity entity, final DatamartEntity parent, final DatamartNavigation navigation) {
String _xblockexpression = null;
{
String join = "";
DatamartReference joinRef = navigation.getJoinRef();
String _xifexpression = null;
if ((joinRef instanceof DatamartReference)) {
String _xblockexpression_1 = null;
{
String name = this._namingExtensions.toColumnName(joinRef.getRef());
if ((navigation instanceof DatamartMember)) {
List<LEntityReference> refs = ((DatamartMember)navigation).getDatamartEntity().getEntityRef().getAllReferences();
for (final LEntityReference ref : refs) {
if ((((ref.getType() != null) && ref.getType().equals(parent.getEntityRef())) && ref.getOpposite().getName().equals(joinRef.getRef().getName()))) {
name = this._namingExtensions.toColumnName(ref);
}
}
StringConcatenation _builder = new StringConcatenation();
String _entityAlias = this.getEntityAlias(entity);
_builder.append(_entityAlias);
_builder.append(".");
_builder.append(name);
_builder.append("=");
String _entityAlias_1 = this.getEntityAlias(parent);
_builder.append(_entityAlias_1);
_builder.append(".");
String _idAttributeName = parent.getEntityRef().getIdAttributeName();
_builder.append(_idAttributeName);
join = _builder.toString();
} else {
if ((navigation instanceof DatamartOwner)) {
StringConcatenation _builder_1 = new StringConcatenation();
String _entityAlias_2 = this.getEntityAlias(entity);
_builder_1.append(_entityAlias_2);
_builder_1.append(".");
String _idAttributeName_1 = entity.getEntityRef().getIdAttributeName();
_builder_1.append(_idAttributeName_1);
_builder_1.append("=");
String _entityAlias_3 = this.getEntityAlias(parent);
_builder_1.append(_entityAlias_3);
_builder_1.append(".");
_builder_1.append(name);
join = _builder_1.toString();
}
}
StringConcatenation _builder_2 = new StringConcatenation();
_builder_2.append(" ");
_builder_2.append("on(");
_builder_2.append(join, " ");
_builder_2.append(")");
_xblockexpression_1 = join = _builder_2.toString();
}
_xifexpression = _xblockexpression_1;
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
public String createSupertypeJoin(final DatamartEntity entity) {
String _xblockexpression = null;
{
String subTypeAlias = entity.getEntityRef().getName();
boolean _containsKey = this.sqlAliasCounter.containsKey(entity.getEntityRef().getName());
if (_containsKey) {
Integer newId = this.sqlAliasCounter.get(entity.getEntityRef().getName());
StringConcatenation _builder = new StringConcatenation();
_builder.append(subTypeAlias);
{
if (((newId).intValue() > 0)) {
_builder.append(newId);
}
}
subTypeAlias = _builder.toString();
}
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append(subTypeAlias);
_builder_1.append(".");
String _idAttributeName = entity.getEntityRef().getIdAttributeName();
_builder_1.append(_idAttributeName);
_builder_1.append("=");
String _entityAlias = this.getEntityAlias(entity.getEntityRef().getSuperType());
_builder_1.append(_entityAlias);
_builder_1.append(".");
String _idAttributeName_1 = entity.getEntityRef().getSuperType().getIdAttributeName();
_builder_1.append(_idAttributeName_1);
String join = _builder_1.toString();
StringConcatenation _builder_2 = new StringConcatenation();
CharSequence _provideSchemaName = this.getProvideSchemaName(entity.getEntityRef().getPersistenceInfo().getSchemaName());
_builder_2.append(_provideSchemaName);
String _tableName = this._namingExtensions.toTableName(entity.getEntityRef());
_builder_2.append(_tableName);
_builder_2.append(" ");
_builder_2.append(subTypeAlias);
_builder_2.append(" on(");
_builder_2.append(join);
_builder_2.append(")");
_xblockexpression = join = _builder_2.toString();
}
return _xblockexpression;
}
/**
* get a set of entities used by the datamart
*/
public Set<LEntity> findAllEntities(final DatamartDefinition datamart) {
HashSet<LEntity> entities = new HashSet<LEntity>();
DatamartSource _source = datamart.getSource();
boolean _matched = false;
if (_source instanceof DatamartEntity) {
_matched=true;
DatamartSource _source_1 = datamart.getSource();
this.findAllEntites(((DatamartEntity) _source_1), entities);
}
if (!_matched) {
if (_source instanceof DatamartCube) {
_matched=true;
DatamartSource _source_1 = datamart.getSource();
this.findAllEntites(((DatamartCube) _source_1), entities);
}
}
return entities;
}
/**
* add all entities used by the datamart entity into the given set of entities
*/
public void findAllEntites(final DatamartEntity datamartEntity, final Set<LEntity> entities) {
entities.add(datamartEntity.getEntityRef());
EList<DatamartNavigation> _navigations = datamartEntity.getNavigations();
for (final DatamartNavigation navigation : _navigations) {
this.findAllEntites(navigation.getDatamartEntity(), entities);
}
}
/**
* add all entities used by the datamart cube into the given set of entities
*/
public void findAllEntites(final DatamartCube datamartCube, final Set<LEntity> entities) {
entities.add(datamartCube.getCubeRef().getCubeTypeEntity().getEntityRef().getEntityValue());
EList<CubeDimensionUsage> _dimensionUsages = datamartCube.getCubeRef().getCubeTypeEntity().getDimensionUsages();
for (final CubeDimensionUsage dimensionUsage : _dimensionUsages) {
EList<CubeHierarchy> _hierarchies = dimensionUsage.getSourceValue().getHierarchies();
for (final CubeHierarchy hierarchy : _hierarchies) {
entities.add(hierarchy.getCubeDimEntity().getEntityRef().getEntityValue());
}
}
}
public List<DatamartAttribute> allEntityAttributes(final DatamartDefinition datamart) {
ArrayList<DatamartAttribute> attributes = CollectionLiterals.<DatamartAttribute>newArrayList();
DatamartSource _source = datamart.getSource();
if ((_source instanceof DatamartEntity)) {
DatamartSource _source_1 = datamart.getSource();
attributes = this.allEntityAttributes(((DatamartEntity) _source_1), "");
}
return attributes;
}
/**
* add all entities used by the datamart entity into the given set of entities
*/
public ArrayList<DatamartAttribute> allEntityAttributes(final DatamartEntity datamartEntity, final String refPrefix) {
ArrayList<DatamartAttribute> _xblockexpression = null;
{
ArrayList<DatamartAttribute> entityAttributes = this.entityAttributes(datamartEntity);
EList<DatamartNavigation> _navigations = datamartEntity.getNavigations();
for (final DatamartNavigation navigation : _navigations) {
this.allEntityAttributes(navigation.getDatamartEntity(), navigation.getJoinRef().getRef().getName());
}
LEntityAttribute primary = datamartEntity.getEntityRef().getPrimaryKeyAttribute();
DatamartAttribute attribute = DatamartDSLFactory.eINSTANCE.createDatamartAttribute();
attribute.setAttributeRef(primary);
attribute.setAliased(true);
StringConcatenation _builder = new StringConcatenation();
_builder.append(refPrefix);
{
if ((primary != null)) {
{
boolean _isEmpty = refPrefix.isEmpty();
if (_isEmpty) {
String _firstLower = StringExtensions.toFirstLower(primary.getName());
_builder.append(_firstLower);
} else {
String _firstUpper = StringExtensions.toFirstUpper(primary.getName());
_builder.append(_firstUpper);
}
}
}
}
attribute.setAliasName(_builder.toString());
entityAttributes.add(attribute);
_xblockexpression = entityAttributes;
}
return _xblockexpression;
}
private ArrayList<DatamartAttribute> entityAttributes(final DatamartEntity entity) {
ArrayList<DatamartAttribute> _xblockexpression = null;
{
ArrayList<DatamartAttribute> entityAttributes = CollectionLiterals.<DatamartAttribute>newArrayList();
EList<DatamartAttribute> _attributes = entity.getAttributes();
for (final DatamartAttribute attribute : _attributes) {
entityAttributes.add(attribute);
}
if ((entityAttributes.isEmpty() && (!entity.isSuppressAttributes()))) {
List<LEntityAttribute> _allAttributes = entity.getEntityRef().getAllAttributes();
for (final LEntityAttribute attr : _allAttributes) {
if (((((!attr.isId()) && (!attr.isUuid())) && (!attr.isVersion())) && (!attr.isTransient()))) {
entityAttributes.add(this.createDatamartAttribute(attr));
}
}
}
_xblockexpression = entityAttributes;
}
return _xblockexpression;
}
private DatamartAttribute createDatamartAttribute(final LEntityAttribute attr) {
DatamartAttribute _xblockexpression = null;
{
DatamartAttribute datamartAttr = DatamartDSLFactory.eINSTANCE.createDatamartAttribute();
datamartAttr.setAttributeRef(attr);
DatamartAxis datamartAxis = DatamartDSLFactory.eINSTANCE.createDatamartAxis();
datamartAxis.setName(AxisEnum.COLUMNS);
datamartAttr.setAxis(datamartAxis);
_xblockexpression = datamartAttr;
}
return _xblockexpression;
}
public void infer(final EObject datamart, final IJvmDeclaredTypeAcceptor acceptor, final boolean isPreIndexingPhase) {
if (datamart instanceof DatamartPackage) {
_infer((DatamartPackage)datamart, acceptor, isPreIndexingPhase);
return;
} else if (datamart != null) {
_infer(datamart, acceptor, isPreIndexingPhase);
return;
} else {
throw new IllegalArgumentException("Unhandled parameter types: " +
Arrays.<Object>asList(datamart, acceptor, isPreIndexingPhase).toString());
}
}
}