diff --git a/CHANGELOG.md b/CHANGELOG.md index 025a9aac..ac31eda3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [7.5.1 - 2022-01-20] +### Changed +- Quality report scheduler format simplified +### Added +- New value for quality report scheduler format: All + ## [7.5.0 - 2022-01-12] ### Security - Jersey 3 diff --git a/pom.xml b/pom.xml index e373252a..ecdf749e 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ share-client - 7.5.0 + 7.5.1-SNAPSHOT war Connector diff --git a/src/main/java/de/samply/share/client/model/EnumConfiguration.java b/src/main/java/de/samply/share/client/model/EnumConfiguration.java index 4c747737..7439717b 100644 --- a/src/main/java/de/samply/share/client/model/EnumConfiguration.java +++ b/src/main/java/de/samply/share/client/model/EnumConfiguration.java @@ -64,8 +64,6 @@ public enum EnumConfiguration { QUALITY_REPORT_SCHEDULER_FORMAT, QUALITY_REPORT_SCHEDULER_YEARS, QUALITY_REPORT_GROUP_MODUL, - QUALITY_REPORT_SCHEDULER_BY_YEAR, - QUALITY_REPORT_SCHEDULER_BY_MONTH, QUALITY_REPORT_STATISTICS_FILENAME, QUALITY_REPORT_EXCEL_INFO_FILENAME, QUALITY_REPORT_EXCEL_INFO_URL, diff --git a/src/main/java/de/samply/share/client/quality/report/QualityReportConfigConstants.java b/src/main/java/de/samply/share/client/quality/report/QualityReportConfigConstants.java deleted file mode 100644 index c56feb63..00000000 --- a/src/main/java/de/samply/share/client/quality/report/QualityReportConfigConstants.java +++ /dev/null @@ -1,56 +0,0 @@ -package de.samply.share.client.quality.report; - -public class QualityReportConfigConstants { - - - public static final String NAMESPACE = "quality.report.namespace"; - - public static final String AUTH_USER_ID = "quality.report.authuserid"; - - public static final String AUTH_KEY_ID = "quality.report.authkeyid"; - - public static final String AUTH_URL = "quality.report.authurl"; - - public static final String AUTH_PRIVATE_KEY_BASE_64 = "quality.report.authPrivateKeyBase64"; - - public static final String MAX_ATTEMPTS = "quality.report.maxAttempts"; - - public static final String MAX_TIME_TO_WAIT_IN_MILLIS = "quality.report.maxTimeToWaitInMillis"; - - public static final String ONLY_STATISTICS_AVAILABLE = "quality.report.onlystatisticsavailable"; - - public static final String MDR_LINK_PREFIX = "quality.report.mdrLinkPrefix"; - - public static final String MAX_NUMBER_OF_PATIENT_IDS_TO_BE_SHOWN = - "quality.report.maxNumberOfPatientIdsToBeShown"; - - public static final String CENTRAXX_ATTRIBUTES_FILE = "quality.report.centraxx-attributes-file"; - - public static final String CENTRAXX_VALUES_FILE = "quality.report.centraxx-values-file"; - - public static final String IGNORED_DATAELEMENTS = "quality.report.ignored-dataelements"; - - public static final String DIRECTORY = "quality.report.directory"; - - public static final String LOCATION = "quality.report.location"; - - public static final String BASIC_FILENAME = "quality.report.basic-filename"; - - public static final String SCHEDULER_FORMAT = "quality.report.scheduler.format"; - - public static final String SCHEDULER_YEARS = "quality.report.scheduler.years"; - - public static final String GROUP_MODUL = "quality.report.scheduler.groups-modul"; - - public static final String SCHEDULER_BY_YEAR = "by-year"; - - public static final String SCHEDULER_BY_MONTH = "by-month"; - - public static final String STATISTICS_FILENAME = "quality.report.statistics.filename"; - - public static final String EXCEL_INFO_FILENAME = "quality.report.excel.info.filename"; - - public static final String EXCEL_INFO_URL = "quality.report.excel.info.url"; - - -} diff --git a/src/main/java/de/samply/share/client/quality/report/QualityReportSchedulerFormat.java b/src/main/java/de/samply/share/client/quality/report/QualityReportSchedulerFormat.java new file mode 100644 index 00000000..9ffa963a --- /dev/null +++ b/src/main/java/de/samply/share/client/quality/report/QualityReportSchedulerFormat.java @@ -0,0 +1,7 @@ +package de.samply.share.client.quality.report; + +public enum QualityReportSchedulerFormat { + YEAR, + MONTH, + ALL +} diff --git a/src/main/java/de/samply/share/client/quality/report/views/fromto/ViewFromToFactory.java b/src/main/java/de/samply/share/client/quality/report/views/fromto/ViewFromToFactory.java index d28a1012..6eae4cee 100644 --- a/src/main/java/de/samply/share/client/quality/report/views/fromto/ViewFromToFactory.java +++ b/src/main/java/de/samply/share/client/quality/report/views/fromto/ViewFromToFactory.java @@ -1,94 +1,39 @@ package de.samply.share.client.quality.report.views.fromto; -import de.samply.share.client.util.Utils; -import java.util.Calendar; -import java.util.Date; -import java.util.GregorianCalendar; +import static java.time.ZoneOffset.UTC; -public class ViewFromToFactory { +import java.time.LocalDate; +import java.time.Year; +import java.time.YearMonth; +public class ViewFromToFactory { /** - * Creates View between two dates. + * Creates a view between the first day of {@code year} and the first day of the next year. * - * @param from lower date. - * @param to upper date. - * @return View From - To. + * @param year year. + * @return View from-to. */ - public ViewFromTo createViewFromTo(Date from, Date to) { - - String fromS = convert(from); - String toS = convert(to); - - return new ViewFromTo(fromS, toS); - + public ViewFromTo createYear(int year) { + Year start = Year.of(year); + return createViewFromTo(start.atDay(1), start.plusYears(1).atDay(1)); } /** - * Create View between dates for first day to last day of month of a year. + * Create a view between the first day of {@code month} in {@code year} and the first day of the + * next month. * - * @param month month. * @param year year. + * @param month month. * @return View From-To. */ - public ViewFromTo createMonth(int month, int year) { - - Calendar calendarStart = createFirstDayOfMonth(month, year); - Calendar calendarEnd = (Calendar) calendarStart.clone(); - calendarEnd.add(Calendar.MONTH, 1); - - return createViewFromTo(calendarStart.getTime(), calendarEnd.getTime()); - - } - - /** - * Create View between first day of a year and last day of the year. - * - * @param year year. - * @return View from-to. - */ - public ViewFromTo createYear(int year) { - - Calendar calendarStart = createFirstDayOfYear(year); - Calendar calendarEnd = createFirstDayOfYear(year + 1); - - return createViewFromTo(calendarStart.getTime(), calendarEnd.getTime()); - + public ViewFromTo createMonth(int year, int month) { + YearMonth start = YearMonth.of(year, month); + return createViewFromTo(start.atDay(1), start.plusMonths(1).atDay(1)); } - private Calendar createFirstDayOfYear(int year) { - - Calendar calendar = new GregorianCalendar(); - calendar.set(Calendar.YEAR, year); - calendar.set(Calendar.MONTH, Calendar.JANUARY); - calendar.set(Calendar.DAY_OF_MONTH, 1); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - - return calendar; - + private ViewFromTo createViewFromTo(LocalDate from, LocalDate to) { + return new ViewFromTo(from.atStartOfDay().toInstant(UTC).toString(), + to.atStartOfDay().toInstant(UTC).toString()); } - - - private Calendar createFirstDayOfMonth(int month, int year) { - - Calendar calendar = new GregorianCalendar(); - calendar.set(Calendar.YEAR, year); - calendar.set(Calendar.MONTH, month); - - calendar.set(Calendar.DAY_OF_MONTH, 1); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - - return calendar; - - } - - private String convert(Date date) { - return Utils.convertDate2(date); - } - - } diff --git a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToScheduler.java b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToScheduler.java index 22d0624e..fa17facb 100644 --- a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToScheduler.java +++ b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToScheduler.java @@ -6,5 +6,4 @@ public interface ViewFromToScheduler { List createViewFromTos(); - } diff --git a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerAll.java b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerAll.java new file mode 100644 index 00000000..99d8bc16 --- /dev/null +++ b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerAll.java @@ -0,0 +1,21 @@ +package de.samply.share.client.quality.report.views.fromto.scheduler; + +import de.samply.share.client.quality.report.views.fromto.ViewFromTo; +import java.util.Collections; +import java.util.List; + +/** + * A scheduler that always creates one {@link ViewFromTo} with a date range of 1900 - 2100. + * + *

It's meant to load all data at once. + */ +public enum ViewFromToSchedulerAll implements ViewFromToScheduler { + + INSTANCE; + + @Override + public List createViewFromTos() { + return Collections.singletonList(new ViewFromTo("1900-01-01T00:00:00+00:00", + "2100-01-01T00:00:00+00:00")); + } +} diff --git a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByMonthImpl.java b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByMonth.java similarity index 68% rename from src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByMonthImpl.java rename to src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByMonth.java index 55b72216..23c31370 100644 --- a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByMonthImpl.java +++ b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByMonth.java @@ -6,27 +6,24 @@ import java.util.Calendar; import java.util.GregorianCalendar; import java.util.List; +import java.util.Objects; -public class ViewFromToSchedulerByMonthImpl implements ViewFromToScheduler { +public class ViewFromToSchedulerByMonth implements ViewFromToScheduler { + private final ViewFromToFactory viewFromToFactory; private int numberOfYears = 20; private int groupsModul = 5; - private final ViewFromToFactory viewFromToFactory; - public ViewFromToSchedulerByMonthImpl(ViewFromToFactory viewFromToFactory) { - this.viewFromToFactory = viewFromToFactory; + public ViewFromToSchedulerByMonth(ViewFromToFactory viewFromToFactory) { + this.viewFromToFactory = Objects.requireNonNull(viewFromToFactory); } @Override public List createViewFromTos() { - - List lastYearsSorted = getLastYearsSorted(); - return createViewFroms(lastYearsSorted); - + return createViewFroms(getLastYearsSorted()); } private List createViewFroms(List lastYearsSorted) { - List viewFromToList = new ArrayList<>(); Calendar calendar = new GregorianCalendar(); @@ -34,16 +31,10 @@ private List createViewFroms(List lastYearsSorted) { int currentYear = calendar.get(Calendar.YEAR); for (int month = 0; month < 12; month++) { - for (int year : lastYearsSorted) { - if (year < currentYear || month <= currentMonth) { - - ViewFromTo viewFromTo = viewFromToFactory.createMonth(month, year); - viewFromToList.add(viewFromTo); - + viewFromToList.add(viewFromToFactory.createMonth(year, month)); } - } } @@ -51,24 +42,20 @@ private List createViewFroms(List lastYearsSorted) { } private List getLastYearsSorted() { - List years = new ArrayList<>(); Calendar calendar = new GregorianCalendar(); int year = calendar.get(Calendar.YEAR); for (int groupNumber = 0; groupNumber < groupsModul; groupNumber++) { - for (int i = year; i > year - numberOfYears; i--) { if (i % groupsModul == groupNumber) { years.add(i); } } - } return years; - } public void setGroupsModul(int groupsModul) { @@ -78,14 +65,4 @@ public void setGroupsModul(int groupsModul) { public void setNumberOfYears(int numberOfYears) { this.numberOfYears = numberOfYears; } - - // public static void main(String[] args) { - // - // BasicViewFromToScheduler basicViewFromToScheduler = new BasicViewFromToScheduler(); - // basicViewFromToScheduler.setViewFromToFactory(new ViewFromToFactory()); - // - // List viewFroms = basicViewFromToScheduler.createViewFroms(); - // - // } - } diff --git a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByYearImpl.java b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByYear.java similarity index 78% rename from src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByYearImpl.java rename to src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByYear.java index 866ad3fe..ff439b3c 100644 --- a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByYearImpl.java +++ b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerByYear.java @@ -6,19 +6,19 @@ import java.util.Calendar; import java.util.GregorianCalendar; import java.util.List; +import java.util.Objects; -public class ViewFromToSchedulerByYearImpl implements ViewFromToScheduler { +public class ViewFromToSchedulerByYear implements ViewFromToScheduler { - private int years = 20; private final ViewFromToFactory viewFromToFactory; + private int years = 20; - public ViewFromToSchedulerByYearImpl(ViewFromToFactory viewFromToFactory) { - this.viewFromToFactory = viewFromToFactory; + public ViewFromToSchedulerByYear(ViewFromToFactory viewFromToFactory) { + this.viewFromToFactory = Objects.requireNonNull(viewFromToFactory); } @Override public List createViewFromTos() { - List viewFromToList = new ArrayList<>(); Calendar calendar = new GregorianCalendar(); @@ -36,5 +36,4 @@ public List createViewFromTos() { public void setYears(int years) { this.years = years; } - } diff --git a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerFactory.java b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerFactory.java index cac9166f..e03f2e7d 100644 --- a/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerFactory.java +++ b/src/main/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerFactory.java @@ -1,55 +1,53 @@ package de.samply.share.client.quality.report.views.fromto.scheduler; -import de.samply.share.client.model.EnumConfiguration; +import static de.samply.share.client.model.EnumConfiguration.QUALITY_REPORT_GROUP_MODUL; +import static de.samply.share.client.model.EnumConfiguration.QUALITY_REPORT_SCHEDULER_FORMAT; +import static de.samply.share.client.model.EnumConfiguration.QUALITY_REPORT_SCHEDULER_YEARS; +import static de.samply.share.client.util.db.ConfigurationUtil.getConfigurationElementValue; + +import de.samply.share.client.quality.report.QualityReportSchedulerFormat; +import de.samply.share.client.quality.report.views.fromto.ViewFromTo; import de.samply.share.client.quality.report.views.fromto.ViewFromToFactory; -import de.samply.share.client.util.db.ConfigurationUtil; +import java.util.Arrays; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; public class ViewFromToSchedulerFactory { + private static final Map FORMATS = Arrays.stream( + QualityReportSchedulerFormat.values()).collect( + Collectors.toMap(Enum::name, Function.identity())); private final ViewFromToFactory viewFromToFactory = new ViewFromToFactory(); /** - * Create Scheduler for View From-To. + * Creates a scheduler for {@link ViewFromTo ViewFromTos} according to the config. * - * @return View From-To Scheduler. + * @return a scheduler */ public ViewFromToScheduler createViewFromToScheduler() { + QualityReportSchedulerFormat format = FORMATS.getOrDefault(getConfigurationElementValue( + QUALITY_REPORT_SCHEDULER_FORMAT), QualityReportSchedulerFormat.YEAR); - String format = ConfigurationUtil - .getConfigurationElementValue(EnumConfiguration.QUALITY_REPORT_SCHEDULER_FORMAT); - - ViewFromToSchedulerFormat viewFromToSchedulerFormat = ViewFromToSchedulerFormat - .getViewFromToSchedulerFormat(format); - if (viewFromToSchedulerFormat == null) { - viewFromToSchedulerFormat = ViewFromToSchedulerFormat.getDefault(); - } - - switch (viewFromToSchedulerFormat) { - - case BY_MONTH: + switch (format) { + case MONTH: return createViewFromToSchedulerByMonthImpl(); - case BY_YEAR: + case YEAR: return createViewFromToSchedulerByYearImpl(); + case ALL: + return ViewFromToSchedulerAll.INSTANCE; default: - return null; - + throw new IllegalStateException(); } - - } private ViewFromToScheduler createViewFromToSchedulerByMonthImpl() { - - ViewFromToSchedulerByMonthImpl viewFromToSchedulerByMonth = new ViewFromToSchedulerByMonthImpl( + ViewFromToSchedulerByMonth viewFromToSchedulerByMonth = new ViewFromToSchedulerByMonth( viewFromToFactory); - String groupsModulS = ConfigurationUtil - .getConfigurationElementValue(EnumConfiguration.QUALITY_REPORT_GROUP_MODUL); - Integer groupsModul = convert(groupsModulS); - String yearsS = ConfigurationUtil - .getConfigurationElementValue(EnumConfiguration.QUALITY_REPORT_SCHEDULER_YEARS); - Integer years = convert(yearsS); + Integer groupsModul = tryParseInt(getConfigurationElementValue(QUALITY_REPORT_GROUP_MODUL)); + Integer years = tryParseInt(getConfigurationElementValue(QUALITY_REPORT_SCHEDULER_YEARS)); if (groupsModul != null) { viewFromToSchedulerByMonth.setGroupsModul(groupsModul); @@ -63,67 +61,22 @@ private ViewFromToScheduler createViewFromToSchedulerByMonthImpl() { } private ViewFromToScheduler createViewFromToSchedulerByYearImpl() { - - ViewFromToSchedulerByYearImpl viewFromToSchedulerByYear = new ViewFromToSchedulerByYearImpl( + ViewFromToSchedulerByYear viewFromToSchedulerByYear = new ViewFromToSchedulerByYear( viewFromToFactory); - String yearsS = ConfigurationUtil - .getConfigurationElementValue(EnumConfiguration.QUALITY_REPORT_SCHEDULER_YEARS); - Integer years = convert(yearsS); - + Integer years = tryParseInt(getConfigurationElementValue(QUALITY_REPORT_SCHEDULER_YEARS)); if (years != null) { viewFromToSchedulerByYear.setYears(years); } return viewFromToSchedulerByYear; - } - Integer convert(String number) { - + private static Integer tryParseInt(String s) { try { - return Integer.valueOf(number); - + return Integer.valueOf(s); } catch (Exception e) { return null; } } - - public enum ViewFromToSchedulerFormat { - - BY_YEAR(EnumConfiguration.QUALITY_REPORT_SCHEDULER_BY_YEAR.name()), - BY_MONTH(EnumConfiguration.QUALITY_REPORT_SCHEDULER_BY_MONTH.name()); - - String title; - - ViewFromToSchedulerFormat(String title) { - this.title = title; - } - - public static ViewFromToSchedulerFormat getDefault() { - return BY_YEAR; - } - - /** - * Gets format of scheduler of view from-to . - * - * @param format format as String. - * @return format of scheduler of view from-to. - */ - public static ViewFromToSchedulerFormat getViewFromToSchedulerFormat(String format) { - - for (ViewFromToSchedulerFormat viewFromToSchedulerFormat : values()) { - - if (viewFromToSchedulerFormat.title.equals(format)) { - return viewFromToSchedulerFormat; - } - } - - return null; - - } - - } - - } diff --git a/src/main/java/de/samply/share/client/util/db/ConfigurationUtil.java b/src/main/java/de/samply/share/client/util/db/ConfigurationUtil.java index 0a70f76c..fefd532c 100644 --- a/src/main/java/de/samply/share/client/util/db/ConfigurationUtil.java +++ b/src/main/java/de/samply/share/client/util/db/ConfigurationUtil.java @@ -29,34 +29,20 @@ public class ConfigurationUtil { private static final Logger logger = LoggerFactory.getLogger(ConfigurationUtil.class); - private static final ConfigurationDao configurationDao; - private static final ConfigurationTimingsDao configurationTimingsDao; - - static { - configurationDao = new ConfigurationDao(ResourceManager.getConfiguration()); - configurationTimingsDao = new ConfigurationTimingsDao(ResourceManager.getConfiguration()); - } - // Prevent instantiation private ConfigurationUtil() { } - /** - * Get the configuration DAO. - * - * @return the configuration DAO - */ - public static ConfigurationDao getConfigurationDao() { - return configurationDao; + private static class ConfigurationDaoHolder { + + static final ConfigurationDao INSTANCE = new ConfigurationDao( + ResourceManager.getConfiguration()); } - /** - * Get the configuration timings DAO. - * - * @return the configuration timings DAO - */ - public static ConfigurationTimingsDao getConfigurationTimingsDao() { - return configurationTimingsDao; + private static class ConfigurationTimingsDaoHolder { + + static final ConfigurationTimingsDao INSTANCE = new ConfigurationTimingsDao( + ResourceManager.getConfiguration()); } /** @@ -66,7 +52,7 @@ public static ConfigurationTimingsDao getConfigurationTimingsDao() { * @return the configuration element */ public static Configuration getConfigurationElement(EnumConfiguration configurationElement) { - return configurationDao.fetchOneByName(configurationElement.name()); + return ConfigurationDaoHolder.INSTANCE.fetchOneByName(configurationElement.name()); } /** @@ -77,7 +63,8 @@ public static Configuration getConfigurationElement(EnumConfiguration configurat */ public static ConfigurationTimings getConfigurationTimingsElement( EnumConfigurationTimings configurationTimingsElement) { - return configurationTimingsDao.fetchOneByName(configurationTimingsElement.name()); + return ConfigurationTimingsDaoHolder.INSTANCE.fetchOneByName( + configurationTimingsElement.name()); } /** @@ -86,7 +73,7 @@ public static ConfigurationTimings getConfigurationTimingsElement( * @param configuration the new configuration element to insert */ private static void insertConfigurationElement(Configuration configuration) { - configurationDao.insert(configuration); + ConfigurationDaoHolder.INSTANCE.insert(configuration); } /** @@ -95,7 +82,7 @@ private static void insertConfigurationElement(Configuration configuration) { * @param configurationTimings the new configuration timing element to insert */ private static void insertConfigurationTimingsElement(ConfigurationTimings configurationTimings) { - configurationTimingsDao.insert(configurationTimings); + ConfigurationTimingsDaoHolder.INSTANCE.insert(configurationTimings); } /** @@ -104,7 +91,7 @@ private static void insertConfigurationTimingsElement(ConfigurationTimings confi * @param configuration the configuration element to update */ private static void updateConfigurationElement(Configuration configuration) { - configurationDao.update(configuration); + ConfigurationDaoHolder.INSTANCE.update(configuration); } /** @@ -113,7 +100,7 @@ private static void updateConfigurationElement(Configuration configuration) { * @param configurationTimings the configuration timing element to update */ private static void updateConfigurationTimingsElement(ConfigurationTimings configurationTimings) { - configurationTimingsDao.update(configurationTimings); + ConfigurationTimingsDaoHolder.INSTANCE.update(configurationTimings); } /** @@ -123,7 +110,7 @@ private static void updateConfigurationTimingsElement(ConfigurationTimings confi */ private static void deleteConfigurationElement(Configuration configuration) { if (configuration != null) { - configurationDao.delete(configuration); + ConfigurationDaoHolder.INSTANCE.delete(configuration); } } @@ -133,7 +120,7 @@ private static void deleteConfigurationElement(Configuration configuration) { * @param configurationTimings the configuration timing element to delete */ private static void deleteConfigurationTimingsElement(ConfigurationTimings configurationTimings) { - configurationTimingsDao.delete(configurationTimings); + ConfigurationTimingsDaoHolder.INSTANCE.delete(configurationTimings); } /** @@ -142,7 +129,8 @@ private static void deleteConfigurationTimingsElement(ConfigurationTimings confi * @param configuration the configuration element to insert or update */ public static void insertOrUpdateConfigurationElement(Configuration configuration) { - Configuration configurationElement = configurationDao.fetchOneByName(configuration.getName()); + Configuration configurationElement = ConfigurationDaoHolder.INSTANCE.fetchOneByName( + configuration.getName()); if (configuration.getSetting() == null) { deleteConfigurationElement(configurationElement); } else if (configurationElement == null) { @@ -161,7 +149,7 @@ public static void insertOrUpdateConfigurationElement(Configuration configuratio */ public static void insertOrUpdateConfigurationTimingsElement( ConfigurationTimings configurationTimings) { - ConfigurationTimings configurationTimingsElement = configurationTimingsDao + ConfigurationTimings configurationTimingsElement = ConfigurationTimingsDaoHolder.INSTANCE .fetchOneByName(configurationTimings.getName()); if (configurationTimings.getSetting() == null) { deleteConfigurationTimingsElement(configurationTimingsElement); @@ -212,7 +200,6 @@ public static List getConfigurationElementValueList( } - /** * Get the int value of a configuration timing element. * diff --git a/src/main/resources/db/migration/V036__dktk_update_quality_report_scheduler.sql b/src/main/resources/db/migration/V036__dktk_update_quality_report_scheduler.sql new file mode 100644 index 00000000..e5609c24 --- /dev/null +++ b/src/main/resources/db/migration/V036__dktk_update_quality_report_scheduler.sql @@ -0,0 +1,3 @@ +UPDATE samply.configuration SET setting='YEAR' WHERE name='QUALITY_REPORT_SCHEDULER_FORMAT'; +DELETE FROM samply.configuration WHERE name='QUALITY_REPORT_SCHEDULER_BY_YEAR'; +DELETE FROM samply.configuration WHERE name='QUALITY_REPORT_SCHEDULER_BY_MONTH'; diff --git a/src/test/java/de/samply/share/client/quality/report/views/fromto/ViewFromToFactoryTest.java b/src/test/java/de/samply/share/client/quality/report/views/fromto/ViewFromToFactoryTest.java new file mode 100644 index 00000000..98690b48 --- /dev/null +++ b/src/test/java/de/samply/share/client/quality/report/views/fromto/ViewFromToFactoryTest.java @@ -0,0 +1,34 @@ +package de.samply.share.client.quality.report.views.fromto; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +class ViewFromToFactoryTest { + + private final ViewFromToFactory factory = new ViewFromToFactory(); + + @Test + void createYear() { + ViewFromTo viewFromTo = factory.createYear(2021); + + assertEquals("2021-01-01T00:00:00Z", viewFromTo.getFrom()); + assertEquals("2022-01-01T00:00:00Z", viewFromTo.getTo()); + } + + @Test + void createMonth_2() { + ViewFromTo viewFromTo = factory.createMonth(2021, 2); + + assertEquals("2021-02-01T00:00:00Z", viewFromTo.getFrom()); + assertEquals("2021-03-01T00:00:00Z", viewFromTo.getTo()); + } + + @Test + void createMonth_12() { + ViewFromTo viewFromTo = factory.createMonth(2021, 12); + + assertEquals("2021-12-01T00:00:00Z", viewFromTo.getFrom()); + assertEquals("2022-01-01T00:00:00Z", viewFromTo.getTo()); + } +} diff --git a/src/test/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerFactoryTest.java b/src/test/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerFactoryTest.java new file mode 100644 index 00000000..58c20fc6 --- /dev/null +++ b/src/test/java/de/samply/share/client/quality/report/views/fromto/scheduler/ViewFromToSchedulerFactoryTest.java @@ -0,0 +1,62 @@ +package de.samply.share.client.quality.report.views.fromto.scheduler; + +import static de.samply.share.client.model.EnumConfiguration.QUALITY_REPORT_SCHEDULER_FORMAT; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mockStatic; + +import de.samply.share.client.util.db.ConfigurationUtil; +import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; + +class ViewFromToSchedulerFactoryTest { + + private final ViewFromToSchedulerFactory factory = new ViewFromToSchedulerFactory(); + + @Test + void createViewFromToScheduler_default() { + try (MockedStatic mocked = mockStatic(ConfigurationUtil.class)) { + mocked.when(() -> ConfigurationUtil.getConfigurationElementValue( + QUALITY_REPORT_SCHEDULER_FORMAT)).thenReturn(null); + + ViewFromToScheduler scheduler = factory.createViewFromToScheduler(); + + assertTrue(scheduler instanceof ViewFromToSchedulerByYear); + } + } + + @Test + void createViewFromToScheduler_QUALITY_REPORT_SCHEDULER_BY_YEAR() { + try (MockedStatic mocked = mockStatic(ConfigurationUtil.class)) { + mocked.when(() -> ConfigurationUtil.getConfigurationElementValue( + QUALITY_REPORT_SCHEDULER_FORMAT)).thenReturn("YEAR"); + + ViewFromToScheduler scheduler = factory.createViewFromToScheduler(); + + assertTrue(scheduler instanceof ViewFromToSchedulerByYear); + } + } + + @Test + void createViewFromToScheduler_QUALITY_REPORT_SCHEDULER_BY_MONTH() { + try (MockedStatic mocked = mockStatic(ConfigurationUtil.class)) { + mocked.when(() -> ConfigurationUtil.getConfigurationElementValue( + QUALITY_REPORT_SCHEDULER_FORMAT)).thenReturn("MONTH"); + + ViewFromToScheduler scheduler = factory.createViewFromToScheduler(); + + assertTrue(scheduler instanceof ViewFromToSchedulerByMonth); + } + } + + @Test + void createViewFromToScheduler_QUALITY_REPORT_SCHEDULER_ALL() { + try (MockedStatic mocked = mockStatic(ConfigurationUtil.class)) { + mocked.when(() -> ConfigurationUtil.getConfigurationElementValue( + QUALITY_REPORT_SCHEDULER_FORMAT)).thenReturn("ALL"); + + ViewFromToScheduler scheduler = factory.createViewFromToScheduler(); + + assertTrue(scheduler instanceof ViewFromToSchedulerAll); + } + } +}