package org.saiku.adhoc.service; import java.util.ArrayList; import java.util.List; import org.pentaho.metadata.model.Domain; import org.pentaho.metadata.model.LogicalModel; import org.saiku.adhoc.model.master.SaikuColumn; import org.saiku.adhoc.model.master.SaikuGroup; import org.saiku.adhoc.model.master.SaikuLabel; import org.saiku.adhoc.model.master.SaikuMasterModel; import org.saiku.adhoc.model.master.SaikuParameter; import org.saiku.adhoc.model.master.SaikuReportSettings; /** * Helps find model elements * * @author mg * */ public class ModelHelper { public static SaikuGroup findGroupById(SaikuMasterModel model, String id) { List<SaikuGroup> groups = model.getGroups(); for (SaikuGroup saikuGroup : groups) { if (saikuGroup.getLayoutId().equals(id)) { return saikuGroup; } } return null; } public static SaikuColumn findColumnByLayoutId(SaikuMasterModel model, String id) { List<SaikuColumn> columns = model.getColumns(); for (SaikuColumn saikuColumn : columns) { if (saikuColumn.getLayoutId().equals(id)) { return saikuColumn; } } return null; } public static SaikuColumn findColumnByUid(SaikuMasterModel model, String uid) { List<SaikuColumn> columns = model.getColumns(); for (SaikuColumn saikuColumn : columns) { if (saikuColumn.getUid().equals(uid)) { return saikuColumn; } } return null; } public static SaikuLabel findLabelById(SaikuMasterModel model, String id) { List<SaikuGroup> groups = model.getGroups(); for (SaikuGroup saikuGroup : groups) { List<SaikuLabel> groupFooterElements = saikuGroup.getGroupFooterElements(); for (SaikuLabel saikuLabel : groupFooterElements) { if (saikuLabel.getLayoutId().equals(id)) { return saikuLabel; } } } List<SaikuLabel> pageHeaderElements = model.getPageHeaderElements(); for (SaikuLabel saikuLabel : pageHeaderElements) { if (saikuLabel.getLayoutId().equals(id)) { return saikuLabel; } } List<SaikuLabel> pageFooterElements = model.getPageFooterElements(); for (SaikuLabel saikuLabel : pageFooterElements) { if (saikuLabel.getLayoutId().equals(id)) { return saikuLabel; } } List<SaikuLabel> reportHeaderElements = model.getReportHeaderElements(); for (SaikuLabel saikuLabel : reportHeaderElements) { if (saikuLabel.getLayoutId().equals(id)) { return saikuLabel; } } List<SaikuLabel> reportFooterElements = model.getReportFooterElements(); for (SaikuLabel saikuLabel : reportFooterElements) { if (saikuLabel.getLayoutId().equals(id)) { return saikuLabel; } } List<SaikuLabel> reportSummaryElements = model.getReportSummaryElements(); for (SaikuLabel saikuLabel : reportSummaryElements) { if (saikuLabel.getLayoutId().equals(id)) { return saikuLabel; } } return null; } public static void init(SaikuMasterModel masterModel, Domain domain, LogicalModel logicalModel, String sessionId) { masterModel.setSessionId(sessionId); masterModel.setDomainId(domain.getId()); masterModel.setLogicalModelId(logicalModel.getId()); if (masterModel.getSettings() == null) { masterModel.setSettings(new SaikuReportSettings()); } if (masterModel.getClientModelSelection() == null) { masterModel.setColumns(new ArrayList<SaikuColumn>()); masterModel.setGroups(new ArrayList<SaikuGroup>()); masterModel.setParameters(new ArrayList<SaikuParameter>()); masterModel.setSortColumns(new ArrayList<String>()); masterModel.setReportHeaderElements(new ArrayList<SaikuLabel>()); masterModel.setReportFooterElements(new ArrayList<SaikuLabel>()); masterModel.setReportSummaryElements(new ArrayList<SaikuLabel>()); masterModel.setPageHeaderElements(new ArrayList<SaikuLabel>()); masterModel.setPageFooterElements(new ArrayList<SaikuLabel>()); } } }