package net.rrm.ehour.ui.common.report; import net.rrm.ehour.ui.common.converter.*; import static net.rrm.ehour.ui.common.report.ReportColumn.DisplayType.*; public enum DetailedReportConfig 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) DETAILED_REPORT_BY_DAY(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.detailed", new ReportColumn("userReport.report.date", ColumnType.DATE, new LockableDateConverter(), VISIBLE), 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.dailyComment", ColumnType.COMMENT, VISIBLE, ALLOW_DUPLICATES), 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)), DETAILED_REPORT_BY_WEEK(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.detailed", new ReportColumn("userReport.report.week", ColumnType.STRING, new DateToWeekConverter(), VISIBLE), 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.weeklyComment", ColumnType.COMMENT, VISIBLE), 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)), DETAILED_REPORT_BY_MONTH(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.detailed", new ReportColumn("userReport.report.month", ColumnType.STRING, new DateToMonthConverter(), VISIBLE), 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.comment", ColumnType.COMMENT, HIDDEN), 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)), DETAILED_REPORT_BY_QUARTER(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.detailed", new ReportColumn("userReport.report.quarter", ColumnType.STRING, new DateToQuarterConverter(), VISIBLE), 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.comment", ColumnType.COMMENT, HIDDEN), 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)), DETAILED_REPORT_BY_YEAR(ReportType.SHOW_ZERO_BOOKINGS, "report.criteria.zerobookings.detailed", new ReportColumn("userReport.report.year", ColumnType.STRING, new DateToYearConverter(), VISIBLE), 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.comment", ColumnType.COMMENT, HIDDEN), 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)); private final String zeroBookingsMessageKey; private ReportColumn[] reportColumns; private Boolean showZeroBookings; private DetailedReportConfig(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; } }