Bug 137359 Provide run-time capability to use externalized data source connection info
I don't see a lot of practicality in creating flat file datasets that you can only filter at the report design level. In order to make this useful, we need to be able to filter (where clause) by a user selected parameter. This is especially problematic because there really isn't any good way to allow for a user to pull database connection information from a file. I have very similar databases and tables and it would be very very nice to allow the report at runtime to tell the rptdesign file what database connection url to use. Everybody I've spoken to says to do this with a parameter, but that is very insecure. Who the heck wants database login information being passed around in visible URLs. The better approach would be to have the user select the environment that he wants to query (dev, qa, live) and then I'd map that with a where clause into a flat file to find the database connection information. Something like Dev, server, user, password, database. "Dev" would be selected by a user parameter and then I'd find out the connection information by finding the correct row in the flat file. Without this capability, I cannot deploy this to my client as they'll never accept anything so insecure. This is a must fix asap in my opinion. I'm submitting this as an enhancement as technically that's the proper thing for me to do, but I'd really prefer to submit this as a blocker. Thanks.
engine/org.eclipse.birt.report.engine/src/org/eclipse/birt/report/engine/adapter/ModelDteApiAdapter.java
import org.eclipse.birt.data.engine.api.querydefn.ComputedColumn;
import org.eclipse.birt.data.engine.api.querydefn.ConditionalExpression;
import org.eclipse.birt.data.engine.api.querydefn.FilterDefinition;
import org.eclipse.birt.data.engine.api.querydefn.InputParameterBinding;
import org.eclipse.birt.data.engine.api.querydefn.JoinCondition;
import org.eclipse.birt.data.engine.api.querydefn.JointDataSetDesign;
import org.eclipse.birt.data.engine.api.querydefn.OdaDataSetDesign;
import org.eclipse.birt.data.engine.api.querydefn.OdaDataSourceDesign;
import org.eclipse.birt.data.engine.api.querydefn.ParameterDefinition;
import org.eclipse.birt.data.engine.api.querydefn.ScriptDataSetDesign;
import org.eclipse.birt.data.engine.api.querydefn.ScriptDataSourceDesign;
import org.eclipse.birt.data.engine.api.querydefn.ScriptExpression;
import org.eclipse.birt.data.engine.api.script.IBaseDataSetEventHandler;
import org.eclipse.birt.data.engine.api.script.IBaseDataSourceEventHandler;
import org.eclipse.birt.data.engine.api.script.IScriptDataSetEventHandler;
import org.eclipse.birt.data.engine.api.script.IScriptDataSourceEventHandler;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.executor.ExecutionContext;
import org.eclipse.birt.report.engine.i18n.MessageConstants;
import org.eclipse.birt.report.engine.script.internal.DataSetScriptExecutor;
import org.eclipse.birt.report.engine.script.internal.DataSourceScriptExecutor;
import org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor;
import org.eclipse.birt.report.engine.script.internal.ScriptDataSourceScriptExecutor;
import org.eclipse.birt.report.model.api.ColumnHintHandle;
import org.eclipse.birt.report.model.api.ComputedColumnHandle;
import org.eclipse.birt.report.model.api.DataSetHandle;
import org.eclipse.birt.report.model.api.DataSetParameterHandle;
import org.eclipse.birt.report.model.api.DataSourceHandle;
import org.eclipse.birt.report.model.api.ExtendedPropertyHandle;
import org.eclipse.birt.report.model.api.FilterConditionHandle;