/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * 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 License for the specific language governing permissions and * limitations under the License. */ package ro.nextreports.server.domain; import java.io.Serializable; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.jcrom.annotations.JcrChildNode; import org.jcrom.annotations.JcrProperty; import ro.nextreports.server.report.util.ReportUtil; /** * @author Decebal Suiu */ public class ReportRuntime extends EntityFragment { private static final long serialVersionUID = 1L; @JcrProperty private String outputType; @JcrProperty private int layoutType; @JcrProperty private boolean headerPerPage; @JcrChildNode private List<ParameterValue> parametersValues; public ReportRuntime() { super(); setName("reportRuntime"); parametersValues = new ArrayList<ParameterValue>(); } public String getOutputType() { return outputType; } public void setOutputType(String outputType) { this.outputType = outputType; } public int getLayoutType() { return layoutType; } public void setLayoutType(int layoutType) { this.layoutType = layoutType; } public boolean isHeaderPerPage() { return headerPerPage; } public void setHeaderPerPage(boolean headerPerPage) { this.headerPerPage = headerPerPage; } public void clearParametersValues() { parametersValues.clear(); } public void addParameterValue(String parameterName, String displayName, Serializable parameterValue, boolean isDynamic) { ParameterValue internal = new ParameterValue(); internal.setName(parameterName); internal.setRuntimeName(displayName); internal.setPath(getPath() + "/" + internal.getName()); internal.setValue(parameterValue); internal.setDynamic(isDynamic); parametersValues.add(internal); } public void updateParameterValue(String name, Serializable value) { for (ParameterValue pv : parametersValues) { if (pv.getName().equals(name)) { pv.setValue(value); return; } } } public void updateDynamicParameterValues(Map<String, Object> map) { for (String name : map.keySet()) { for (ParameterValue pv : parametersValues) { if (pv.isDynamic() && pv.getName().equals(name)) { pv.setValue((Serializable)map.get(name)); break; } } } } public void setParametersValues(Map<String, Object> parametersValues, Map<String, String> displayNames) { clearParametersValues(); for (String name : parametersValues.keySet()) { String displayName = (displayNames == null) ? name : displayNames.get(name); addParameterValue(name, displayName, (Serializable)parametersValues.get(name), false); } } @Override public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("ReportRuntime["); buffer.append("name = ").append(name); buffer.append(", path = ").append(path); buffer.append(", layoutType = ").append(layoutType); buffer.append(", outputType = ").append(outputType); buffer.append(", headerPerPage = ").append(headerPerPage); buffer.append(", parametersValues = ["); for (ParameterValue pv : parametersValues) { buffer.append(ReportUtil.getParameterValueAsString(pv)); buffer.append(","); } if (buffer.toString().endsWith(",")) { buffer.deleteCharAt(buffer.length() - 1); } buffer.append("]"); return buffer.toString(); } public Map<String, Object> getParametersValues() { Map<String, Object> map = new LinkedHashMap<String, Object>(); for (ParameterValue parameterValue : parametersValues) { if (!parameterValue.isDynamic()) { map.put(parameterValue.getName(), parameterValue.getValue()); } } return map; } public Map<String, Object> getHistoryParametersValues() { Map<String, Object> map = new LinkedHashMap<String, Object>(); for (ParameterValue parameterValue : parametersValues) { map.put(parameterValue.getName(), parameterValue.getValue()); } return map; } public Map<String, String> getHistoryParametersDisplayNames() { Map<String, String> map = new LinkedHashMap<String, String>(); for (ParameterValue parameterValue : parametersValues) { map.put(parameterValue.getName(), parameterValue.getRuntimeName()); } return map; } public boolean isDynamic(String parameterValueName) { for (ParameterValue parameterValue : parametersValues) { if (parameterValue.getName().equals(parameterValueName)) { return parameterValue.isDynamic(); } } return false; } public void resetDynamic(String parameterValueName) { for (ParameterValue parameterValue : parametersValues) { if (parameterValue.getName().equals(parameterValueName)) { if (parameterValue.isDynamic()) { parameterValue.setDynamic(false); return; } } } } public void setDynamic(List<String> parametersNames) { for (ParameterValue parameterValue : parametersValues) { for (String pName: parametersNames) { if (parameterValue.getName().equals(pName)) { parameterValue.setDynamic(true); } } } } }