blob: 4e53ecf7c5d320074fecd14bf08dbe12fca7ab40 [file] [log] [blame]
/**************************************************************
*
* 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 com.sun.star.report.pentaho;
import com.sun.star.report.DataSourceFactory;
import com.sun.star.report.ImageService;
import com.sun.star.report.InputRepository;
import com.sun.star.report.OutputRepository;
import com.sun.star.report.ReportEngineMetaData;
import com.sun.star.report.ReportEngineParameterNames;
import com.sun.star.report.ReportJobFactory;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.pentaho.reporting.libraries.base.util.HashNMap;
public class PentahoReportEngineMetaData
implements ReportEngineMetaData
{
public static final String OPENDOCUMENT_TEXT = "application/vnd.oasis.opendocument.text";
public static final String OPENDOCUMENT_SPREADSHEET = "application/vnd.oasis.opendocument.spreadsheet";
public static final String OPENDOCUMENT_CHART = "application/vnd.oasis.opendocument.chart";
public final static String CONTENT_TYPE = "content-type";
public static final String DEBUG = "raw/text+xml";
private final Set mandatoryParameters;
private final Map parameterTypes;
private final HashNMap enumerationValues;
public PentahoReportEngineMetaData()
{
mandatoryParameters = new HashSet();
mandatoryParameters.add(ReportEngineParameterNames.CONTENT_TYPE);
mandatoryParameters.add(ReportEngineParameterNames.INPUT_NAME);
mandatoryParameters.add(ReportEngineParameterNames.INPUT_REPOSITORY);
mandatoryParameters.add(ReportEngineParameterNames.OUTPUT_NAME);
mandatoryParameters.add(ReportEngineParameterNames.OUTPUT_REPOSITORY);
mandatoryParameters.add(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY);
mandatoryParameters.add(ReportEngineParameterNames.IMAGE_SERVICE);
mandatoryParameters.add(ReportEngineParameterNames.INPUT_REPORTJOB_FACTORY);
mandatoryParameters.add(ReportEngineParameterNames.INPUT_MASTER_COLUMNS);
mandatoryParameters.add(ReportEngineParameterNames.INPUT_MASTER_VALUES);
mandatoryParameters.add(ReportEngineParameterNames.INPUT_DETAIL_COLUMNS);
mandatoryParameters.add(ReportEngineParameterNames.AUTHOR);
mandatoryParameters.add(ReportEngineParameterNames.TITLE);
mandatoryParameters.add(ReportEngineParameterNames.MAXROWS);
parameterTypes = new HashMap();
parameterTypes.put(ReportEngineParameterNames.CONTENT_TYPE, String.class);
parameterTypes.put(ReportEngineParameterNames.INPUT_NAME, String.class);
parameterTypes.put(ReportEngineParameterNames.OUTPUT_NAME, String.class);
parameterTypes.put(ReportEngineParameterNames.INPUT_REPOSITORY, InputRepository.class);
parameterTypes.put(ReportEngineParameterNames.OUTPUT_REPOSITORY, OutputRepository.class);
parameterTypes.put(ReportEngineParameterNames.INPUT_DATASOURCE_FACTORY, DataSourceFactory.class);
parameterTypes.put(ReportEngineParameterNames.IMAGE_SERVICE, ImageService.class);
parameterTypes.put(ReportEngineParameterNames.INPUT_REPORTJOB_FACTORY, ReportJobFactory.class);
parameterTypes.put(ReportEngineParameterNames.INPUT_MASTER_COLUMNS, List.class);
parameterTypes.put(ReportEngineParameterNames.INPUT_MASTER_VALUES, List.class);
parameterTypes.put(ReportEngineParameterNames.INPUT_DETAIL_COLUMNS, List.class);
parameterTypes.put(ReportEngineParameterNames.AUTHOR, String.class);
parameterTypes.put(ReportEngineParameterNames.TITLE, String.class);
parameterTypes.put(ReportEngineParameterNames.MAXROWS, Integer.class);
enumerationValues = new HashNMap();
enumerationValues.add(CONTENT_TYPE,
PentahoReportEngineMetaData.OPENDOCUMENT_TEXT);
enumerationValues.add(CONTENT_TYPE,
PentahoReportEngineMetaData.OPENDOCUMENT_SPREADSHEET);
enumerationValues.add(CONTENT_TYPE,
PentahoReportEngineMetaData.OPENDOCUMENT_CHART);
enumerationValues.add(CONTENT_TYPE, PentahoReportEngineMetaData.DEBUG);
}
public Object[] getEnumerationValues(final String parameter)
{
return enumerationValues.toArray(parameter);
}
public Class getParameterType(final String parameter)
{
return (Class) parameterTypes.get(parameter);
}
public boolean isEnumeration(final String parameter)
{
return enumerationValues.containsKey(parameter);
}
/**
* Checks, whether a certain output type is available. Feed the mime-type of the output
* type in and you'll get a true or false back.
*
* @param mimeType
* @return true, if the output type is supported; false otherwise.
*/
public boolean isOutputSupported(final String mimeType)
{
return enumerationValues.containsValue(CONTENT_TYPE, mimeType.toLowerCase());
}
/**
* Lists all supported output parameters for the given mime-type. This listing can be
* used to build a generic user interface for configuring a certain output.
*
* @param mimeType
* @return
*/
public String[] getOutputParameters(final String mimeType)
{
return new String[0];
}
public boolean isMandatory(final String parameter)
{
return mandatoryParameters.contains(parameter);
}
}