From b3266192d68ed96b454f2e2506db413da4b2cdcb Mon Sep 17 00:00:00 2001 From: Manuel Rego Casasnovas Date: Mon, 28 May 2012 17:16:47 +0200 Subject: [PATCH] Create special bootstrap to set the new field to define the TypeOfWorkHours of monthlytimesheets. It uses the TypeOfWorkHours called "Default" if it exists, if not it uses the first active TypeOfWorkHours in the database. FEA: ItEr76S28UserDashboard --- ...hlyTimesheetsTypeOfWorkHoursBootstrap.java | 34 ++++++++ ...hlyTimesheetsTypeOfWorkHoursBootstrap.java | 80 +++++++++++++++++++ .../entities/TypeOfWorkHoursBootstrap.java | 2 +- 3 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 libreplan-business/src/main/java/org/libreplan/business/common/entities/IMonthlyTimesheetsTypeOfWorkHoursBootstrap.java create mode 100644 libreplan-business/src/main/java/org/libreplan/business/common/entities/MonthlyTimesheetsTypeOfWorkHoursBootstrap.java diff --git a/libreplan-business/src/main/java/org/libreplan/business/common/entities/IMonthlyTimesheetsTypeOfWorkHoursBootstrap.java b/libreplan-business/src/main/java/org/libreplan/business/common/entities/IMonthlyTimesheetsTypeOfWorkHoursBootstrap.java new file mode 100644 index 000000000..02be6d9d9 --- /dev/null +++ b/libreplan-business/src/main/java/org/libreplan/business/common/entities/IMonthlyTimesheetsTypeOfWorkHoursBootstrap.java @@ -0,0 +1,34 @@ +/* + * This file is part of LibrePlan + * + * Copyright (C) 2012 Igalia, S.L. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.libreplan.business.common.entities; + +import org.libreplan.business.IDataBootstrap; + +/** + * Contract for {@link MonthlyTimesheetsTypeOfWorkHoursBootstrap}. + * + * @author Manuel Rego Casasnovas + */ +public interface IMonthlyTimesheetsTypeOfWorkHoursBootstrap extends + IDataBootstrap { + + void loadRequiredData(); + +} diff --git a/libreplan-business/src/main/java/org/libreplan/business/common/entities/MonthlyTimesheetsTypeOfWorkHoursBootstrap.java b/libreplan-business/src/main/java/org/libreplan/business/common/entities/MonthlyTimesheetsTypeOfWorkHoursBootstrap.java new file mode 100644 index 000000000..c5597b094 --- /dev/null +++ b/libreplan-business/src/main/java/org/libreplan/business/common/entities/MonthlyTimesheetsTypeOfWorkHoursBootstrap.java @@ -0,0 +1,80 @@ +/* + * This file is part of LibrePlan + * + * Copyright (C) 2012 Igalia, S.L. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package org.libreplan.business.common.entities; + +import org.libreplan.business.BootstrapOrder; +import org.libreplan.business.common.daos.IConfigurationDAO; +import org.libreplan.business.common.exceptions.InstanceNotFoundException; +import org.libreplan.business.costcategories.daos.ITypeOfWorkHoursDAO; +import org.libreplan.business.costcategories.entities.TypeOfWorkHours; +import org.libreplan.business.costcategories.entities.TypeOfWorkHoursBootstrap; +import org.libreplan.business.workreports.entities.PredefinedWorkReportTypes; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * Fills the attribute {@link Configuration#monthlyTimesheetsTypeOfWorkHours} + * with a default value.
+ * + * If possible it uses the "Default" {@link TypeOfWorkHours}, but if it doesn't + * exist, it uses the first {@link TypeOfWorkHours} found.
+ * + * This bootstrap have to be executed after {@link ConfigurationBootstrap} and + * {@link TypeOfWorkHoursBootstrap}, this is why it's marked with + * {@link BootstrapOrder BootstrapOrder(1)}. + * + * @author Manuel Rego Casasnovas + */ +@Component +@Scope("singleton") +@BootstrapOrder(1) +public class MonthlyTimesheetsTypeOfWorkHoursBootstrap implements + IMonthlyTimesheetsTypeOfWorkHoursBootstrap { + + @Autowired + private IConfigurationDAO configurationDAO; + + @Autowired + private ITypeOfWorkHoursDAO typeOfWorkHoursDAO; + + @Override + @Transactional + public void loadRequiredData() { + Configuration configuration = configurationDAO.getConfiguration(); + + // TypeOfWorkHoursBootstrap creates the TypeOfWorkHours objects + // specified by PredefinedWorkReportTypes if there isn't any + // TypeOfWorkHours in the database + TypeOfWorkHours typeOfWorkHours; + try { + typeOfWorkHours = typeOfWorkHoursDAO + .findUniqueByName(PredefinedWorkReportTypes.DEFAULT + .getName()); + } catch (InstanceNotFoundException e) { + typeOfWorkHours = typeOfWorkHoursDAO.findActive().get(0); + } + + configuration.setMonthlyTimesheetsTypeOfWorkHours(typeOfWorkHours); + configurationDAO.save(configuration); + } + +} diff --git a/libreplan-business/src/main/java/org/libreplan/business/costcategories/entities/TypeOfWorkHoursBootstrap.java b/libreplan-business/src/main/java/org/libreplan/business/costcategories/entities/TypeOfWorkHoursBootstrap.java index 61b671624..096b6a44c 100644 --- a/libreplan-business/src/main/java/org/libreplan/business/costcategories/entities/TypeOfWorkHoursBootstrap.java +++ b/libreplan-business/src/main/java/org/libreplan/business/costcategories/entities/TypeOfWorkHoursBootstrap.java @@ -45,7 +45,7 @@ public class TypeOfWorkHoursBootstrap implements ITypeOfWorkHoursBootstrap { @Override @Transactional public void loadRequiredData() { - if (typeOfWorkHoursDAO.findAll().size() == 0) { + if (typeOfWorkHoursDAO.findActive().size() == 0) { for (PredefinedTypeOfWorkHours predefinedTypeOfWorkHours : PredefinedTypeOfWorkHours .values()) { TypeOfWorkHours typeOfWorkHours = predefinedTypeOfWorkHours