/* * Copyright (C) 2011 Marius Giepz * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package org.saiku.adhoc.model.master; import java.util.ArrayList; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codehaus.jackson.annotate.JsonIgnore; import org.codehaus.jackson.annotate.JsonPropertyOrder; import org.saiku.adhoc.exceptions.SaikuAdhocException; import org.saiku.adhoc.service.report.ReportGeneratorService; @JsonPropertyOrder( { "version", "domainId", "logicalModelId", "reportHeaderElements", "pageHeaderElements", "pageFooterElements", "reportFooterElements", "columns", "sortColumns", "groups", "reportSummaryElements", "parameters", "settings", "clientModelSelection", "maxClientSeq" } ) public class SaikuMasterModel { private final static String VERSION_INFO = "V_1_0"; @JsonIgnore public Boolean getCdaDirty() { return cdaDirty; } public String getVersion(){ return VERSION_INFO; } public void setVersion(String version){ } public void setSessionId(String sessionId) { this.sessionId = sessionId; } public void setDomainId(String domainId) { this.domainId = domainId; } public void setLogicalModelId(String logicalModelId) { this.logicalModelId = logicalModelId; } public List<SaikuLabel> getReportSummaryElements() { return reportSummaryElements; } public void setReportSummaryElements(List<SaikuLabel> reportSummaryElements) { this.reportSummaryElements = reportSummaryElements; } protected List<SaikuColumn> columns; protected List<SaikuLabel> reportHeaderElements; //These are the elements that are NOT in the Summary Row protected List<SaikuLabel> reportFooterElements; protected List<SaikuLabel> reportSummaryElements; protected List<SaikuLabel> pageHeaderElements; protected List<SaikuLabel> pageFooterElements; protected List<SaikuGroup> groups; protected List<SaikuParameter> parameters; protected List<String> sortColumns; protected String clientModelSelection; protected SaikuReportSettings settings; @JsonIgnore private Log log = LogFactory.getLog(SaikuMasterModel.class); @JsonIgnore private Boolean cdaDirty = true; private String domainId; private String logicalModelId; private String sessionId; private Integer maxClientSeq; public void init(String sessionId, ReportGeneratorService reportGeneratorService) throws SaikuAdhocException{ this.sessionId = sessionId; this.setMaxClientSeq(null); if(this.settings==null){ this.settings = new SaikuReportSettings(); } if(this.clientModelSelection==null){ //only init these once this.columns = new ArrayList<SaikuColumn>(); this.groups = new ArrayList<SaikuGroup>(); this.parameters = new ArrayList<SaikuParameter>(); this.sortColumns = new ArrayList<String>(); this.reportHeaderElements = new ArrayList<SaikuLabel>(); this.reportFooterElements = new ArrayList<SaikuLabel>(); this.reportSummaryElements = new ArrayList<SaikuLabel>(); this.pageHeaderElements = new ArrayList<SaikuLabel>(); this.pageFooterElements = new ArrayList<SaikuLabel>(); } } public SaikuMasterModel() { super(); } private Object readResolve() { //TODO: refactor to make default possible on deserialization return this; } public void setReportTemplate(ReportTemplate reportTemplate) { this.settings.setReportTemplate(reportTemplate); } @JsonIgnore public ReportTemplate getReportTemplate() { return this.settings.getReportTemplate(); } public List<SaikuColumn> getColumns() { return columns; } public List<SaikuGroup> getGroups() { return groups; } public List<String> getSortColumns() { return sortColumns; } public void setParameters(List<SaikuParameter> parameters) { this.parameters = parameters; } public List<SaikuParameter> getParameters() { return parameters; } public void setClientModelSelection(String clientModelSelection) { this.clientModelSelection = clientModelSelection; } public String getClientModelSelection() { return clientModelSelection; } public void setColumns(List<SaikuColumn> columns) { this.columns = columns; } public void setGroups(List<SaikuGroup> groups) { this.groups = groups; } public void setSortColumns(List<String> sortColumns) { this.sortColumns = sortColumns; } public void setSettings(SaikuReportSettings settings) { this.settings = settings; } public SaikuReportSettings getSettings() { return settings; } public void setReportHeaderElements(List<SaikuLabel> reportHeaderMessages) { this.reportHeaderElements = reportHeaderMessages; } public List<SaikuLabel> getReportHeaderElements() { return reportHeaderElements; } public void setPageHeaderElements(List<SaikuLabel> pageHeaderMessages) { this.pageHeaderElements = pageHeaderMessages; } public List<SaikuLabel> getPageHeaderElements() { return pageHeaderElements; } public void setPageFooterElements(List<SaikuLabel> pageFooterMessages) { this.pageFooterElements = pageFooterMessages; } public List<SaikuLabel> getPageFooterElements() { return pageFooterElements; } public void setReportFooterElements(List<SaikuLabel> reportFooterMessages) { this.reportFooterElements = reportFooterMessages; } public List<SaikuLabel> getReportFooterElements() { return reportFooterElements; } public void setCdaDirty(Boolean cdaDirty) { this.cdaDirty = cdaDirty; } @JsonIgnore public Boolean isCdaDirty() { return cdaDirty; } public String getDomainId() { return this.domainId; } public String getLogicalModelId() { return this.logicalModelId; } @JsonIgnore public String getSessionId() { return sessionId; } public void setMaxClientSeq(Integer maxClientSeq) { this.maxClientSeq = maxClientSeq; } public Integer getMaxClientSeq() { return maxClientSeq; } }