diff options
Diffstat (limited to 'reportbuilder/java/org/libreoffice/report/util')
3 files changed, 181 insertions, 0 deletions
diff --git a/reportbuilder/java/org/libreoffice/report/util/DefaultJobProperties.java b/reportbuilder/java/org/libreoffice/report/util/DefaultJobProperties.java new file mode 100644 index 000000000..ce0ea8dce --- /dev/null +++ b/reportbuilder/java/org/libreoffice/report/util/DefaultJobProperties.java @@ -0,0 +1,71 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package org.libreoffice.report.util; + +import org.libreoffice.report.JobDefinitionException; +import org.libreoffice.report.JobProperties; +import org.libreoffice.report.ReportEngineMetaData; + +import java.util.HashMap; +import java.util.Map; + + +public class DefaultJobProperties implements JobProperties +{ + + private final ReportEngineMetaData metaData; + private final Map<String,Object> properties; + + public DefaultJobProperties(final ReportEngineMetaData metaData) + { + if (metaData == null) + { + throw new NullPointerException(); + } + this.properties = new HashMap<String,Object>(); + this.metaData = metaData; + } + + public Object getProperty(final String key) + { + return properties.get(key); + } + + public void setProperty(final String key, final Object value) + throws JobDefinitionException + { + final Class type = metaData.getParameterType(key); + if (type == null) + { + throw new JobDefinitionException("The parameter name is not known: " + key); + } + if (!type.isInstance(value)) + { + throw new JobDefinitionException("The parameter value is not understood"); + } + + this.properties.put(key, value); + } + + public JobProperties copy() + { + final DefaultJobProperties props = new DefaultJobProperties(metaData); + props.properties.putAll(properties); + return props; + } +} diff --git a/reportbuilder/java/org/libreoffice/report/util/DefaultParameterMap.java b/reportbuilder/java/org/libreoffice/report/util/DefaultParameterMap.java new file mode 100644 index 000000000..b1cd76343 --- /dev/null +++ b/reportbuilder/java/org/libreoffice/report/util/DefaultParameterMap.java @@ -0,0 +1,57 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package org.libreoffice.report.util; + +import org.libreoffice.report.ParameterMap; + +import java.util.HashMap; +import java.util.Map; + + +public class DefaultParameterMap implements ParameterMap +{ + + private final Map<String,Object> backend; + + public DefaultParameterMap() + { + backend = new HashMap<String,Object>(); + } + + /** + * Retrieves the value stored for a key in this properties collection. + * + * @param key the property key. + * @return The stored value, or <code>null</code> if the key does not exist in this + * collection. + */ + public Object get(final String key) + { + if (key == null) + { + throw new NullPointerException("DefaultParameterMap.get (..): Parameter 'key' must not be null"); + } + return backend.get(key); + } + + public String[] keys() + { + return this.backend.keySet().toArray(new String[backend.size()]); + } + +} diff --git a/reportbuilder/java/org/libreoffice/report/util/DefaultReportJobDefinition.java b/reportbuilder/java/org/libreoffice/report/util/DefaultReportJobDefinition.java new file mode 100644 index 000000000..b3e2e96c6 --- /dev/null +++ b/reportbuilder/java/org/libreoffice/report/util/DefaultReportJobDefinition.java @@ -0,0 +1,53 @@ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ +package org.libreoffice.report.util; + +import org.libreoffice.report.JobProperties; +import org.libreoffice.report.ParameterMap; +import org.libreoffice.report.ReportEngineMetaData; +import org.libreoffice.report.ReportJobDefinition; + +public class DefaultReportJobDefinition implements ReportJobDefinition +{ + + + private final DefaultParameterMap parameters; + private final DefaultJobProperties properties; + + public DefaultReportJobDefinition(final ReportEngineMetaData metaData) + { + this.parameters = new DefaultParameterMap(); + this.properties = new DefaultJobProperties(metaData); + } + + /** + * The parameters of the root report definition. The parameters for the subreports are + * defined using mappings, it would not make sense to define them here. + * + * @return a map container for query parameters. + */ + public ParameterMap getQueryParameters() + { + return parameters; + } + + public JobProperties getProcessingParameters() + { + return properties; + } +} |