package org.orienteer.birt.component.service; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.util.Map; import java.util.Set; import org.apache.wicket.model.IModel; import org.eclipse.birt.report.engine.api.EngineException; import org.orienteer.birt.component.widget.AbstractBirtWidget; import com.orientechnologies.orient.core.record.impl.ODocument; /** * Object for BIRT report configuration. Based on ODocument * */ public class BirtReportODocumentConfig implements IBirtReportConfig{ /** * */ private static final long serialVersionUID = 1L; private Map<String, Object> parameters; private Set<Object> visibleParameters; private boolean useLocalDB; private IModel<ODocument> configDocModel; public BirtReportODocumentConfig(IModel<ODocument> configDocModel,Map<String,Object> additionalParameters) throws EngineException { ODocument modelObject = configDocModel.getObject(); byte[] reportData = modelObject.field(AbstractBirtWidget.REPORT_FIELD_NAME); if (reportData==null || reportData.length==0){ throw new EngineException("Configure report first"); } Map<String,Object> parameters = modelObject.field(AbstractBirtWidget.PARAMETERS_FIELD_NAME); if (additionalParameters!=null){ parameters.putAll(additionalParameters); } Boolean isUseLocalDB = modelObject.field(AbstractBirtWidget.USE_LOCAL_BASE_FIELD_NAME); if (isUseLocalDB == null){ isUseLocalDB = false; } Set<Object> visibleParameters = modelObject.field(AbstractBirtWidget.VISIBLE_PARAMETERS_FIELD_NAME); this.configDocModel = configDocModel; this.parameters = parameters; this.visibleParameters = visibleParameters; this.useLocalDB = isUseLocalDB; } public InputStream getReportDataStream() { return new ByteArrayInputStream((byte[]) configDocModel.getObject().field(AbstractBirtWidget.REPORT_FIELD_NAME)); } public Map<String, Object> getParameters() { return parameters; } public boolean isUseLocalDB() { return useLocalDB; } public Set<Object> getVisibleParameters() { return visibleParameters; } }