ItEr25S07CUAsignacionGrupoRecursosAPlanificacionItEr24S08: When saving the planner's tasks, the orphaned day assignments are removed
This commit is contained in:
parent
85e82fdd8e
commit
4f23fe7ad6
3 changed files with 46 additions and 0 deletions
|
|
@ -1,6 +1,7 @@
|
|||
package org.navalplanner.business.planner.daos;
|
||||
|
||||
import org.navalplanner.business.common.daos.IGenericDAO;
|
||||
import org.navalplanner.business.planner.entities.DayAssigment;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
|
||||
/**
|
||||
|
|
@ -8,4 +9,9 @@ import org.navalplanner.business.planner.entities.TaskElement;
|
|||
*/
|
||||
public interface ITaskElementDAO extends IGenericDAO<TaskElement, Long> {
|
||||
|
||||
/**
|
||||
* Removes {@link DayAssigment} that have no parent
|
||||
*/
|
||||
void removeOrphanedDayAssignments();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,10 +1,18 @@
|
|||
package org.navalplanner.business.planner.daos;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.navalplanner.business.common.daos.GenericDAOHibernate;
|
||||
import org.navalplanner.business.planner.entities.DayAssigment;
|
||||
import org.navalplanner.business.planner.entities.GenericDayAssigment;
|
||||
import org.navalplanner.business.planner.entities.SpecificDayAssigment;
|
||||
import org.navalplanner.business.planner.entities.TaskElement;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
|
|
@ -14,4 +22,34 @@ import org.springframework.stereotype.Repository;
|
|||
public class TaskElementDAO extends GenericDAOHibernate<TaskElement, Long>
|
||||
implements ITaskElementDAO {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void removeOrphanedDayAssignments() {
|
||||
deleteAll(getOrphanedDayAssigments());
|
||||
}
|
||||
|
||||
private void deleteAll(List<DayAssigment> orphaned) {
|
||||
for (DayAssigment dayAssigment : orphaned) {
|
||||
getSession().delete(dayAssigment);
|
||||
}
|
||||
}
|
||||
|
||||
private List<DayAssigment> getOrphanedDayAssigments() {
|
||||
List<DayAssigment> orphaned = new ArrayList<DayAssigment>();
|
||||
orphaned.addAll(findOrphanedGenericDayAssignments());
|
||||
orphaned.addAll(findOrphanedSpecificDayAssignments());
|
||||
return orphaned;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<GenericDayAssigment> findOrphanedGenericDayAssignments() {
|
||||
return getSession().createCriteria(GenericDayAssigment.class).add(
|
||||
Restrictions.isNull("genericResourceAllocation")).list();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<SpecificDayAssigment> findOrphanedSpecificDayAssignments() {
|
||||
return getSession().createCriteria(SpecificDayAssigment.class).add(
|
||||
Restrictions.isNull("specificResourceAllocation")).list();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ public class SaveCommand implements ISaveCommand {
|
|||
|
||||
@Autowired
|
||||
private ITaskElementDAO taskElementDAO;
|
||||
|
||||
private PlanningState state;
|
||||
|
||||
@Override
|
||||
|
|
@ -66,6 +67,7 @@ public class SaveCommand implements ISaveCommand {
|
|||
}
|
||||
}
|
||||
}
|
||||
taskElementDAO.removeOrphanedDayAssignments();
|
||||
// FIXME Messagebox#show blocks the thread so the transaction is not
|
||||
// executed until ok is pressed
|
||||
try {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue