blob: d9b35b694028eabf8dab1e1e6f09f3036d0b111e [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 v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.xtext.datamartdsl.util;
import com.google.common.base.Objects;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.inject.Inject;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
import org.eclipse.osbp.xtext.datamartdsl.EventBrokerDataMart;
import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Extension;
@SuppressWarnings("all")
public class EventBrokerDatamartUtils {
@Inject
@Extension
private DatamartDSLJvmModelInferrer datamartInferrer;
public HashMap<String, String> getUsedFilterInDatamart(final EventBrokerDataMart datamart, final HashMap<String, String> filterIdMap) {
HashMap<String, String> usedFilterIdMap = CollectionLiterals.<String, String>newHashMap();
Set<Map.Entry<String, String>> _entrySet = filterIdMap.entrySet();
for (final Map.Entry<String, String> filter : _entrySet) {
String _filter = datamart.getFilter();
String _value = filter.getValue();
boolean _equals = _filter.equals(_value);
if (_equals) {
String _key = filter.getKey();
String _value_1 = filter.getValue();
usedFilterIdMap.put(_key, _value_1);
}
}
return usedFilterIdMap;
}
public HashMap<String, String> getFilterMap(final EventBrokerDataMart datamart) {
HashMap<String, String> filterIdMap = new HashMap<String, String>();
DatamartDefinition _datamartDef = datamart.getDatamartDef();
this.datamartInferrer.createFilterMap(_datamartDef, filterIdMap);
return filterIdMap;
}
public void removeAlreadyUsedFilter(final EList<EventBrokerDataMart> datamarts, final HashMap<String, HashMap<String, String>> datamartsFilterMap) {
for (final EventBrokerDataMart dat : datamarts) {
String _filter = dat.getFilter();
boolean _notEquals = (!Objects.equal(_filter, null));
if (_notEquals) {
DatamartDefinition _datamartDef = dat.getDatamartDef();
String _name = _datamartDef.getName();
HashMap<String, String> _get = datamartsFilterMap.get(_name);
HashMap<String, String> filterIdMap = ((HashMap<String, String>) _get);
boolean _notEquals_1 = (!Objects.equal(filterIdMap, null));
if (_notEquals_1) {
Object _clone = filterIdMap.clone();
HashMap<String, String> filterIdMapTemp = ((HashMap<String, String>) _clone);
Set<Map.Entry<String, String>> _entrySet = filterIdMapTemp.entrySet();
for (final Map.Entry<String, String> filter : _entrySet) {
String _filter_1 = dat.getFilter();
String _value = filter.getValue();
boolean _equals = _filter_1.equals(_value);
if (_equals) {
String _key = filter.getKey();
filterIdMap.remove(_key);
}
}
}
}
}
}
public HashMap<String, String> getFilterMap(final EList<EventBrokerDataMart> datamarts) {
HashMap<String, String> filterMap = CollectionLiterals.<String, String>newHashMap();
return this.getFilterMap(datamarts, filterMap);
}
public HashMap<String, String> getFilterMap(final EList<EventBrokerDataMart> datamarts, final HashMap<String, String> filterMap) {
boolean _notEquals = (!Objects.equal(filterMap, null));
if (_notEquals) {
for (final EventBrokerDataMart datamart : datamarts) {
HashMap<String, String> _filterMap = this.getFilterMap(datamart);
HashMap<String, String> _usedFilterInDatamart = this.getUsedFilterInDatamart(datamart, _filterMap);
filterMap.putAll(_usedFilterInDatamart);
}
}
return filterMap;
}
public HashMap<String, HashMap<String, String>> getUsedFilterMap(final EList<EventBrokerDataMart> datamarts) {
HashMap<String, HashMap<String, String>> usedFilterMap = CollectionLiterals.<String, HashMap<String, String>>newHashMap();
for (final EventBrokerDataMart dat : datamarts) {
boolean _and = false;
boolean _notEquals = (!Objects.equal(dat, null));
if (!_notEquals) {
_and = false;
} else {
DatamartDefinition _datamartDef = dat.getDatamartDef();
boolean _notEquals_1 = (!Objects.equal(_datamartDef, null));
_and = _notEquals_1;
}
if (_and) {
DatamartDefinition _datamartDef_1 = dat.getDatamartDef();
String _name = _datamartDef_1.getName();
HashMap<String, String> _filterMap = this.getFilterMap(dat);
usedFilterMap.put(_name, _filterMap);
}
}
return usedFilterMap;
}
public void fillResultWithFilter(final EList<EventBrokerDataMart> datamarts, final HashMap<String, HashMap<String, String>> usedDatamartsFilterMap, final ArrayList<EObject> result) {
for (final EventBrokerDataMart dat : datamarts) {
boolean _and = false;
boolean _and_1 = false;
boolean _and_2 = false;
boolean _notEquals = (!Objects.equal(dat, null));
if (!_notEquals) {
_and_2 = false;
} else {
DatamartDefinition _datamartDef = dat.getDatamartDef();
boolean _notEquals_1 = (!Objects.equal(_datamartDef, null));
_and_2 = _notEquals_1;
}
if (!_and_2) {
_and_1 = false;
} else {
DatamartDefinition _datamartDef_1 = dat.getDatamartDef();
String _name = _datamartDef_1.getName();
boolean _containsKey = usedDatamartsFilterMap.containsKey(_name);
_and_1 = _containsKey;
}
if (!_and_1) {
_and = false;
} else {
DatamartDefinition _datamartDef_2 = dat.getDatamartDef();
String _name_1 = _datamartDef_2.getName();
HashMap<String, String> _get = usedDatamartsFilterMap.get(_name_1);
boolean _isEmpty = _get.isEmpty();
boolean _not = (!_isEmpty);
_and = _not;
}
if (_and) {
DatamartDefinition _datamartDef_3 = dat.getDatamartDef();
result.add(_datamartDef_3);
}
}
}
public CharSequence getEventBrokerMsgs(final EList<EventBrokerDataMart> datamarts) {
StringConcatenation _builder = new StringConcatenation();
{
for(final EventBrokerDataMart datamart : datamarts) {
_builder.append("eventBroker.send(\"");
String _filter = datamart.getFilter();
_builder.append(_filter, "");
_builder.append("/clear\", selectedItem);");
_builder.newLineIfNotEmpty();
_builder.append("eventBroker.send(\"");
String _filter_1 = datamart.getFilter();
_builder.append(_filter_1, "");
_builder.append("\", selectedItem);");
_builder.newLineIfNotEmpty();
}
}
return _builder;
}
}