ItEr25S07CUAsignacionGrupoRecursosAPlanificacionItEr24S08: When saving the planner's tasks, the orphaned day assignments are removed

This commit is contained in:
Óscar González Fernández 2009-09-16 23:14:55 +02:00
parent 85e82fdd8e
commit 4f23fe7ad6
3 changed files with 46 additions and 0 deletions

View file

@ -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();
}

View file

@ -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();
}
}

View file

@ -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 {