blob: 853d0c38a023fa608d2ce951cfaab481c2388070 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.xtext.reportdsl.jvmmodel;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.birt.report.model.api.DataItemHandle;
import org.eclipse.birt.report.model.api.ElementFactory;
import org.eclipse.birt.report.model.api.OdaDataSetHandle;
import org.eclipse.birt.report.model.api.ReportDesignHandle;
import org.eclipse.birt.report.model.api.SharedStyleHandle;
import org.eclipse.birt.report.model.api.elements.structures.ComputedColumn;
import org.eclipse.birt.report.model.api.elements.structures.EmbeddedImage;
import org.eclipse.birt.report.model.api.elements.structures.OdaResultSetColumn;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.birt.report.model.elements.DataItem;
import org.eclipse.birt.report.model.elements.interfaces.IDataItemModel;
import org.eclipse.birt.report.model.metadata.ElementPropertyDefn;
import org.eclipse.osbp.xtext.datamartdsl.DatamartRole;
import org.eclipse.osbp.xtext.reportdsl.Media;
import org.eclipse.osbp.xtext.reportdsl.MediaStyle;
import org.eclipse.osbp.xtext.reportdsl.Report;
import org.eclipse.osbp.xtext.reportdsl.Style;
/**
* only use inside {@link ReportModelGenerator}
*/
public class ReportGeneratorWorkSet {
public ReportModelGenerator generator;
public Report report;
public ReportDesignHandle design;
public ElementFactory factory;
public Map<String,OdaDataSetHandle> dataSets = new HashMap<>();
private Map<String,ArrayList<OdaResultSetColumn>> fResultSetColumns = new HashMap<>();
private Map<String,ArrayList<ComputedColumn>> fComputedColumns = new HashMap<>();
public int fPosition = 0;
private Map<String,SharedStyleHandle> fStyles = new HashMap<String, SharedStyleHandle>();
private Map<String,EmbeddedImage> fEmbeddedImages = new HashMap<>();
private String translatorPackageName;
private String resultSetTranslatorPackageName;
private Media fRequestedMedia;
public DatamartRole role;
public class DataItemForDsl extends DataItem {
private String fResultSetColumn = null;
public DataItemForDsl(String name) {
super(name);
}
@Override
public void setProperty(ElementPropertyDefn prop, Object value) {
if (IDataItemModel.RESULT_SET_COLUMN_PROP.equals(prop.getName())) {
if ((fResultSetColumn == null) && (value instanceof String)) {
fResultSetColumn = (String) value;
super.setProperty(prop, value);
}
else if ((fResultSetColumn != null) && !fResultSetColumn.equals(value)) {
System.err.println("re-set? "+IDataItemModel.RESULT_SET_COLUMN_PROP+" "+fResultSetColumn+" --> "+value);
}
}
else {
super.setProperty(prop, value);
}
}
}
public void setRequestedMedia(Media requestedMedia) {
fRequestedMedia = requestedMedia;
}
public boolean isRequestedMedia(Media checkMedia) {
if (fRequestedMedia == null) {
return false;
}
return fRequestedMedia.equals(checkMedia);
}
public boolean isRequestedMedia(MediaStyle checkMediaStyle) {
if (checkMediaStyle == null) {
return false;
}
return isRequestedMedia(checkMediaStyle.getMedia());
}
public DataItemHandle newDataItem (String name) {
DataItemForDsl element = new DataItemForDsl(name);
design.getModule().makeUniqueName( element );
return element.handle(design.getModule());
}
public void putResultSetColumns(String dataSetName, ArrayList<OdaResultSetColumn> resultSetColumns) {
fResultSetColumns.put(dataSetName, resultSetColumns);
}
public ArrayList<OdaResultSetColumn> getResultSetColumns(String dataSetName) {
return fResultSetColumns.get(dataSetName);
}
public void putComputedColumns(String dataSetName, ArrayList<ComputedColumn> computedColumns) {
fComputedColumns.put(dataSetName, computedColumns);
}
public ArrayList<ComputedColumn> getComputedColumns(String dataSetName) {
return fComputedColumns.get(dataSetName);
}
public void putStyleHandleByName(Style style, SharedStyleHandle styleHandle) {
fStyles.put(style.getName(), styleHandle);
}
public SharedStyleHandle getStyleHandleByName(Style style) {
return fStyles.get(style.getName());
}
public void putEmbeddedImage(String imageId, EmbeddedImage embeddedImage) {
fEmbeddedImages.put(imageId, embeddedImage);
}
public EmbeddedImage getEmbeddedImage(String imageId) {
return fEmbeddedImages.get(imageId);
}
}