aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjw2552018-04-21 23:55:26 +0100
committerjw2552018-04-21 23:55:26 +0100
commite6dc8785599d624d7be44e30d45291e696762832 (patch)
tree93ebcdcb91938ca1f50c00eeaa9d442b0137f5c3
parentfiles + conclusion (diff)
downloadmedicine-e6dc8785599d624d7be44e30d45291e696762832.tar.gz
medicine-e6dc8785599d624d7be44e30d45291e696762832.zip

various items

-rw-r--r--report/deliverable-3/main.out36
-rw-r--r--report/deliverable-3/main.synctex.gzbin85283 -> 88217 bytes
-rw-r--r--report/deliverable-3/main.tex9
-rw-r--r--report/deliverable-3/main.toc65
-rw-r--r--report/deliverable-3/texts/files.tex7
-rw-r--r--report/deliverable-3/texts/work.tex26
6 files changed, 110 insertions, 33 deletions
diff --git a/report/deliverable-3/main.out b/report/deliverable-3/main.out
new file mode 100644
index 0000000..daf95b0
--- /dev/null
+++ b/report/deliverable-3/main.out
@@ -0,0 +1,36 @@
+\BOOKMARK [1][-]{section.1}{Aims for Final Submission}{}% 1
+\BOOKMARK [1][-]{section.2}{Completed Work}{}% 2
+\BOOKMARK [2][-]{subsection.2.1}{Endpoints}{section.2}% 3
+\BOOKMARK [1][-]{section.3}{Continued use of Scrum}{}% 4
+\BOOKMARK [2][-]{subsection.3.1}{Sprints}{section.3}% 5
+\BOOKMARK [2][-]{subsection.3.2}{Scrum board}{section.3}% 6
+\BOOKMARK [1][-]{section.4}{File Conversion}{}% 7
+\BOOKMARK [2][-]{subsection.4.1}{Dealing with Images}{section.4}% 8
+\BOOKMARK [3][-]{subsubsection.4.1.1}{Extraction of Zeiss Within `C'}{subsection.4.1}% 9
+\BOOKMARK [3][-]{subsubsection.4.1.2}{Converting Extracted Files}{subsection.4.1}% 10
+\BOOKMARK [3][-]{subsubsection.4.1.3}{Stitching Base Tiles}{subsection.4.1}% 11
+\BOOKMARK [3][-]{subsubsection.4.1.4}{Building Up Hierarchy of Zoom Levels}{subsection.4.1}% 12
+\BOOKMARK [2][-]{subsection.4.2}{Leica \046 Other Formats}{section.4}% 13
+\BOOKMARK [2][-]{subsection.4.3}{Non image formats \(.csv etc.\)}{section.4}% 14
+\BOOKMARK [1][-]{section.5}{File Management}{}% 15
+\BOOKMARK [2][-]{subsection.5.1}{Directory Structure}{section.5}% 16
+\BOOKMARK [2][-]{subsection.5.2}{File Upload}{section.5}% 17
+\BOOKMARK [2][-]{subsection.5.3}{File Download}{section.5}% 18
+\BOOKMARK [1][-]{section.6}{Testing}{}% 19
+\BOOKMARK [2][-]{subsection.6.1}{Integration Testing}{section.6}% 20
+\BOOKMARK [3][-]{subsubsection.6.1.1}{CORS}{subsection.6.1}% 21
+\BOOKMARK [1][-]{section.7}{Process Management and Deployment}{}% 22
+\BOOKMARK [2][-]{subsection.7.1}{Process Manager Selection}{section.7}% 23
+\BOOKMARK [2][-]{subsection.7.2}{pm2 and KeyMetrics}{section.7}% 24
+\BOOKMARK [2][-]{subsection.7.3}{Process Limitations}{section.7}% 25
+\BOOKMARK [2][-]{subsection.7.4}{Heroku Hosting}{section.7}% 26
+\BOOKMARK [2][-]{subsection.7.5}{External System Hosting}{section.7}% 27
+\BOOKMARK [1][-]{section.8}{Conclusion}{}% 28
+\BOOKMARK [2][-]{subsection.8.1}{Future Development}{section.8}% 29
+\BOOKMARK [1][-]{section.9}{Individual Contributions}{}% 30
+\BOOKMARK [2][-]{subsection.9.1}{Tom Harley}{section.9}% 31
+\BOOKMARK [2][-]{subsection.9.2}{Josh Lee}{section.9}% 32
+\BOOKMARK [2][-]{subsection.9.3}{Calum Duff}{section.9}% 33
+\BOOKMARK [2][-]{subsection.9.4}{Johannes Weck}{section.9}% 34
+\BOOKMARK [2][-]{subsection.9.5}{Hafeez Abdul-Rehaman}{section.9}% 35
+\BOOKMARK [1][-]{appendix.A}{Scrum Board Images}{}% 36
diff --git a/report/deliverable-3/main.synctex.gz b/report/deliverable-3/main.synctex.gz
index d6fcc0f..2291534 100644
--- a/report/deliverable-3/main.synctex.gz
+++ b/report/deliverable-3/main.synctex.gz
Binary files differ
diff --git a/report/deliverable-3/main.tex b/report/deliverable-3/main.tex
index b7bb1b5..3d02f11 100644
--- a/report/deliverable-3/main.tex
+++ b/report/deliverable-3/main.tex
@@ -9,6 +9,15 @@
\usepackage{float}
\usepackage{listings}
\usepackage{cite}
+\usepackage{hyperref}
+\hypersetup{
+ colorlinks=true,
+ linkcolor=blue,
+ filecolor=magenta,
+ urlcolor=cyan,
+}
+
+\urlstyle{same}
\def\file{\texttt}
diff --git a/report/deliverable-3/main.toc b/report/deliverable-3/main.toc
index 757c3a2..3cd427a 100644
--- a/report/deliverable-3/main.toc
+++ b/report/deliverable-3/main.toc
@@ -1,29 +1,36 @@
-\contentsline {section}{\numberline {1}Aims for Final Submission}{2}
-\contentsline {section}{\numberline {2}Completed Work}{2}
-\contentsline {section}{\numberline {3}Continued use of Scrum}{2}
-\contentsline {subsection}{\numberline {3.1}Sprints}{3}
-\contentsline {subsection}{\numberline {3.2}Scrum board}{3}
-\contentsline {section}{\numberline {4}File Conversion}{3}
-\contentsline {subsection}{\numberline {4.1}Dealing with Images}{3}
-\contentsline {subsubsection}{\numberline {4.1.1}Extraction of Zeiss Within `C'}{4}
-\contentsline {subsubsection}{\numberline {4.1.2}Converting Extracted Files}{4}
-\contentsline {subsubsection}{\numberline {4.1.3}Stitching Base Tiles}{5}
-\contentsline {subsubsection}{\numberline {4.1.4}Building Up Hierarchy of Zoom Levels}{5}
-\contentsline {subsection}{\numberline {4.2}Leica \& Other Formats}{5}
-\contentsline {subsection}{\numberline {4.3}Non image formats (\texttt {.csv} etc.)}{6}
-\contentsline {section}{\numberline {5}File Management}{6}
-\contentsline {subsection}{\numberline {5.1}Directory Structure}{6}
-\contentsline {subsection}{\numberline {5.2}File Upload}{6}
-\contentsline {subsection}{\numberline {5.3}File Download}{6}
-\contentsline {section}{\numberline {6}Testing}{7}
-\contentsline {subsection}{\numberline {6.1}Integration Testing}{7}
-\contentsline {subsubsection}{\numberline {6.1.1}CORS}{7}
-\contentsline {section}{\numberline {7}Process Management and Deployment}{7}
-\contentsline {subsection}{\numberline {7.1}Process Manager Selection}{7}
-\contentsline {subsection}{\numberline {7.2}pm2 and KeyMetrics}{7}
-\contentsline {subsection}{\numberline {7.3}Process Limitations}{7}
-\contentsline {subsection}{\numberline {7.4}Heroku Hosting}{8}
-\contentsline {subsection}{\numberline {7.5}External System Hosting}{8}
-\contentsline {section}{\numberline {8}Conclusion}{8}
-\contentsline {subsection}{\numberline {8.1}Next Tasks}{8}
-\contentsline {section}{\numberline {A}Scrum Board Images}{9}
+\contentsline {section}{\numberline {1}Aims for Final Submission}{2}{section.1}
+\contentsline {section}{\numberline {2}Completed Work}{2}{section.2}
+\contentsline {subsection}{\numberline {2.1}Endpoints}{2}{subsection.2.1}
+\contentsline {section}{\numberline {3}Continued use of Scrum}{3}{section.3}
+\contentsline {subsection}{\numberline {3.1}Sprints}{3}{subsection.3.1}
+\contentsline {subsection}{\numberline {3.2}Scrum board}{3}{subsection.3.2}
+\contentsline {section}{\numberline {4}File Conversion}{3}{section.4}
+\contentsline {subsection}{\numberline {4.1}Dealing with Images}{3}{subsection.4.1}
+\contentsline {subsubsection}{\numberline {4.1.1}Extraction of Zeiss Within `C'}{4}{subsubsection.4.1.1}
+\contentsline {subsubsection}{\numberline {4.1.2}Converting Extracted Files}{4}{subsubsection.4.1.2}
+\contentsline {subsubsection}{\numberline {4.1.3}Stitching Base Tiles}{5}{subsubsection.4.1.3}
+\contentsline {subsubsection}{\numberline {4.1.4}Building Up Hierarchy of Zoom Levels}{5}{subsubsection.4.1.4}
+\contentsline {subsection}{\numberline {4.2}Leica \& Other Formats}{5}{subsection.4.2}
+\contentsline {subsection}{\numberline {4.3}Non image formats (\texttt {.csv} etc.)}{6}{subsection.4.3}
+\contentsline {section}{\numberline {5}File Management}{6}{section.5}
+\contentsline {subsection}{\numberline {5.1}Directory Structure}{6}{subsection.5.1}
+\contentsline {subsection}{\numberline {5.2}File Upload}{6}{subsection.5.2}
+\contentsline {subsection}{\numberline {5.3}File Download}{7}{subsection.5.3}
+\contentsline {section}{\numberline {6}Testing}{7}{section.6}
+\contentsline {subsection}{\numberline {6.1}Integration Testing}{7}{subsection.6.1}
+\contentsline {subsubsection}{\numberline {6.1.1}CORS}{7}{subsubsection.6.1.1}
+\contentsline {section}{\numberline {7}Process Management and Deployment}{7}{section.7}
+\contentsline {subsection}{\numberline {7.1}Process Manager Selection}{7}{subsection.7.1}
+\contentsline {subsection}{\numberline {7.2}pm2 and KeyMetrics}{7}{subsection.7.2}
+\contentsline {subsection}{\numberline {7.3}Process Limitations}{8}{subsection.7.3}
+\contentsline {subsection}{\numberline {7.4}Heroku Hosting}{8}{subsection.7.4}
+\contentsline {subsection}{\numberline {7.5}External System Hosting}{8}{subsection.7.5}
+\contentsline {section}{\numberline {8}Conclusion}{8}{section.8}
+\contentsline {subsection}{\numberline {8.1}Future Development}{8}{subsection.8.1}
+\contentsline {section}{\numberline {9}Individual Contributions}{8}{section.9}
+\contentsline {subsection}{\numberline {9.1}Tom Harley}{8}{subsection.9.1}
+\contentsline {subsection}{\numberline {9.2}Josh Lee}{8}{subsection.9.2}
+\contentsline {subsection}{\numberline {9.3}Calum Duff}{8}{subsection.9.3}
+\contentsline {subsection}{\numberline {9.4}Johannes Weck}{8}{subsection.9.4}
+\contentsline {subsection}{\numberline {9.5}Hafeez Abdul-Rehaman}{9}{subsection.9.5}
+\contentsline {section}{\numberline {A}Scrum Board Images}{11}{appendix.A}
diff --git a/report/deliverable-3/texts/files.tex b/report/deliverable-3/texts/files.tex
index d77fc30..1c56ccc 100644
--- a/report/deliverable-3/texts/files.tex
+++ b/report/deliverable-3/texts/files.tex
@@ -8,12 +8,11 @@ The directory structure inside projects consists on a purely conceptual level in
The conceptual directory structure, although not obvious to system admins viewing files through a file-viewer on the server, is always enforced to clients connecting to the server endpoint.
\subsection{File Upload}
-When uploading files to the server, a POST request may be issued to *endpoint* ensuring that the headers *headers* are set. Once this request arrives at the server the node library `multer' automatically saves the data to a temporary directory called ``files-temp''.
+When uploading files to the server, a POST request may be issued to the endpoint mentioned in the protocol. Once this request arrives at the server the node library `multer' automatically saves the data to a temporary directory called ``files-temp''.
Next a function is called which parses the path from the request and attempts to find the file given the directory structure. Any part of the path that does not yet exist is created. At this stage the desired action is determined, as we allow for the copying, deleting, moving, truncating, overwriting and writing from an offset. Furthermore large files may be chunked, thus data is added incrementally to the file. The final chunk has the `final' parameter set to true, thus indicating that file-upload is complete.
-Once the file status is set to `final', which is done when the corresponding parameter is set on file-upload, file conversion is initiated. File conversion runs asynchronously separate from the node server. Once file conversion is done, the file status in the database will change to `ready'. The file status may be reviewed by retrieving file meta-data.
+Once the file status is set to `pre-processing', which is done when the corresponding parameter is set on file-upload, file conversion is initiated. File conversion runs asynchronously separate from the node server. Once file conversion is done, the file status in the database will change to `ready'. The file status may be reviewed by retrieving file meta-data.
\subsection{File Download}
-
-To download files or file meta-data, a GET request may be issued to *endpoint* with parameters *params*.
+Files may be retrieved from the server either by supplying the file uuid or the path.
diff --git a/report/deliverable-3/texts/work.tex b/report/deliverable-3/texts/work.tex
index 77b6dba..b06aebc 100644
--- a/report/deliverable-3/texts/work.tex
+++ b/report/deliverable-3/texts/work.tex
@@ -9,4 +9,30 @@ Looking back on the tasks set out from the initial specifications we are very sa
\item[Allow conversion of images and tabular data] Our current system allows fluent transition between czi input files and tiled png output *todo*. Tabular data is handled in csv format, giving the server a good understanding of the data.
\item[Robustness to user input] A reasonable attempt was made to catch out invalid input and close collaboration with the HCI groups ensured a distribution of responsibility for the preservation of dependencies and cleaning of user input.
\item[Ensure compatibility between groups] A common api was decided by the student body to ensure seamless communication between systems. As part of our testing we integrated with several other HCI and ML groups.
+\item[Follow an agreed protocol for intergroup communication] We implemented the entire protocol \url{https://github.com/CS3099JH2017/cs3099jh/blob/master/protocols/BE01.md}
+\end{description}
+
+\subsection{Endpoints}
+\begin{description}
+\item[get '/_supported_protocols_'] Returns the supported protocols
+\item[get '/log'] Allows retreiving of logs (requires admin privileges)
+\item[post '/log'] Allows viewing of logs (requires logging permission)
+\item[get '/properties'] Returns the server configuration
+\item[post '/properties'] Allows changing of the server configuration
+\item[get '/user_privileges'] Returns all available privileges
+\item[get '/users'] Returns all users
+\item[get '/users/:username'] Returns information on a specific user
+\item[post '/users/:username'] Allows adding of users and changing of user information
+\item[get '/users/:username/properties'] Returns additional configuration options on a specific user
+\item[get '/current_user'] Returns information of the authenticated user
+\item[post '/current_user'] Allows changing of information for the authenticated user
+\item[get '/project_roles'] Returns all project roles
+\item[get '/projects'] Returns all projects
+\item[get '/projects/:project_name'] Returns information of a specific project
+\item[post '/projects/:project_name'] Allows changing of information of a specific project
+\item[get '/projects/:project_name/properties'] Returns additional configuration options of a specific project
+\item[get '/projects/:project_name/files/'] Returns all files and folders at the base level of the project (non-recursive)
+\item[get '/projects/:project_name/files/:path'] Returns a file
+\item[post '/projects/:project_name/files/:path'] Uploads a file
+\item[get '/projects/:project_name/files_by_id/:id'] Returns a file
\end{description} \ No newline at end of file