/* * Copyright (c) WSO2 Inc. (http://wso2.com) All Rights Reserved. * * WSO2 Inc. 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 org.wso2.carbon.registry.admin.api.reporting; import org.wso2.carbon.core.util.CryptoException; import org.wso2.carbon.ntask.common.TaskException; import org.wso2.carbon.registry.core.exceptions.RegistryException; /** * Provides functionality to produce (on-demand and schedule) reports for resources stored on * this repository and other repositories (using URLs). * * @param <ReportConfigurationBean> This bean contains details of a single report's configuration. */ public interface IReportingAdminService<ReportConfigurationBean> { /** * Method to obtain a stream of bytes of the generated report. This is returned to the client * as a DataHandler. * * @param configuration the report configuration * * @return byte array of the generated report * * @throws Exception if the operation failed */ byte[] getReportBytes(ReportConfigurationBean configuration) throws Exception; /** * Method to schedule the generation of a report * * @param configuration the report configuration * * @throws Exception if the operation failed */ void scheduleReport(ReportConfigurationBean configuration) throws Exception; /** * Method to stop the generation of a scheduled report * * @param name the name of the report * * @throws Exception if the operation failed */ void stopScheduledReport(String name) throws Exception; /** * Method to save a report * * @param configuration the report's configuration * * @throws RegistryException if the failure was from the registry * @throws CryptoException if the failure was when performing data encryption */ void saveReport(ReportConfigurationBean configuration) throws RegistryException, CryptoException; /** * Method to retrieve saved report * * @throws RegistryException if the failure was from the registry * @throws CryptoException if the failure was when performing data encryption * @throws TaskException if the failure was when retrieving details of the scheduled tasks. */ ReportConfigurationBean[] getSavedReports() throws RegistryException, CryptoException, TaskException; /** * Method to retrieve a saved report * * @param name the name of the report * * @throws RegistryException if the failure was from the registry * @throws CryptoException if the failure was when performing data encryption * @throws TaskException if the failure was when retrieving details of the scheduled tasks. */ ReportConfigurationBean getSavedReport(String name) throws RegistryException, CryptoException, TaskException; /** * Method to delete saved report * * @param name the name of the report * * @throws RegistryException if the failure was from the registry */ void deleteSavedReport(String name) throws RegistryException; /** * Method to copy saved report * * @param name the name of the report * @param newName the new name for the copy * * @throws RegistryException if the failure was from the registry */ void copySavedReport(String name, String newName) throws RegistryException; /** * Method to retrieve the list of properties that can be passed to the report generator class * * @param className the fully qualified name of the * * @return a list of property names * * @throws Exception if the operation failed */ String[] getAttributeNames(String className) throws Exception; /** * Method to retrieve the list of mandatory properties that can be passed to the report * generator class * * @param className the fully qualified name of the * * @return the subset of property names that are mandatory * * @throws Exception if the operation failed */ String[] getMandatoryAttributeNames(String className) throws Exception; }