Salome HOME
Logger is changed to AppLogger
[tools/siman.git] / Workspace / Siman-Common / src / org / splat / service / ProjectElementServiceImpl.java
1 /*****************************************************************************
2  * Company         EURIWARE
3  * Application     SIMAN
4  * File            $Id$ 
5  * Creation date   07.10.2012
6  * @author         $Author$
7  * @version        $Revision$
8  *****************************************************************************/
9
10 package org.splat.service;
11
12 import java.util.Iterator;
13 import java.util.List;
14
15 import org.splat.dal.bo.som.ProjectElement;
16 import org.splat.service.technical.ProjectSettingsService;
17 import org.splat.service.technical.ProjectSettingsServiceImpl;
18 import org.splat.som.Step;
19
20 /**
21  * @author RKV
22  * 
23  */
24 public class ProjectElementServiceImpl implements ProjectElementService {
25
26         private ProjectSettingsService _projectSettingsService;
27
28         public Step getFirstStep(ProjectElement elem) {
29                 // ---------------------------
30                 return getSteps(elem)[0];
31         }
32
33         public Step getLastStep(ProjectElement elem) {
34                 // --------------------------
35                 Step[] mystep = getSteps(elem); // For getting the folders length, if null
36                 return mystep[mystep.length - 1];
37         }
38
39         public Step[] getSteps(ProjectElement elem) {
40                 // -------------------------
41                 if (elem.getFolders() == null) {
42                         List<ProjectSettingsService.Step> steps = getProjectSettings()
43                                         .getStepsOf(elem.getClass());
44                         Iterator<ProjectSettingsService.Step> nstep = steps.iterator();
45
46                         elem.setFolders(new Step[steps.size()]);
47                         for (int i = 0; i < elem.getFolders().length; i++) {
48                                 elem.getFolders()[i] = new Step(nstep.next(), elem);
49                         }
50                 }
51                 return elem.getFolders(); // No protection against this object corruption as it would not corrupt the database
52         }
53
54         /**
55          * Get project settings.
56          * 
57          * @return Project settings service
58          */
59         private ProjectSettingsService getProjectSettings() {
60                 return _projectSettingsService;
61         }
62
63         /**
64          * Set project settings service.
65          * 
66          * @param projectSettingsService
67          *            project settings service
68          */
69         public void setProjectSettings(ProjectSettingsService projectSettingsService) {
70                 _projectSettingsService = projectSettingsService;
71         }
72 }