//******************************************************************************************************
// IReportingProcess.cs - Gbtc
//
// Copyright © 2015, Grid Protection Alliance. All Rights Reserved.
//
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may
// not use this file except in compliance with the License. You may obtain a copy of the License at:
//
// http://opensource.org/licenses/MIT
//
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
// License for the specific language governing permissions and limitations.
//
// Code Modification History:
// ----------------------------------------------------------------------------------------------------
// 06/09/2015 - J. Ritchie Carroll
// Generated original version of source code.
//
//******************************************************************************************************
using System;
using System.Collections.Generic;
using GSF.Configuration;
using GSF.Console;
namespace GSF.TimeSeries.Reports
{
///
/// Defines an interface for reporting processes.
///
public interface IReportingProcess : IProvideStatus, IPersistSettings
{
///
/// Gets report type (i.e., name) for this reporting process.
///
string ReportType
{
get;
}
///
/// Gets or sets the path to the archive file to which the statistics required for reporting are archived.
///
string ArchiveFilePath
{
get;
set;
}
///
/// Gets or sets the directory to which reports will be written.
///
string ReportLocation
{
get;
set;
}
///
/// Gets or sets the title to be displayed on reports.
///
string Title
{
get;
set;
}
///
/// Gets or sets the name of the company to be displayed on reports.
///
string Company
{
get;
set;
}
///
/// Gets or sets the minimum lifetime of a report
/// since the last time it was accessed, in days.
///
double IdleReportLifetime
{
get;
set;
}
///
/// Gets or sets flag to enable e-mailing of reports.
///
bool EnableReportEmail
{
get;
set;
}
///
/// Gets or sets SMTP server to use when e-mailing reports.
///
string SmtpServer
{
get;
set;
}
///
/// Gets or sets the "from" address to use when e-mailing reports.
///
string FromAddress
{
get;
set;
}
///
/// Gets or sets the comma separated "to" addresses to use when e-mailing reports.
///
string ToAddresses
{
get;
set;
}
///
/// Returns the list of reports that are available from the report location.
///
/// The list of generated reports.
List GetReportsList();
///
/// Returns the list of reports which are in the queue but are yet to be generated.
///
/// The list of pending reports.
List GetPendingReportsList();
///
/// Queues up a report to be generated on a separate thread.
///
/// The date of the report to be generated.
/// Flag that determines if report should be e-mailed, if enabled.
void GenerateReport(DateTime reportDate, bool emailReport);
///
/// Deletes reports from the that have been idle for the length of the .
///
void CleanReportLocation();
///
/// Gets the command line arguments for the reporting process.
///
string GetArguments();
///
/// Gets the command line arguments for the reporting process for a given report date.
///
/// The date of the report to be generated.
/// Flag that determines if report should be e-mailed, if enabled.
string GetArguments(DateTime reportDate, bool emailReport);
///
/// Applies any received command line arguments for the reporting process.
///
/// Received command line arguments.
void SetArguments(Arguments args);
}
}