From 892fdfd5cf145992bae1db21722a90ba3d047f6a Mon Sep 17 00:00:00 2001 From: Alba Carro Date: Sun, 2 Sep 2012 13:43:44 +0200 Subject: [PATCH] Adds functionality to imports milestones FEA: ItEr77S05BasicProjectImport --- .../importers/MPXJProjectFileConversor.java | 64 ++++++++++++++++++- .../org/libreplan/importers/MilestoneDTO.java | 40 ++++++++++++ .../org/libreplan/importers/OrderDTO.java | 5 ++ .../libreplan/importers/OrderElementDTO.java | 5 ++ .../importers/OrderImporterMPXJ.java | 41 +++++++++++- 5 files changed, 151 insertions(+), 4 deletions(-) create mode 100644 libreplan-webapp/src/main/java/org/libreplan/importers/MilestoneDTO.java diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/MPXJProjectFileConversor.java b/libreplan-webapp/src/main/java/org/libreplan/importers/MPXJProjectFileConversor.java index 1c44aa216..565532221 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/importers/MPXJProjectFileConversor.java +++ b/libreplan-webapp/src/main/java/org/libreplan/importers/MPXJProjectFileConversor.java @@ -92,6 +92,8 @@ public class MPXJProjectFileConversor { importData.tasks = getImportTasks(file.getChildTasks()); + importData.milestones = getImportMilestones(file.getChildTasks()); + return importData; } @@ -140,6 +142,9 @@ public class MPXJProjectFileConversor { importData.tasks = getImportTasks(task.getChildTasks()); + importData.milestones = getImportMilestones(task + .getChildTasks()); + break; } @@ -148,6 +153,53 @@ public class MPXJProjectFileConversor { return importData; } + /** + * Converts a List of MPXJ Tasks into a List of {@link MilestoneDTO}. + * + * @param childTasks + * List of MPXJ Tasks to extract data from. + * @return List List of MilestoneDTO with the data that we want to + * import. + */ + private static List getImportMilestones(List childTasks) { + + List milestones = new ArrayList(); + + for (Task task : childTasks) { + + if (task.getMilestone()) { + + MilestoneDTO milestone = getMilestoneData(task); + + milestones.add(milestone); + + } + + } + + return milestones; + } + + /** + * Converts a MPXJ Task into a {@link MilestoneDTO}. + * + * @param task + * MPXJ Task to extract data from. + * @return MilestoneDTO MilestoneDTO with the data that we want to import. + */ + private static MilestoneDTO getMilestoneData(Task task) { + + MilestoneDTO milestone = new MilestoneDTO(); + + milestone.name = task.getName(); + + milestone.startDate = task.getStart(); + + return milestone; + + } + + /** * Private method * @@ -182,12 +234,18 @@ public class MPXJProjectFileConversor { for (Task task : tasks) { - OrderElementDTO importTask = getTaskData(task); + if (!task.getMilestone()) { - importTask.children = getImportTasks(task.getChildTasks()); + OrderElementDTO importTask = getTaskData(task); - importTasks.add(importTask); + importTask.children = getImportTasks(task.getChildTasks()); + importTask.milestones = getImportMilestones(task + .getChildTasks()); + + importTasks.add(importTask); + + } } return importTasks; diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/MilestoneDTO.java b/libreplan-webapp/src/main/java/org/libreplan/importers/MilestoneDTO.java new file mode 100644 index 000000000..9a0aa267c --- /dev/null +++ b/libreplan-webapp/src/main/java/org/libreplan/importers/MilestoneDTO.java @@ -0,0 +1,40 @@ +/* + * 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.importers; + +import java.util.Date; + +/** + * Class that represents no persistent milestones.
+ * + * @author Alba Carro Pérez + */ +public class MilestoneDTO { + + /** + * Name of the milestone + */ + public String name; + + /** + * Start date of the milestone + */ + public Date startDate; + +} diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/OrderDTO.java b/libreplan-webapp/src/main/java/org/libreplan/importers/OrderDTO.java index 202af4148..2b20527e2 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/importers/OrderDTO.java +++ b/libreplan-webapp/src/main/java/org/libreplan/importers/OrderDTO.java @@ -58,4 +58,9 @@ public class OrderDTO { */ public List tasks; + /** + * List of {@link MilestoneDTO} of the project that is going to be imported. + */ + public List milestones; + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/OrderElementDTO.java b/libreplan-webapp/src/main/java/org/libreplan/importers/OrderElementDTO.java index 157b443a8..003dbb971 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/importers/OrderElementDTO.java +++ b/libreplan-webapp/src/main/java/org/libreplan/importers/OrderElementDTO.java @@ -69,4 +69,9 @@ public class OrderElementDTO { */ public int totalHours; + /** + * Milestones of this task. + */ + public List milestones; + } diff --git a/libreplan-webapp/src/main/java/org/libreplan/importers/OrderImporterMPXJ.java b/libreplan-webapp/src/main/java/org/libreplan/importers/OrderImporterMPXJ.java index 0e4dceebb..9c2c879aa 100644 --- a/libreplan-webapp/src/main/java/org/libreplan/importers/OrderImporterMPXJ.java +++ b/libreplan-webapp/src/main/java/org/libreplan/importers/OrderImporterMPXJ.java @@ -45,6 +45,7 @@ import org.libreplan.business.planner.daos.ITaskElementDAO; import org.libreplan.business.planner.daos.ITaskSourceDAO; import org.libreplan.business.planner.entities.TaskElement; import org.libreplan.business.planner.entities.TaskGroup; +import org.libreplan.business.planner.entities.TaskMilestone; import org.libreplan.business.scenarios.IScenarioManager; import org.libreplan.business.scenarios.entities.OrderVersion; import org.libreplan.business.scenarios.entities.Scenario; @@ -284,6 +285,12 @@ public class OrderImporterMPXJ implements IOrderImporter { } + for (MilestoneDTO milestone : project.milestones) { + + taskElements.add(createTaskMilestone(milestone)); + + } + for (TaskElement taskElement : taskElements) { taskGroup.addTaskElement(taskElement); } @@ -292,6 +299,26 @@ public class OrderImporterMPXJ implements IOrderImporter { } + /** + * Private method. + * + * It makes a {@link TaskMilestone} from a {@link MilsetoneDTO} + * + * @param milestone + * MilestoneDTO to extract data from. + * + * @return TaskElement TaskElement that represent the data. + */ + @Transactional + private TaskElement createTaskMilestone(MilestoneDTO milestone) { + + TaskElement taskMilestone = TaskMilestone.create(milestone.startDate); + + taskMilestone.setName(milestone.name); + + return taskMilestone; + } + /** * Private method. * @@ -335,6 +362,12 @@ public class OrderImporterMPXJ implements IOrderImporter { } + for (MilestoneDTO milestone : task.milestones) { + + taskElements.add(createTaskMilestone(milestone)); + + } + for (TaskElement childTaskElement : taskElements) { ((TaskGroup) taskElement).addTaskElement(childTaskElement); } @@ -367,7 +400,13 @@ public class OrderImporterMPXJ implements IOrderImporter { taskSources.add(taskGroup.getTaskSource()); for (TaskElement taskElement : taskGroup.getAllChildren()) { - taskSources.add(taskElement.getTaskSource()); + + if (!taskElement.isMilestone()) { + + taskSources.add(taskElement.getTaskSource()); + + } + } orderDAO.save(order);