Commit acf8b54acb0597a342ec2cc0d5c84d1af5771d02

Authored by kristinlaahneolsen
1 parent 96cd7b71

Ryddet i filsystemet og gjort rapportene over til PDF

Showing 2504 changed files with 0 additions and 293153 deletions   Show diff stats

Too many changes.

To preserve performance only 100 of 2504 files are displayed.

.DS_Store
No preview for this file type
Annet/.DS_Store 0 โ†’ 100644
No preview for this file type
Eldre versjoner av dokumenter/Risikorapport renamed to Annet/Eldre versjoner av dokumenter/Risikorapport
Eldre versjoner av dokumenter/Risikorapport-v1.docx renamed to Annet/Eldre versjoner av dokumenter/Risikorapport-v1.docx
No preview for this file type
Eldre versjoner av dokumenter/Risikorapport-v2.1.docx renamed to Annet/Eldre versjoner av dokumenter/Risikorapport-v2.1.docx
No preview for this file type
Eldre versjoner av dokumenter/Risikorapport-v2.docx renamed to Annet/Eldre versjoner av dokumenter/Risikorapport-v2.docx
No preview for this file type
Eldre versjoner av dokumenter/~$sikorapport-v2.docx renamed to Annet/Eldre versjoner av dokumenter/~$sikorapport-v2.docx
No preview for this file type
Rapport - Distribuert server-klient.docx renamed to Annet/Rapport - Distribuert server-klient.docx
No preview for this file type
Risikorapport-v2.2.docx renamed to Annet/Risikorapport-v2.2.docx
No preview for this file type
Rapport - Distribuert server-klient.pdf 0 โ†’ 100644
No preview for this file type
Risikorapport-siste_versjon .pdf 0 โ†’ 100644
No preview for this file type
kol075@158.39.52.99/.DS_Store deleted
No preview for this file type
kol075@158.39.52.99/.idea/misc.xml deleted
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<project version="4">  
3 - <component name="JavaScriptSettings">  
4 - <option name="languageLevel" value="JS_1_8_5" />  
5 - </component>  
6 -</project>  
7 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/.idea/modules.xml deleted
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<project version="4">  
3 - <component name="ProjectModuleManager">  
4 - <modules>  
5 - <module fileurl="file://$PROJECT_DIR$/.idea/restApi.iml" filepath="$PROJECT_DIR$/.idea/restApi.iml" />  
6 - </modules>  
7 - </component>  
8 -</project>  
9 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/.idea/restApi.iml deleted
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<module type="WEB_MODULE" version="4">  
3 - <component name="NewModuleRootManager">  
4 - <content url="file://$MODULE_DIR$" />  
5 - <orderEntry type="inheritedJdk" />  
6 - <orderEntry type="sourceFolder" forTests="false" />  
7 - </component>  
8 -</module>  
9 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/.idea/vcs.xml deleted
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<project version="4">  
3 - <component name="VcsDirectoryMappings">  
4 - <mapping directory="$PROJECT_DIR$/.." vcs="Git" />  
5 - </component>  
6 -</project>  
7 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/.idea/workspace.xml deleted
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<project version="4">  
3 - <component name="ChangeListManager">  
4 - <list default="true" id="0e20d303-9de8-4113-bfd9-019e72b304dc" name="Default" comment="" />  
5 - <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />  
6 - <option name="TRACKING_ENABLED" value="true" />  
7 - <option name="SHOW_DIALOG" value="false" />  
8 - <option name="HIGHLIGHT_CONFLICTS" value="true" />  
9 - <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />  
10 - <option name="LAST_RESOLUTION" value="IGNORE" />  
11 - </component>  
12 - <component name="FUSProjectUsageTrigger">  
13 - <session id="535790383">  
14 - <usages-collector id="statistics.lifecycle.project">  
15 - <counts>  
16 - <entry key="project.closed" value="2" />  
17 - <entry key="project.open.time.1" value="1" />  
18 - <entry key="project.open.time.31" value="1" />  
19 - <entry key="project.opened" value="2" />  
20 - </counts>  
21 - </usages-collector>  
22 - <usages-collector id="statistics.file.extensions.edit">  
23 - <counts>  
24 - <entry key="js" value="3212" />  
25 - </counts>  
26 - </usages-collector>  
27 - <usages-collector id="statistics.file.types.edit">  
28 - <counts>  
29 - <entry key="JavaScript" value="3212" />  
30 - </counts>  
31 - </usages-collector>  
32 - <usages-collector id="statistics.file.types.open">  
33 - <counts>  
34 - <entry key="JavaScript" value="1" />  
35 - </counts>  
36 - </usages-collector>  
37 - <usages-collector id="statistics.vcs.git.usages" />  
38 - <usages-collector id="statistics.js.language.service.starts" />  
39 - <usages-collector id="statistics.file.extensions.open">  
40 - <counts>  
41 - <entry key="js" value="1" />  
42 - </counts>  
43 - </usages-collector>  
44 - </session>  
45 - </component>  
46 - <component name="FileEditorManager">  
47 - <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">  
48 - <file leaf-file-name="routes.js" pinned="false" current-in-tab="true">  
49 - <entry file="file://$PROJECT_DIR$/api/routes/routes.js">  
50 - <provider selected="true" editor-type-id="text-editor">  
51 - <state relative-caret-position="486">  
52 - <caret line="35" column="65" lean-forward="true" selection-start-line="35" selection-start-column="65" selection-end-line="35" selection-end-column="65" />  
53 - <folding />  
54 - </state>  
55 - </provider>  
56 - </entry>  
57 - </file>  
58 - <file leaf-file-name="package.json" pinned="false" current-in-tab="false">  
59 - <entry file="file://$PROJECT_DIR$/package.json">  
60 - <provider selected="true" editor-type-id="text-editor">  
61 - <state relative-caret-position="120">  
62 - <caret line="8" column="48" lean-forward="false" selection-start-line="8" selection-start-column="48" selection-end-line="8" selection-end-column="48" />  
63 - <folding />  
64 - </state>  
65 - </provider>  
66 - </entry>  
67 - </file>  
68 - </leaf>  
69 - </component>  
70 - <component name="Git.Settings">  
71 - <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />  
72 - </component>  
73 - <component name="IdeDocumentHistory">  
74 - <option name="CHANGED_PATHS">  
75 - <list>  
76 - <option value="$PROJECT_DIR$/package.json" />  
77 - <option value="$PROJECT_DIR$/api/routes/routes.js" />  
78 - </list>  
79 - </option>  
80 - </component>  
81 - <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />  
82 - <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER">  
83 - <package-json value="$PROJECT_DIR$/package.json" />  
84 - </component>  
85 - <component name="JsGulpfileManager">  
86 - <detection-done>true</detection-done>  
87 - <sorting>DEFINITION_ORDER</sorting>  
88 - </component>  
89 - <component name="NodeModulesDirectoryManager">  
90 - <handled-path value="$PROJECT_DIR$/node_modules" />  
91 - </component>  
92 - <component name="NodePackageJsonFileManager">  
93 - <packageJsonPaths>  
94 - <path value="$PROJECT_DIR$/package.json" />  
95 - </packageJsonPaths>  
96 - </component>  
97 - <component name="ProjectFrameBounds">  
98 - <option name="y" value="23" />  
99 - <option name="width" value="1440" />  
100 - <option name="height" value="873" />  
101 - </component>  
102 - <component name="ProjectView">  
103 - <navigator currentView="ProjectPane" proportions="" version="1">  
104 - <flattenPackages />  
105 - <showMembers />  
106 - <showModules />  
107 - <showLibraryContents />  
108 - <hideEmptyPackages />  
109 - <abbreviatePackageNames />  
110 - <autoscrollToSource />  
111 - <autoscrollFromSource />  
112 - <sortByType />  
113 - <manualOrder />  
114 - <foldersAlwaysOnTop value="true" />  
115 - </navigator>  
116 - <panes>  
117 - <pane id="Scope" />  
118 - <pane id="Scratches" />  
119 - <pane id="ProjectPane">  
120 - <subPane>  
121 - <expand>  
122 - <path>  
123 - <item name="restApi" type="b2602c69:ProjectViewProjectNode" />  
124 - <item name="restApi" type="462c0819:PsiDirectoryNode" />  
125 - </path>  
126 - <path>  
127 - <item name="restApi" type="b2602c69:ProjectViewProjectNode" />  
128 - <item name="restApi" type="462c0819:PsiDirectoryNode" />  
129 - <item name="api" type="462c0819:PsiDirectoryNode" />  
130 - </path>  
131 - <path>  
132 - <item name="restApi" type="b2602c69:ProjectViewProjectNode" />  
133 - <item name="restApi" type="462c0819:PsiDirectoryNode" />  
134 - <item name="api" type="462c0819:PsiDirectoryNode" />  
135 - <item name="modules" type="462c0819:PsiDirectoryNode" />  
136 - </path>  
137 - <path>  
138 - <item name="restApi" type="b2602c69:ProjectViewProjectNode" />  
139 - <item name="restApi" type="462c0819:PsiDirectoryNode" />  
140 - <item name="api" type="462c0819:PsiDirectoryNode" />  
141 - <item name="routes" type="462c0819:PsiDirectoryNode" />  
142 - </path>  
143 - </expand>  
144 - <select />  
145 - </subPane>  
146 - </pane>  
147 - </panes>  
148 - </component>  
149 - <component name="PropertiesComponent">  
150 - <property name="WebServerToolWindowFactoryState" value="false" />  
151 - <property name="nodejs_package_manager_path" value="npm" />  
152 - </component>  
153 - <component name="RunDashboard">  
154 - <option name="ruleStates">  
155 - <list>  
156 - <RuleState>  
157 - <option name="name" value="ConfigurationTypeDashboardGroupingRule" />  
158 - </RuleState>  
159 - <RuleState>  
160 - <option name="name" value="StatusDashboardGroupingRule" />  
161 - </RuleState>  
162 - </list>  
163 - </option>  
164 - </component>  
165 - <component name="RunManager" selected="npm.debug">  
166 - <configuration name="server.js" type="NodeJSConfigurationType" factoryName="Node.js" temporary="true" path-to-js-file="server.js" working-dir="$PROJECT_DIR$" />  
167 - <configuration name="api" type="js.build_tools.npm" factoryName="npm" temporary="true" nameIsGenerated="true">  
168 - <package-json value="$PROJECT_DIR$/package.json" />  
169 - <command value="run" />  
170 - <scripts>  
171 - <script value="api" />  
172 - </scripts>  
173 - <node-interpreter value="project" />  
174 - <envs />  
175 - </configuration>  
176 - <configuration name="debug" type="js.build_tools.npm" factoryName="npm" temporary="true" nameIsGenerated="true">  
177 - <package-json value="$PROJECT_DIR$/package.json" />  
178 - <command value="run" />  
179 - <scripts>  
180 - <script value="debug" />  
181 - </scripts>  
182 - <node-interpreter value="project" />  
183 - <envs />  
184 - </configuration>  
185 - <list size="3">  
186 - <item index="0" class="java.lang.String" itemvalue="Node.js.server.js" />  
187 - <item index="1" class="java.lang.String" itemvalue="npm.api" />  
188 - <item index="2" class="java.lang.String" itemvalue="npm.debug" />  
189 - </list>  
190 - <recent_temporary>  
191 - <list size="3">  
192 - <item index="0" class="java.lang.String" itemvalue="npm.api" />  
193 - <item index="1" class="java.lang.String" itemvalue="npm.debug" />  
194 - <item index="2" class="java.lang.String" itemvalue="Node.js.server.js" />  
195 - </list>  
196 - </recent_temporary>  
197 - </component>  
198 - <component name="ShelveChangesManager" show_recycled="false">  
199 - <option name="remove_strategy" value="false" />  
200 - </component>  
201 - <component name="SvnConfiguration">  
202 - <configuration />  
203 - </component>  
204 - <component name="TaskManager">  
205 - <task active="true" id="Default" summary="Default task">  
206 - <changelist id="0e20d303-9de8-4113-bfd9-019e72b304dc" name="Default" comment="" />  
207 - <created>1541088603899</created>  
208 - <option name="number" value="Default" />  
209 - <option name="presentableId" value="Default" />  
210 - <updated>1541088603899</updated>  
211 - <workItem from="1541088608198" duration="134000" />  
212 - <workItem from="1541088784358" duration="1764000" />  
213 - <workItem from="1541155443683" duration="1473000" />  
214 - <workItem from="1541596156631" duration="9351000" />  
215 - <workItem from="1541681303243" duration="9060000" />  
216 - <workItem from="1542189792461" duration="1932000" />  
217 - </task>  
218 - <servers />  
219 - </component>  
220 - <component name="TimeTrackingManager">  
221 - <option name="totallyTimeSpent" value="23714000" />  
222 - </component>  
223 - <component name="ToolWindowManager">  
224 - <frame x="0" y="23" width="1440" height="873" extended-state="6" />  
225 - <editor active="true" />  
226 - <layout>  
227 - <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20014094" sideWeight="0.71465296" order="0" side_tool="false" content_ui="combo" />  
228 - <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />  
229 - <window_info id="Docker" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />  
230 - <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />  
231 - <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.3286334" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />  
232 - <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />  
233 - <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.20014094" sideWeight="0.28534704" order="2" side_tool="true" content_ui="tabs" />  
234 - <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />  
235 - <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />  
236 - <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.39903265" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />  
237 - <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />  
238 - <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />  
239 - <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />  
240 - <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />  
241 - <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />  
242 - <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />  
243 - <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />  
244 - <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />  
245 - <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />  
246 - </layout>  
247 - </component>  
248 - <component name="TypeScriptGeneratedFilesManager">  
249 - <option name="version" value="1" />  
250 - </component>  
251 - <component name="VcsContentAnnotationSettings">  
252 - <option name="myLimit" value="2678400000" />  
253 - </component>  
254 - <component name="XDebuggerManager">  
255 - <breakpoint-manager />  
256 - <watches-manager />  
257 - </component>  
258 - <component name="editorHistoryManager">  
259 - <entry file="file://$PROJECT_DIR$/api/routes/routes.js">  
260 - <provider selected="true" editor-type-id="text-editor">  
261 - <state relative-caret-position="0">  
262 - <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />  
263 - <folding />  
264 - </state>  
265 - </provider>  
266 - </entry>  
267 - <entry file="file://$PROJECT_DIR$/package.json">  
268 - <provider selected="true" editor-type-id="text-editor">  
269 - <state relative-caret-position="120">  
270 - <caret line="8" column="48" lean-forward="false" selection-start-line="8" selection-start-column="48" selection-end-line="8" selection-end-column="48" />  
271 - <folding />  
272 - </state>  
273 - </provider>  
274 - </entry>  
275 - <entry file="file://$PROJECT_DIR$/node_modules/cassandra-driver/lib/requests.js">  
276 - <provider selected="true" editor-type-id="text-editor">  
277 - <state relative-caret-position="190">  
278 - <caret line="106" column="9" lean-forward="false" selection-start-line="106" selection-start-column="9" selection-end-line="106" selection-end-column="9" />  
279 - </state>  
280 - </provider>  
281 - </entry>  
282 - <entry file="file://$PROJECT_DIR$/api/routes/routes.js">  
283 - <provider selected="true" editor-type-id="text-editor">  
284 - <state relative-caret-position="486">  
285 - <caret line="35" column="65" lean-forward="true" selection-start-line="35" selection-start-column="65" selection-end-line="35" selection-end-column="65" />  
286 - <folding />  
287 - </state>  
288 - </provider>  
289 - </entry>  
290 - <entry file="file://$PROJECT_DIR$/package.json">  
291 - <provider selected="true" editor-type-id="text-editor">  
292 - <state relative-caret-position="120">  
293 - <caret line="8" column="48" lean-forward="false" selection-start-line="8" selection-start-column="48" selection-end-line="8" selection-end-column="48" />  
294 - <folding />  
295 - </state>  
296 - </provider>  
297 - </entry>  
298 - </component>  
299 -</project>  
300 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/Deployment Diagram.docx deleted
No preview for this file type
kol075@158.39.52.99/README.txt deleted
1 -How to run the server:  
2 -  
3 -1 - This is a node.js server so node is required. https://nodejs.org/en/download/  
4 -2 - Start Windows Powershell on windows or terminal on Mac.  
5 -3 - Navigate to this folder (.....\ITE1893_Risikovurdering_Gruppe4\restApi)  
6 -4 - Use command: "npm run api"  
7 -5 - The server should start running on localhost and listen to port 3000 (and should auto-restart if changes are made in the code)  
8 -6 - Endpoints are documented in the code (routes.js)  
9 -7 - Use Postman to test endpoints where a body is expected  
10 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/api/.DS_Store deleted
No preview for this file type
kol075@158.39.52.99/api/modules/activity.js deleted
1 -var object = Activity.prototype;  
2 -  
3 -function Activity(id, title) {  
4 - this.id = id;  
5 - this.title = title;  
6 -}  
7 -  
8 -module.exports = Activity;  
9 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/api/modules/evaluation.js deleted
1 -var object = Evaluation.prototype;  
2 -  
3 -function Evaluation(id, title, outcome, measures, consequence, probabillity, associatedActivity) {  
4 - this.id = id;  
5 - this.title = title;  
6 - this.outcome = outcome;  
7 - this.measures = measures;  
8 - this.consequence = consequence;  
9 - this.probability = probabillity;  
10 - this.associatedActivity = associatedActivity;  
11 -}  
12 -  
13 -module.exports = Evaluation;  
14 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/api/modules/incident.js deleted
1 -var object = Incident.prototype;  
2 -  
3 -function Incident(id, date, location, title, description, associatedEval) {  
4 - this.id = id;  
5 - this.date = date;  
6 - this.location = location;  
7 - this.title = title;  
8 - this.description = description;  
9 - this.associatedEval = associatedEval;  
10 -}  
11 -  
12 -module.exports = Incident;  
13 \ No newline at end of file 0 \ No newline at end of file
kol075@158.39.52.99/api/routes/routes.js deleted
1 -//All endpoints will be defined in this file  
2 -const Incident = require("../modules/incident.js");  
3 -const Evaluation = require("../modules/evaluation.js");  
4 -const Activity = require("../modules/activity.js");  
5 -  
6 -const uuid = require('uuid');  
7 -var cassandra = require("cassandra-driver");  
8 -  
9 -var db = setupDatabase('127.0.0.1');  
10 -  
11 -var appRouter = function(app) {  
12 -  
13 - //Root endpoint (http://localhost:3000)  
14 - app.get("/", function(req, res) {  
15 - res.send("Evaluation API by Ali, Kristin and Anna is up and running...");  
16 - });  
17 -  
18 -  
19 - /**  
20 - * Get incident by id endpoint (a get request at http://localhost:3000/incident/1 will return incident with id 1)  
21 - */  
22 - app.get("/incident/:id", function (req, res) {  
23 - if (!req.params.id) {  
24 - logEndpoint("get /incident/{id}", null, "ID missing");  
25 - return req.status(400).send("No id entered");  
26 - }  
27 -  
28 - const params = [req.params.id];  
29 - db.execute('SELECT * ' +  
30 - 'FROM risk.incident ' +  
31 - 'WHERE id = ?',  
32 - params,  
33 - { prepare: true },  
34 - function(err, result) {  
35 - if(err) {  
36 - logEndpoint("get /incident/{id}", err, null);  
37 - return res.status(400).send("Bad request, see API log");  
38 - } else {  
39 - if (result.rows.length != 0) {  
40 - logEndpoint("get /incident/{id}", err, "Success, incident returned");  
41 - return res.status(200).send(result.rows[0]);  
42 - } else {  
43 - logEndpoint("get /incident/{id}", err, "Success but id not found in database");  
44 - return res.status(204).send("Id not found in database");  
45 - }  
46 - }  
47 - }  
48 - );  
49 - });  
50 -  
51 - /**  
52 - * See all incidents (a get request at http://localhost:3000/incident will return all incidents)  
53 - */  
54 - app.get("/incident", function (req, res) {  
55 -  
56 - db.execute('SELECT * ' +  
57 - 'FROM risk.incident',  
58 - function (err, result) {  
59 - if(err) {  
60 - logEndpoint("get /incident", err, null);  
61 - return res.status(400).send("Bad request, see API log");  
62 -  
63 - } else {  
64 - if (result.rows.length != 0) {  
65 - logEndpoint("get /incident", err, "Success. All incidents returned");  
66 - return res.status(200).send(result.rows);  
67 - } else {  
68 - logEndpoint("get /incident", err, "Success but no incidents found in database");  
69 - return res.status(204).send("No registered incidents");  
70 - }  
71 - }  
72 - }  
73 - );  
74 - });  
75 -  
76 - /**  
77 - * Add a new incident (a post request at http://localhost:3000/incident - with an "x-www-form-urlencoded" body of params)  
78 - */  
79 - app.post("/incident", function(req, res) {  
80 -  
81 - // All these parameters must exist in the body with the exact name for this method to work  
82 - if(!req.body.date || !req.body.location || !req.body.title || !req.body.description || !req.body.associatedEval) {  
83 - logEndpoint("post /incident", null, "Missing params in body");  
84 - return res.status(400).send("Missing params");  
85 - } else {  
86 - const query = 'INSERT INTO risk.incident(id, date, location, title, description, associatedEval) ' +  
87 - 'VALUES(?,?,?,?,?,?)';  
88 - const params = [uuid(), new Date(req.body.date), req.body.location, req.body.title, req.body.description, req.body.associatedEval];  
89 - db.execute(query, params, { prepare: true }, function (err) {  
90 - if (err) {  
91 - logEndpoint("post /incident", err, "Bad request, see API log");  
92 - return res.status(400).send("Bad Request");  
93 - }  
94 - logEndpoint("post /incident", err, "Success, incident created");  
95 - return res.status(200).send("Incident Created");  
96 - });  
97 - }  
98 - });  
99 -  
100 - /**  
101 - * Update an incident (a patch request at http://localhost:3000/incident/{id} will update the incident with the params passed in the request body)  
102 - */  
103 - app.patch("/incident/:id", function (req, res) {  
104 -  
105 - if (!req.params.id) {  
106 - logEndpoint("patch /incident", null, "ID missing");  
107 - return res.status(400).send("Missing id");  
108 - }  
109 -  
110 - if (!req.body.date || !req.body.location || !req.body.title || !req.body.description || !req.body.associatedEval) {  
111 - logEndpoint("patch /incident", null, "Missing params in body");  
112 - return res.status(400).send("Missing params");  
113 - }  
114 -  
115 - const params = [new Date(req.body.date), req.body.location, req.body.title, req.body.description, req.body.associatedEval, req.params.id];  
116 - db.execute("UPDATE risk.incident " +  
117 - "SET date=?, location=?, title=?, description=?, associatedEval=? " +  
118 - "WHERE id=?",  
119 - params,  
120 - { prepare: true },  
121 - function (err) {  
122 - if (err) {  
123 - logEndpoint("patch /incident", err, "Bad request, see API log");  
124 - return res.status(400).send("Bad Request");  
125 - }  
126 - logEndpoint("patch /incident", err, "Success, incident updated");  
127 - return res.status(200).send("Incident updated");  
128 - }  
129 - );  
130 - });  
131 -  
132 - /**  
133 - * Delete an incident (a delete request at http://localhost:3000/incident/{id} should delete incident with the id passed in)  
134 - */  
135 - app.delete("/incident/:id", function (req, res) {  
136 - if (!req.params.id) {  
137 - logEndpoint("delete /incident", null, "ID missing");  
138 - return res.status(400).send("Missing id");  
139 - }  
140 -  
141 - const params = [req.params.id];  
142 - db.execute("DELETE FROM risk.incident " +  
143 - "WHERE id = ?",  
144 - params,  
145 - { prepare: true },  
146 - function (err) {  
147 - if (err) {  
148 - logEndpoint("delete /incident", err, "Bad request, see API log");  
149 - return res.status(400).send("Bad request");  
150 - }  
151 - logEndpoint("delete /incident", err, "Success, incident deleted");  
152 - return res.status(200).send("Incident deleted");  
153 - }  
154 - );  
155 - });  
156 -  
157 - /**  
158 - * See an evaluation with id x  
159 - */  
160 - app.get("/evaluation/:id", function (req, res) {  
161 - if (!req.params.id) {  
162 - logEndpoint("get /evaluation/{id}", null, "ID missing");  
163 - return req.status(400).send("No id entered");  
164 - }  
165 -  
166 - const params = [req.params.id];  
167 - db.execute('SELECT * ' +  
168 - 'FROM risk.evaluation ' +  
169 - 'WHERE id = ?',  
170 - params,  
171 - { prepare: true},  
172 - function(err, result) {  
173 - if(err) {  
174 - logEndpoint("get /evaluation/{id}", err, "Bad request, see API log");  
175 - return res.status(400).send("Bad request, see API log")  
176 - } else {  
177 - if (result.rows.length != 0) {  
178 - logEndpoint("get /evaluation/{id}", err, "Success, evaluation returned");  
179 - return res.status(200).send(result.rows[0]);  
180 - } else {  
181 - logEndpoint("get /evaluation/{id}", err, "Success but evaluation not found in database");  
182 - return res.status(204).send("Id not found in database");  
183 - }  
184 - }  
185 - }  
186 - );  
187 - });  
188 -  
189 -  
190 - /**  
191 - * See all evaluations  
192 - */  
193 - app.get("/evaluation", function (req, res) {  
194 -  
195 - db.execute('SELECT * ' +  
196 - 'FROM risk.evaluation',  
197 - function (err, result) {  
198 - if(err) {  
199 - logEndpoint("get /evaluation/", err, "Bad request, see API log");  
200 - return res.status(400).send("Bad Request");  
201 -  
202 - } else {  
203 - if (result.rows.length != 0) {  
204 - logEndpoint("get /evaluation/", err, "Success, all evaluations returned");  
205 - return res.status(200).send(result.rows);  
206 - } else {  
207 - logEndpoint("get /evaluation/", err, "Success but no evaluations found in database");  
208 - return res.status(204).send("No registered evaluations");  
209 - }  
210 - }  
211 - }  
212 - );  
213 - });  
214 -  
215 - /**  
216 - * Add a new evaluation  
217 - */  
218 - app.post("/evaluation", function(req, res) {  
219 - if(!req.body.title || !req.body.outcome || !req.body.measures || !req.body.consequence || !req.body.probability || !req.body.associatedActivity) {  
220 - logEndpoint("post /evaluation/", null, "Missing params in body");  
221 - return res.status(400).send("Missing params");  
222 - } else {  
223 - const query = 'INSERT INTO risk.evaluation(id, title, outcome, measures, consequence, probability, associatedActivity) ' +  
224 - 'VALUES(?,?,?,?,?,?,?)';  
225 - const params = [uuid(), req.body.title, req.body.outcome, req.body.measures, req.body.consequence, req.body.probability, req.body.associatedActivity];  
226 - db.execute(query, params, { prepare: true }, function (err) {  
227 - if (err) {  
228 - logEndpoint("post /evaluation/", err, "Bad request, see API log");  
229 - return res.status(400).send("Bad Request");  
230 - }  
231 - logEndpoint("post /evaluation/", err, "Success, evaluation created");  
232 - return res.status(200).send("Evaluation Created");  
233 - })  
234 - }  
235 - });  
236 -  
237 - /**  
238 - * See an activity with id x  
239 - */  
240 - app.get("/activity/:id", function (req, res) {  
241 - if (!req.params.id) {  
242 - logEndpoint("get /activity/{id}", null, "ID missing");  
243 - return req.status(400).send("No id entered");  
244 - }  
245 -  
246 - const params = [req.params.id];  
247 - db.execute('SELECT * ' +  
248 - 'FROM risk.activity ' +  
249 - 'WHERE id = ?',  
250 - params,  
251 - { prepare : true},  
252 - function(err, result) {  
253 - if(err) {  
254 - logEndpoint("get /activity/{id}", err, "Bad request");  
255 - return res.status(400).send("Bad Request")  
256 - } else {  
257 - if (result.rows.length != 0) {  
258 - logEndpoint("get /activity/{id}", err, "Success, activity returned");  
259 - return res.status(200).send(result.rows[0]);  
260 - } else {  
261 - logEndpoint("get /activity/{id}", err, "Success but activity not foound in database");  
262 - return res.status(204).send("Id not found in database");  
263 - }  
264 - }  
265 - }  
266 - );  
267 - });  
268 -  
269 - /**  
270 - * See all activities  
271 - */  
272 - app.get("/activity", function (req, res) {  
273 -  
274 - db.execute('SELECT * ' +  
275 - 'FROM risk.activity',  
276 - function (err, result) {  
277 - if(err) {  
278 - logEndpoint("get /activity/", err, "Bad request");  
279 - return res.status(400).send("Bad Request");  
280 - } else {  
281 - if (result.rows.length != 0) {  
282 - logEndpoint("get /activity/", err, "Success, all activities returned");  
283 - return res.status(200).send(result.rows);  
284 - } else {  
285 - logEndpoint("get /activity/", err, "Success but no activities found in database");  
286 - return res.status(204).send("No registered activities");  
287 - }  
288 - }  
289 - }  
290 - );  
291 - });  
292 -};  
293 -  
294 -/**  
295 - * Sets up connection to the database at a given contact point  
296 - * @param contactPoint: cassandra contact point to connect to  
297 - */  
298 -function setupDatabase(contactPoint) {  
299 - var db = new cassandra.Client({contactPoints: [contactPoint]});  
300 - db.connect(function (err, result) {  
301 - if(err)  
302 - console.log("Could not connect to Cassandra at " + contactPoint);  
303 - else{  
304 - console.log('Successfully connected to Cassandra at ' + contactPoint);  
305 - setupTables(db);  
306 - }  
307 - });  
308 - return db;  
309 -}  
310 -  
311 -/**  
312 -Creates keyspace and all tables needed if they don't exist  
313 - */  
314 -function setupTables(db) {  
315 - db.execute("CREATE KEYSPACE IF NOT EXISTS risk " +  
316 - "WITH REPLICATION = {'class' : 'SimpleStrategy', " +  
317 - " 'replication_factor' : 1};",  
318 - function (err) {  
319 - if (err) console.log("Failed to create keyspace. Error: " + err);  
320 -  
321 - db.execute("CREATE TABLE risk.incident(id uuid, date date, location text, title text, description text, associatedEval uuid, PRIMARY KEY(id));", function (err) {  
322 - if (err) console.log("Failed to create table incident.\n" + err)  
323 - });  
324 -  
325 - db.execute("CREATE TABLE risk.evaluation(id uuid, title text, outcome text, measures text, consequence int, probability int, associatedActivity uuid, PRIMARY KEY(id));", function (err) {  
326 - if (err) console.log("Failed to create table evaluation.\n" + err)  
327 - });  
328 -  
329 - db.execute("CREATE TABLE risk.activity(id uuid, title text, PRIMARY KEY(id));", function (err) {  
330 - if (err) console.log("Failed to create table activity.\n" + err)  
331 - else {  
332 - insertActivity(db, 'Kjore bil');  
333 - insertActivity(db, 'Drikke alkohol');  
334 - insertActivity(db, 'Gjore noe');  
335 - }  
336 - });  
337 - }  
338 - );  
339 -}  
340 -  
341 -/**  
342 - * Insert activity into the Activity table so we can test in app (because user cannot insert or delete activities, only get them)  
343 - * Does not need to be a prepared statement because the API is taking care of this, no input needed from user  
344 - */  
345 -function insertActivity(db, title){  
346 - const params = [uuid(), title];  
347 - db.execute("INSERT INTO risk.activity (id, title) " +  
348 - "VALUES (?,?);",  
349 - params,  
350 - function (err) {  
351 - if (err)  
352 - console.log("Unable to insert activity "+ title +". Error: " + err);  
353 - else  
354 - console.log("Created activity " + title);  
355 - });  
356 -}  
357 -  
358 -function logEndpoint(endpoint, error, message){  
359 - if (error)  
360 - console.log("Request received at endpoint: " + endpoint + ". Error:\n " + error + "\n" + (message ? &q