Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Wang, Vincent H
simplewebapp
Commits
4e89cbc7
Commit
4e89cbc7
authored
Jan 25, 2021
by
Joshua Priestley
Browse files
Added comments to Dockerfile and reformatted code
parent
201fa8fc
Changes
7
Hide whitespace changes
Inline
Side-by-side
Dockerfile
View file @
4e89cbc7
#
# Build stage
#
FROM
maven:3.6.0-jdk-11-slim AS build
RUN
apt-get
-y
update
&&
apt-get
-y
install
texlive-full pandoc
FROM
maven:3.6.0-jdk-11-slim
# Install necessary dependencies
RUN
apt-get
-y
update
RUN
apt-get
-y
install
texlive-full pandoc
# Copy source files
COPY
src /src
COPY
pom.xml /
# Start application
RUN
mvn package
EXPOSE
8080
CMD
["sh", "target/bin/simplewebapp"]
\ No newline at end of file
src/main/java/ic/doc/web/HTMLResultPage.java
View file @
4e89cbc7
...
...
@@ -9,36 +9,46 @@ import java.io.PrintWriter;
public
class
HTMLResultPage
implements
Page
{
private
final
String
query
;
private
final
String
answer
;
public
HTMLResultPage
(
String
query
,
String
answer
)
{
this
.
query
=
query
;
this
.
answer
=
answer
;
private
final
String
query
;
private
final
String
answer
;
public
HTMLResultPage
(
String
query
,
String
answer
)
{
this
.
query
=
query
;
this
.
answer
=
answer
;
}
public
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
{
resp
.
setContentType
(
"text/html"
);
PrintWriter
writer
=
resp
.
getWriter
();
// Header
writer
.
println
(
"<html>\n"
+
"<head><link rel = \"stylesheet\" href=\"https://drive.google.com/uc?export=view&id=1b-2_6zWL_6F360SBlZrdIGrpsuWgNkKz\" />\n"
+
" <title>\n"
+
" Welcome\n"
+
" </title>\n"
+
"</head>"
);
// Body
writer
.
println
(
"<body><div class=\"container\"><h1>"
);
if
(
answer
==
null
||
answer
.
isEmpty
())
{
writer
.
println
(
"Query Not Found"
);
}
else
{
writer
.
println
(
query
.
toUpperCase
());
}
public
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
{
resp
.
setContentType
(
"text/html"
);
PrintWriter
writer
=
resp
.
getWriter
();
writer
.
println
(
"<html>\n"
+
" <head><link rel = \"stylesheet\" href=\"https://drive.google.com/uc?export=view&id=1b-2_6zWL_6F360SBlZrdIGrpsuWgNkKz\" />\n"
+
" <title>\n"
+
" Welcome\n"
+
" </title>\n"
);
writer
.
println
(
"</head><body><div class=\"container\"><h1>"
);
if
(
answer
==
null
||
answer
.
isEmpty
())
{
writer
.
println
(
"Query Not Found"
);
}
else
{
writer
.
println
(
query
.
toUpperCase
());
}
writer
.
println
(
"</h1><hr>"
);
if
(
answer
==
null
||
answer
.
isEmpty
())
{
writer
.
print
(
"<p>Sorry, we didn't understand <em>"
+
query
+
"</em></p>"
);
}
else
{
writer
.
println
(
"<p>"
+
answer
.
replace
(
"\n"
,
"<br>"
)
+
"</p>"
);
}
writer
.
println
(
"<a href=\"/\"><button>Back to Search Page</button></a>"
);
writer
.
println
(
"</div></body></html>"
);
writer
.
println
(
"</h1><hr>"
);
if
(
answer
==
null
||
answer
.
isEmpty
())
{
writer
.
print
(
"<p>Sorry, we didn't understand <em>"
+
query
+
"</em></p>"
);
}
else
{
writer
.
println
(
"<p>"
+
answer
.
replace
(
"\n"
,
"<br>"
)
+
"</p>"
);
}
writer
.
println
(
"<a href=\"/\"><button>Back to Search Page</button></a>"
);
// Footer
writer
.
println
(
"</div></body></html>"
);
}
}
src/main/java/ic/doc/web/IndexPage.java
View file @
4e89cbc7
...
...
@@ -9,41 +9,45 @@ import java.io.PrintWriter;
public
class
IndexPage
implements
Page
{
public
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
{
resp
.
setContentType
(
"text/html"
);
PrintWriter
writer
=
resp
.
getWriter
();
public
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
{
resp
.
setContentType
(
"text/html"
);
PrintWriter
writer
=
resp
.
getWriter
();
// Header
writer
.
println
(
"<html>\n"
+
" <head><link rel = \"stylesheet\" href=\"https://drive.google.com/uc?export=view&id=1b-2_6zWL_6F360SBlZrdIGrpsuWgNkKz\" />\n"
+
" <title>\n"
+
" Welcome\n"
+
" </title>\n"
);
// Header
writer
.
println
(
"<html>\n"
+
"<head><link rel = \"stylesheet\" href=\"https://drive.google.com/uc?export=view&id=1b-2_6zWL_6F360SBlZrdIGrpsuWgNkKz\" />\n"
+
" <title>\n"
+
" Welcome\n"
+
" </title>\n"
+
"</head>"
);
// Body
writer
.
println
(
" <body>\n"
+
" <div class=\"container\">\n"
+
" <h1>\n"
+
" Search\n"
+
" </h1>\n"
+
" <hr>\n"
+
" <form>\n"
+
" <label>Enter your query in the box below.</label>\n"
+
" <input type=\"text\" name=\"q\" />\n"
+
" <label for=\"dl\">Choose a download type:</label>\n"
+
"\n"
+
" <select name=\"markdown\" id=\"dl\">\n"
+
" <option>No Download (Default)</option>\n"
+
" <option id=\"md\" name=\"markdown\" value=\"md\">Markdown File</option>\n"
+
" <option value=\"pdf\">PDF File</option>\n"
+
" </select>\n"
+
" <input type=\"submit\">\n"
+
" </form>\n"
+
" </div>\n"
+
" </body>\n"
+
"</html>"
);
writer
.
println
(
" </head>\n"
+
" <body>\n"
+
" <div class=\"container\">\n"
+
" <h1>\n"
+
" Search\n"
+
" </h1>\n"
+
" <hr>\n"
+
" <form>\n"
+
" <label>Enter your query in the box below.</label>\n"
+
" <input type=\"text\" name=\"q\" />\n"
+
" <label for=\"dl\">Choose a download type:</label>\n"
+
"\n"
+
" <select name=\"markdown\" id=\"dl\">\n"
+
" <option>No Download (Default)</option>\n"
+
" <option id=\"md\" name=\"markdown\" value=\"md\">Markdown File</option>\n"
+
" <option value=\"pdf\">PDF File</option>\n"
+
" </select>\n"
+
" <input type=\"submit\">\n"
+
" </form>\n"
+
" </div>\n"
+
" </body>\n"
+
"</html>"
);
// Footer
writer
.
println
(
"</body>"
);
writer
.
println
(
"</html>"
);
}
// Footer
writer
.
println
(
"</body>"
);
writer
.
println
(
"</html>"
);
}
}
src/main/java/ic/doc/web/MarkdownResultPage.java
View file @
4e89cbc7
...
...
@@ -7,7 +7,6 @@ import java.io.IOException;
import
java.io.InputStream
;
import
javax.servlet.http.HttpServletResponse
;
public
class
MarkdownResultPage
implements
Page
{
protected
final
String
query
;
...
...
@@ -24,7 +23,7 @@ public class MarkdownResultPage implements Page {
resp
.
setContentType
(
"file/markdown"
);
resp
.
setHeader
(
"Content-Disposition"
,
"Inline; filename="
+
query
+
".md"
);
outputStreams
(
markdown
,
resp
);
outputStreams
(
markdown
,
resp
);
// Remove temporary file
markdown
.
delete
();
...
...
@@ -32,27 +31,26 @@ public class MarkdownResultPage implements Page {
void
outputStreams
(
File
markdown
,
HttpServletResponse
resp
)
throws
IOException
{
// Byte streams
InputStream
inputStream
=
new
FileInputStream
(
markdown
);
inputStream
.
transferTo
(
resp
.
getOutputStream
());
InputStream
inputStream
=
new
FileInputStream
(
markdown
);
inputStream
.
transferTo
(
resp
.
getOutputStream
());
}
File
getFile
()
throws
IOException
{
File
markdown
=
new
File
(
(
query
+
".md"
)
)
;
// Header
FileWriter
writer
=
new
FileWriter
(
markdown
);
writer
.
write
(
"<h1>"
+
query
+
"<h1>"
);
writer
.
write
(
"-------------------------------------------------<br>"
);
// Content
if
(
answer
==
null
||
answer
.
isEmpty
())
{
writer
.
write
(
"Sorry, we did not understand your query.\n"
);
}
else
{
writer
.
write
(
"<p>"
+
answer
+
"</p>"
);
}
writer
.
close
();
return
markdown
;
File
markdown
=
new
File
(
query
+
".md"
);
// Header
FileWriter
writer
=
new
FileWriter
(
markdown
);
writer
.
write
(
"<h1>"
+
query
+
"<h1>"
);
writer
.
write
(
"-------------------------------------------------<br>"
);
// Content
if
(
answer
==
null
||
answer
.
isEmpty
())
{
writer
.
write
(
"Sorry, we did not understand your query.\n"
);
}
else
{
writer
.
write
(
"<p>"
+
answer
+
"</p>"
);
}
writer
.
close
();
return
markdown
;
}
}
src/main/java/ic/doc/web/PDFResultPage.java
View file @
4e89cbc7
...
...
@@ -12,15 +12,15 @@ public class PDFResultPage extends MarkdownResultPage {
@Override
public
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
{
resp
.
setContentType
(
"file/
markdown
"
);
resp
.
setContentType
(
"file/
pdf
"
);
File
markdown
=
getFile
();
resp
.
setHeader
(
"Content-Disposition"
,
"Inline; filename="
+
query
+
".pdf"
);
ProcessBuilder
pb
=
new
ProcessBuilder
(
"pandoc"
,
markdown
.
getAbsolutePath
(),
"-o"
,
"result.pdf"
);
Process
p
=
pb
.
start
();
try
{
p
.
waitFor
();
}
catch
(
InterruptedException
e
)
{
...
...
@@ -34,6 +34,5 @@ public class PDFResultPage extends MarkdownResultPage {
// Remove temporary file
markdown
.
delete
();
pdf
.
delete
();
}
}
src/main/java/ic/doc/web/Page.java
View file @
4e89cbc7
...
...
@@ -5,5 +5,5 @@ import java.io.IOException;
public
interface
Page
{
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
;
void
writeTo
(
HttpServletResponse
resp
)
throws
IOException
;
}
src/main/java/ic/doc/web/style.html
deleted
100644 → 0
View file @
201fa8fc
<style>body
{
font-family
:
Helvetica
,
sans-serif
;
}
.container
{
width
:
500px
;
height
:
350px
;
background-color
:
rgb
(
238
,
238
,
238
);
position
:
fixed
;
border
:
2px
solid
rgb
(
190
,
190
,
190
);
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-90%
);
border-radius
:
20px
;
padding
:
40px
;
}
h1
{
font-family
:
Helvetica
,
sans-serif
;
margin-top
:
30px
;
}
hr
{
border
:
3px
solid
rgb
(
190
,
190
,
190
);
border-radius
:
5px
;
}
input
[
type
=
text
],
select
{
width
:
100%
;
padding
:
12px
20px
;
margin
:
8px
0
;
display
:
inline-block
;
border
:
1px
solid
#ccc
;
border-radius
:
4px
;
box-sizing
:
border-box
;
}
input
[
type
=
submit
],
button
{
width
:
100%
;
background-color
:
#4CAF50
;
color
:
white
;
padding
:
14px
20px
;
margin
:
8px
0
;
border
:
none
;
border-radius
:
4px
;
cursor
:
pointer
;
}
input
[
type
=
submit
]
:hover
{
background-color
:
#45a049
;
}
form
{
margin-top
:
30px
;
}
</style>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment