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