Salome HOME
ScenarioService.getScenarioInfo method is added.
[tools/siman.git] / Workspace / Siman-Common / src / org / splat / service / ScenarioServiceImpl.java
index 79c424db78803e1266126b9fb32039c30f3c476f..d8f560d433c7bca31f9f52045831755ba66e5fb9 100644 (file)
 package org.splat.service;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Iterator;
 import java.util.List;
 
 import org.apache.log4j.Logger;
+import org.splat.dal.bo.kernel.Relation;
 import org.splat.dal.bo.kernel.User;
+import org.splat.dal.bo.som.ConvertsRelation;
+import org.splat.dal.bo.som.File;
 import org.splat.dal.bo.som.KnowledgeElement;
 import org.splat.dal.bo.som.KnowledgeElementType;
 import org.splat.dal.bo.som.Publication;
@@ -30,8 +34,11 @@ import org.splat.dal.dao.som.StudyDAO;
 import org.splat.kernel.InvalidPropertyException;
 import org.splat.kernel.MissedPropertyException;
 import org.splat.kernel.MultiplyDefinedException;
+import org.splat.service.dto.DocumentDTO;
+import org.splat.service.dto.StepDTO;
 import org.splat.service.technical.IndexService;
 import org.splat.som.Step;
+import org.splat.util.BeanHelper;
 import org.springframework.transaction.annotation.Transactional;
 
 /**
@@ -164,6 +171,33 @@ public class ScenarioServiceImpl implements ScenarioService {
                _stepService = stepService;
        }
 
+       /** 
+        * {@inheritDoc}
+        * @see org.splat.service.ScenarioService#getScenarioInfo(long)
+        */
+       @Transactional
+       public List<StepDTO> getScenarioInfo(final long scenarioId) {
+               List<StepDTO> res = new ArrayList<StepDTO>();
+               Scenario scen = getScenarioDAO().get(scenarioId);
+               Step[] steps = getProjectElementService().getSteps(scen);
+               StepDTO stepDTO;
+               DocumentDTO docDTO;
+               for (Step step: steps) {
+                       stepDTO = BeanHelper.copyBean(step.getStep(), StepDTO.class);
+                       res.add(stepDTO);
+                       for (Publication tag: step.getDocuments()) {
+                               docDTO = stepDTO.addDoc(tag.value().getIndex(), tag.value().getTitle());
+                               char aState = tag.getIsnew();
+                               docDTO.addFile(tag.value().getFile().getRelativePath(), aState);
+                               for(Relation rel: tag.value().getRelations(ConvertsRelation.class)) {
+                                       File aFile = ((ConvertsRelation)rel).getTo();
+                                       docDTO.addFile(aFile.getRelativePath(), aState);
+                               }
+                       }
+               }
+               return res;
+       }
+       
        /**
         * Create a new study with one scenario and "product" simulation context.
         *