Report.java

package com.tradecloud.domain.autoemail;

import com.tradecloud.domain.helper.ReportFormat;

/* - per connect:
Reports avalable for TEC Phase I   include -
    Event Driven Reports delivered in PDF
    - Consignment Unit Price Report
    - Consignment Summary Report
    - Shipment Unit Price Report
    - Shipment Summary Report

    Scheduled Reports delivered in CSV
    - Orders Awaiting Costing
    - Orders Awaiting Tariffing
    - Orders not yet Consigned
    - Orders Awaiting Sign Off
    - Orders Not Shipped
    - Orders on Water
    - Orders on Road
    - Orders Outstanding by Supplier
    - Inetegration messages failed
*/
public enum Report {
    CONSIGNMENT_ESTIMATE_COST_SUMMARY_AND_UNIT_PRICE(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    CONSIGNMENT_ESTIMATE_COST_SUMMARY(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF, ReportFormat.CSV}),
    CONSIGNMENT_ESTIMATE_COST_UNIT_PRICE(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    SHIPMENT_ACTUAL_COST_SUMMARY_AND_UNIT_PRICE(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF, ReportFormat.CSV}),
    SHIPMENT_ACTUAL_COST_SUMMARY(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF, ReportFormat.CSV}),
    SHIPMENT_ACTUAL_COST_UNIT_PRICE(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    ORDERS_AWAITING_COSTING(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    ORDERS_AWAITING_SIGN_OFF(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    ORDERS_NOT_CONSIGNED(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    ORDERS_NOT_SHIPPED(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    ORDER_ITEMS_AWAITING_TARIFFING(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    CONTAINERS_SHIPPED_NOT_AVAILABLE(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.CSV}),
    ORDERS_SIGNED_OFF_REPORT(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    CONTAINERS_AVAILABLE_NOT_DELIVERED_TO_FINAL_DESTINATION(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.CSV}),
    SUPPLIERS_CREATED_OR_UPDATED(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    SUPPLIER_PAYMENT(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    TEXT_FILE_INTEGRATION_ERROR_REPORT(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.TEXT}),
    SHIPMENT_DAILY_REPORT(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    SHIPMENT_MISSING_DOCUMENT_REPORT(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    CONSIGNMENT_CONFIRMATION_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    ORDER_CONFIRMATION_REPORT_CONFIRMED_ORDERS(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    ORDER_CONFIRMATION_REPORT_UNCONFIRMED_ORDERS(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF,ReportFormat.CSV}),
    USER_CREATE_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    FOREX_CONFIRMATION_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    FOREX_CONFIRMATION_WITHOUT_DIFFERENCE_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    NO_FOREX_CONFIRMATION_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    ORDER_OUT_OF_TOLERANCE_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    PAYMENT_UNSETTLED_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.CSV}),
    COMMERCIAL_INVOICE_OUT_OF_TOLERANCE_REPORT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.CSV}),
    DAILY_FINANCE_60_DAYS_REPORT(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    TEXT(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF, ReportFormat.CSV}),
    DMS(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    INTEGRATION_MESSAGES_FAILED(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV}),
    EXPORT_COMMERCIAL_INVOICE(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    DUTY_DRAWBACK_FILES(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.CSV}),
    DUTY_DRAWBACK_EXCEPTION(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.CSV}),
    STYLE_PACKING_LIST(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.XLSX}),
    TRANSPORTERS_EXPORT_DOCUMENTATION(ReportTrigger.EVENT, new ReportFormat[]{ReportFormat.PDF}),
    GOODS_IN_TRANSIT_REPORT(ReportTrigger.SCHEDULED, new ReportFormat[]{ReportFormat.CSV});

    private ReportTrigger reportTrigger;
    private ReportFormat[] reportFormats;

    Report(ReportTrigger reportTrigger, ReportFormat[] reportFormats) {
        this.reportTrigger = reportTrigger;
        this.reportFormats = reportFormats;
    }

    @Override
    public String toString() {
        return String.format("%s.%s", this.getClass().getSimpleName(), this.name());
    }

    public ReportTrigger getReportTrigger() {
        return reportTrigger;
    }

    public ReportFormat[] getReportFormats() {
        return reportFormats;
    }
}