package net.rrm.ehour.ui.common.report; import net.rrm.ehour.ui.common.converter.CurrencyConverter; import net.rrm.ehour.ui.common.converter.DateConverter; import static net.rrm.ehour.ui.common.report.ReportColumn.DisplayType.*; public enum AggregatedReportConfig implements ReportConfig { // constructors like these might be a bit over the top.. // take note, the columnResourceKey is used for serie creation with trend charts (pardon my English, it's late.. or early in the morning) AGGREGATE_CUSTOMER(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.customer", new ReportColumn("userReport.report.customer"), new ReportColumn("userReport.report.project"), new ReportColumn("userReport.report.projectCode"), new ReportColumn("userReport.report.user"), new ReportColumn("userReport.report.role"), new ReportColumn("userReport.report.rate", ColumnType.RATE, CurrencyConverter.getInstance(), VISIBLE, ALLOW_DUPLICATES, IS_RATE_RELATED), new ReportColumn("userReport.report.hours", ColumnType.HOUR, VISIBLE, ALLOW_DUPLICATES), new ReportColumn("userReport.report.turnover", ColumnType.TURNOVER, CurrencyConverter.getInstance(), VISIBLE, ALLOW_DUPLICATES, IS_RATE_RELATED)), AGGREGATE_PROJECT(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.project", new ReportColumn("userReport.report.project"), new ReportColumn("userReport.report.projectCode"), new ReportColumn("userReport.report.customer"), new ReportColumn("userReport.report.user"), new ReportColumn("userReport.report.role"), new ReportColumn("userReport.report.rate", ColumnType.RATE, CurrencyConverter.getInstance(), VISIBLE, ALLOW_DUPLICATES, IS_RATE_RELATED), new ReportColumn("userReport.report.hours", ColumnType.HOUR, VISIBLE, ALLOW_DUPLICATES), new ReportColumn("userReport.report.turnover", ColumnType.TURNOVER, CurrencyConverter.getInstance(), VISIBLE, ALLOW_DUPLICATES, IS_RATE_RELATED)), AGGREGATE_USER(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.user", new ReportColumn("userReport.report.user"), new ReportColumn("userReport.report.role"), new ReportColumn("userReport.report.customer"), new ReportColumn("userReport.report.project"), new ReportColumn("userReport.report.projectCode"), new ReportColumn("userReport.report.rate", ColumnType.RATE, CurrencyConverter.getInstance(), VISIBLE, ALLOW_DUPLICATES, IS_RATE_RELATED), new ReportColumn("userReport.report.hours", ColumnType.HOUR, VISIBLE, ALLOW_DUPLICATES), new ReportColumn("userReport.report.turnover", ColumnType.TURNOVER, CurrencyConverter.getInstance(), VISIBLE, ALLOW_DUPLICATES, IS_RATE_RELATED)), AUDIT_REPORT(new ReportColumn("audit.report.column.date", ColumnType.DATE, new DateConverter(), VISIBLE), new ReportColumn("audit.report.column.lastName"), new ReportColumn("audit.report.column.action"), new ReportColumn("audit.report.column.type")); private final String zeroBookingsMessageKey; private ReportColumn[] reportColumns; private Boolean showZeroBookings; private AggregatedReportConfig(ReportColumn... reportColumns) { this(ReportType.NO_ZERO_BOOKINGS, "", reportColumns); } private AggregatedReportConfig(ReportType zeroBookings, String zeroBookingsMessageKey, ReportColumn... reportColumns) { this.zeroBookingsMessageKey = zeroBookingsMessageKey; this.reportColumns = reportColumns; this.showZeroBookings = zeroBookings == ReportType.SHOW_ZERO_BOOKINGS; } public ReportColumn[] getReportColumns() { return reportColumns; } public Boolean isShowZeroBookings() { return showZeroBookings; } public String getZeroBookingsMessageKey() { return zeroBookingsMessageKey; } }