Is there a cleaner/ better readable way to maintain and iterate many-many mapping rather than multiple if conditions ? (One way would be to store the mapping of ReportType -> DataSet Req. in the database)
For e.g if there's an application which depending upon 'reports selected', generates reports using data from required database tables. Something like this:
Now since the data to be fetched in these tables is huge and shared for multiple reports, we came with a not so good looking approach to optimize getData function using if() conditions like this :
getDataForRequiredReports(List requiredReports) {
Map<String,Object> dataMap;
if(requiredReports.contains(ReportB))
dataMap.add(newEntry("marketData", DAOlayer.get("MarketData")));
if(requiredReports.contains(ReportA) || requiredReports.contains(ReportB) || requiredReports.contains(ReportE))
dataMap.add(newEntry("pastData", DAOlayer.get("PastData")));
if(requiredReports.contains(ReportC) || requiredReports.contains(ReportD) || requiredReports.contains(ReportE))
dataMap.add(newEntry("manualData", DAOlayer.get("ManualData")));
if(requiredReports.contains(ReportC) || requiredReports.contains(ReportE))
dataMap.add(newEntry("mlOutputData", DAOlayer.get("MLOutputData")));
return dataMap;
}