added svcapi ui and camunda code
[it/otf.git] / otf-frontend / client / src / app / shared / modules / create-test-form / test-definition.class.ts
1 /*  Copyright (c) 2019 AT&T Intellectual Property.                             #\r
2 #                                                                              #\r
3 #   Licensed under the Apache License, Version 2.0 (the "License");            #\r
4 #   you may not use this file except in compliance with the License.           #\r
5 #   You may obtain a copy of the License at                                    #\r
6 #                                                                              #\r
7 #       http://www.apache.org/licenses/LICENSE-2.0                             #\r
8 #                                                                              #\r
9 #   Unless required by applicable law or agreed to in writing, software        #\r
10 #   distributed under the License is distributed on an "AS IS" BASIS,          #\r
11 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   #\r
12 #   See the License for the specific language governing permissions and        #\r
13 #   limitations under the License.                                             #\r
14 ##############################################################################*/\r
15 \r
16 \r
17 import { DefinitionInstance } from "./definition-instance.class";\r
18 import { element } from "@angular/core/src/render3/instructions";\r
19 \r
20 export class TestDefinition {\r
21 \r
22     public _id: String;\r
23     public testName: String;\r
24     public testDescription: String;\r
25     public groupId: String;\r
26     public processDefinitionKey: String;\r
27 \r
28     public bpmnInstances: DefinitionInstance[];\r
29 \r
30     public currentVersion; // int Array index of the bpmnInstances\r
31     public currentVersionName;\r
32     public currentInstance: DefinitionInstance;\r
33 \r
34     constructor(testDefinition: TestDefinition = null){\r
35         if(testDefinition){\r
36             this.setAll(testDefinition);\r
37         }\r
38     }\r
39 \r
40 \r
41     reset(){\r
42         this._id = '';\r
43         this.testName = '';\r
44         this.testDescription = '';\r
45         this.groupId = '';\r
46         this.processDefinitionKey = '';\r
47         this.bpmnInstances = [\r
48             this.newInstance() as DefinitionInstance\r
49         ];\r
50         this.currentInstance = this.bpmnInstances[0];\r
51         this.currentVersion = 0;\r
52     }\r
53 \r
54     getAll(){\r
55         return {\r
56             _id: this._id,\r
57             testName: this.testName,\r
58             testDescription: this.testDescription,\r
59             processDefinitionKey: this.processDefinitionKey,\r
60             bpmnInstances: this.bpmnInstances,\r
61             currentVersion: this.currentVersion\r
62         };\r
63     }\r
64 \r
65     switchVersion(version: String = null){\r
66         \r
67         if(version){\r
68             //find the version\r
69             this.bpmnInstances.forEach((elem, val) => {\r
70                 if(elem['version'] == version){\r
71                     this.currentVersion = val;\r
72                     this.currentInstance = this.bpmnInstances[val];\r
73                     this.currentVersionName = this.currentInstance.version;\r
74                 }\r
75             });\r
76         }else{\r
77             //get latest version\r
78             this.currentVersion = this.bpmnInstances.length - 1;\r
79             this.currentInstance = this.bpmnInstances[this.currentVersion];\r
80             this.currentVersionName = this.currentInstance.version;\r
81         }\r
82     }\r
83 \r
84     getVersionKey(){\r
85         return this.currentVersion;\r
86     }\r
87 \r
88     //Setter Methods\r
89 \r
90     setAll(td){\r
91         this._id = td._id;\r
92         this.testName = td.testName;\r
93         this.testDescription = td.testDescription;\r
94         this.groupId = td.groupId;\r
95         this.processDefinitionKey = td.processDefinitionKey;\r
96         this.setBpmnInstances(td.bpmnInstances);\r
97 \r
98         this.bpmnInstances.forEach((elem, val) => {\r
99             if(!elem.dataTestHeads)\r
100                 this.bpmnInstances[val].dataTestHeads = [];\r
101         })\r
102     }\r
103 \r
104     setId(id: String){\r
105         this._id = id;\r
106     }\r
107 \r
108     setName(testName: String){\r
109         this.testName = testName;\r
110     }\r
111 \r
112     setDescription(testDescription: String){\r
113         this.testDescription = testDescription;\r
114     }\r
115 \r
116     setGroupId(groupId: String){\r
117         this.groupId = groupId;\r
118     }\r
119 \r
120     setProcessDefinitionKey(processDefinitionKey: String){\r
121         this.processDefinitionKey = processDefinitionKey;\r
122     }\r
123 \r
124     setBpmnInstances(instances: DefinitionInstance[] = []){\r
125         // this.bpmnInstances = [];\r
126         // for(let i = instances.length - 1; i >= 0; i--){\r
127         //     this.bpmnInstances.push(instances[i]);\r
128         // }\r
129         this.bpmnInstances = instances;\r
130     }\r
131 \r
132     setNewVersion(newVersion: number = null){\r
133         if(newVersion == null){\r
134             newVersion = this.bpmnInstances.length;\r
135         }\r
136         if(this.setVersion(newVersion) == -1){\r
137             this.setNewVersion(++newVersion);\r
138         }\r
139         return newVersion;\r
140     }\r
141 \r
142     setVersion(version){\r
143         \r
144         this.bpmnInstances.forEach((elem, val) => {\r
145             \r
146             \r
147             if(elem.version == version && this.currentVersion != val ){\r
148                 return -1;\r
149             }\r
150         });\r
151         this.currentInstance.version = version;\r
152         return version;\r
153     }\r
154 \r
155     addBpmnInstance(instance = null){\r
156         \r
157         if(!instance){\r
158            instance = this.newInstance();\r
159         }\r
160         let alreadyIn = false;\r
161         this.bpmnInstances.forEach((elem, val) => {\r
162             if(elem.version == instance.version && val != 0){\r
163                 alreadyIn = true;\r
164             }\r
165         });\r
166         if(!alreadyIn){\r
167             this.bpmnInstances.push(instance);\r
168             this.setNewVersion()\r
169         }\r
170         \r
171     }\r
172 \r
173     removeBpmnInstance(version){\r
174         this.bpmnInstances.forEach((elem, val) =>{\r
175             if(elem['version'] == version){\r
176                 this.bpmnInstances.splice(val, 1);\r
177             }\r
178         });\r
179     }\r
180 \r
181     //Getter Methods\r
182 \r
183     getId(){\r
184         return this._id;\r
185     }\r
186 \r
187     getName(){\r
188         return this.testName;\r
189     }\r
190 \r
191     getDescription(){\r
192         return this.testDescription;\r
193     }\r
194 \r
195     getGroupId(){\r
196         return this.groupId;\r
197     }\r
198 \r
199     getProcessDefinitionKey(){\r
200         return this.processDefinitionKey;\r
201     }\r
202 \r
203     getBpmnInstances(version: String = null){\r
204         if(!version)\r
205             return this.bpmnInstances;\r
206         \r
207         this.bpmnInstances.forEach((elem, val) => {\r
208             if(elem['version'] == version){\r
209                 return elem;\r
210             }\r
211         });\r
212     }\r
213 \r
214     newInstance() {\r
215         return new DefinitionInstance();\r
216     }\r
217 \r
218 \r
219 \r
220 \r
221 \r
222 }