Salome HOME
050f2f3db19a927d41408c4dda2817f3094ce396
[tools/siman.git] / Workspace / Siman-Common / src / org / splat / service / technical / StepsConfigServiceImpl.java
1 /*****************************************************************************
2  * Company         OPEN CASCADE
3  * Application     SIMAN
4  * File            $Id$ 
5  * Creation date   12.03.2013
6  * @author         $Author$
7  * @version        $Revision$
8  * @copyright      OPEN CASCADE 2012-2015
9  *****************************************************************************/
10
11 package org.splat.service.technical;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import org.splat.dal.bo.som.ProjectElement;
17
18 /**
19  * Study steps configuration service.
20  * 
21  * @author <a href="mailto:roman.kozlov@opencascade.com">Roman Kozlov (RKV)</a>
22  */
23 public class StepsConfigServiceImpl implements StepsConfigService {
24
25         /**
26          * Ordered list of (transient) study steps.
27          */
28         private transient final List<ProjectSettingsService.Step> _steps = new ArrayList<ProjectSettingsService.Step>();
29
30         /**
31          * Get steps of the given project element (study or scenario).
32          * 
33          * @param level
34          *            the project element (study or scenario)
35          * @return the list of steps
36          */
37         public List<ProjectSettingsService.Step> getStepsOf(
38                         final Class<? extends ProjectElement> level) {
39                 List<ProjectSettingsService.Step> result = new ArrayList<ProjectSettingsService.Step>();
40
41                 for (int i = 0; i < _steps.size(); i++) {
42                         ProjectSettingsService.Step step = _steps.get(i);
43                         if (step.appliesTo(level)) {
44                                 result.add(step);
45                         }
46                 }
47                 return result;
48         }
49
50         /**
51          * Check whether the workflow step involves a project element(s) of the given level.
52          * 
53          * @param stepNum
54          *            the step number
55          * @param level
56          *            the project element level
57          * @return true if there are project element's steps of the given level before the given step
58          */
59         public boolean stepInvolves(final int stepNum,
60                         final Class<? extends ProjectElement> level) {
61                 boolean res = false;
62                 for (int i = 0; i < _steps.size(); i++) {
63                         ProjectSettingsService.Step step = _steps.get(i);
64                         if (step.appliesTo(level) && step.getNumber() <= stepNum) {
65                                 res = true;
66                                 break;
67                         }
68                 }
69                 return res;
70         }
71
72         /**
73          * Get the steps.
74          * 
75          * @return the steps
76          */
77         public List<ProjectSettingsService.Step> getSteps() {
78                 return _steps;
79         }
80
81 }