Skip to content

Commit 01e0f06

Browse files
committed
Initial commit
1 parent 3ec1e72 commit 01e0f06

6 files changed

Lines changed: 248 additions & 0 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
/target/
2+
.idea/
3+
*.iml
4+
.DS_Store
5+
Thumbs.db
6+
7+
*.lic
8+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>com.groupdocs.ui</groupId>
5+
<artifactId>comparison-servlets</artifactId>
6+
<packaging>war</packaging>
7+
<version>1.0-SNAPSHOT</version>
8+
<name>comparison-servlets Maven Webapp</name>
9+
<url>http://maven.apache.org</url>
10+
11+
<properties>
12+
<maven.compiler.source>8</maven.compiler.source>
13+
<maven.compiler.target>8</maven.compiler.target>
14+
</properties>
15+
16+
<dependencies>
17+
<dependency>
18+
<groupId>javax</groupId>
19+
<artifactId>javaee-api</artifactId>
20+
<version>7.0</version>
21+
</dependency>
22+
<dependency>
23+
<groupId>com.groupdocs</groupId>
24+
<artifactId>groupdocs-comparison</artifactId>
25+
<version>3.2.0</version>
26+
</dependency>
27+
</dependencies>
28+
<build>
29+
<plugins>
30+
<plugin>
31+
<groupId>org.eclipse.jetty</groupId>
32+
<artifactId>jetty-maven-plugin</artifactId>
33+
<version>9.3.12.v20160915</version>
34+
</plugin>
35+
</plugins>
36+
</build>
37+
</project>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.groupdocs.ui.comparison;
2+
3+
import com.groupdocs.comparison.Comparison;
4+
5+
import javax.servlet.ServletException;
6+
import javax.servlet.annotation.WebServlet;
7+
import javax.servlet.http.HttpServlet;
8+
import javax.servlet.http.HttpServletRequest;
9+
import javax.servlet.http.HttpServletResponse;
10+
import java.io.IOException;
11+
import java.nio.file.Files;
12+
import java.nio.file.Path;
13+
14+
@WebServlet("/compare")
15+
public class Compare extends HttpServlet {
16+
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
17+
18+
// It is assumed that we are redirected here by Upload servlet
19+
// here so we already know paths of source, target and comparison-type
20+
Path source = (Path) request.getSession().getAttribute("source");
21+
Path target = (Path) request.getSession().getAttribute("target");
22+
int comparisonType = (int) request.getSession().getAttribute("comparison-type");
23+
Path result = Files.createTempFile("groupdocs-comparison-result-", ".docx");
24+
25+
// Now do the comparison
26+
Comparison comparison = new Comparison();
27+
try {
28+
comparison.compare(source.toString(), target.toString(), result.toString(), comparisonType);
29+
// Save path to result file for later use
30+
request.getSession().setAttribute("result", result);
31+
} catch (Exception x) {
32+
throw new ServletException(x);
33+
}
34+
35+
// Redirect to Download servlet
36+
response.sendRedirect("download");
37+
}
38+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.groupdocs.ui.comparison;
2+
3+
import javax.servlet.ServletException;
4+
import javax.servlet.annotation.WebServlet;
5+
import javax.servlet.http.HttpServlet;
6+
import javax.servlet.http.HttpServletRequest;
7+
import javax.servlet.http.HttpServletResponse;
8+
import java.io.IOException;
9+
import java.nio.file.Files;
10+
import java.nio.file.Path;
11+
12+
@WebServlet("/download")
13+
public class Download extends HttpServlet {
14+
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
15+
16+
// It is assumed that we are redirected here by Upload servlet
17+
// here so we already know path to result file
18+
Path result = (Path) request.getSession().getAttribute("result");
19+
if (result == null) {
20+
response.sendError(404);
21+
return;
22+
}
23+
24+
// Let the user download comparison results
25+
response.setContentType("application/octet-stream");
26+
response.setHeader("Content-disposition", "attachment; filename=" + result.getFileName());
27+
Files.copy(result, response.getOutputStream());
28+
}
29+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.groupdocs.ui.comparison;
2+
3+
import javax.servlet.ServletException;
4+
import javax.servlet.annotation.MultipartConfig;
5+
import javax.servlet.annotation.WebServlet;
6+
import javax.servlet.http.*;
7+
import java.io.IOException;
8+
import java.nio.file.Files;
9+
import java.nio.file.Path;
10+
import java.nio.file.StandardCopyOption;
11+
12+
@WebServlet("/upload")
13+
@MultipartConfig
14+
public class Upload extends HttpServlet {
15+
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
16+
HttpSession session = request.getSession(true);
17+
18+
// Save source file to temporary folder and keep the path remembered.
19+
Part source = request.getPart("source");
20+
if (source != null) {
21+
Path path = Files.createTempFile("groupdocs-comparison-source-", source.getSubmittedFileName());
22+
Files.copy(source.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
23+
session.setAttribute("source", path);
24+
}
25+
26+
// Save target file to temporary folder and keep the path remembered.
27+
Part target = request.getPart("target");
28+
if (target != null) {
29+
Path path = Files.createTempFile("groupdocs-comparison-target", target.getSubmittedFileName());
30+
Files.copy(target.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING);
31+
session.setAttribute("target", path);
32+
}
33+
34+
// Save the value of Comparison Type for later use.
35+
int comparisonType = 5;
36+
try {
37+
comparisonType = Integer.parseInt(request.getParameter("comparison-type"));
38+
} catch (Exception x) {
39+
// Ignore
40+
}
41+
request.getSession().setAttribute("comparison-type", comparisonType);
42+
43+
// Redirect to Compare servlet
44+
response.sendRedirect("compare");
45+
}
46+
}
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<!DOCTYPE html>
2+
<html>
3+
<head>
4+
<title>GroupDocs.Comparison for Java</title>
5+
<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css"/>
6+
</head>
7+
<body>
8+
<!-- Minimal HTML form
9+
<form action="upload" method="post" enctype="multipart/form-data">
10+
<input type="file" name="source"/>
11+
<input type="file" name="target"/>
12+
<select name="comparison-type">
13+
<option value="2">Words</option>
14+
<option value="3">Cells</option>
15+
<option value="4">Pdf</option>
16+
<option value="1">Slides</option>
17+
<option value="0">Text</option>
18+
</select>
19+
<button type="submit">Compare &amp; Download Results</button>
20+
</form>
21+
-->
22+
<form action="upload" method="post" enctype="multipart/form-data">
23+
<div style="padding: 20px 21px 0px 21px;">
24+
<font size="5">GroupDocs.Comparison for Java</font>&nbsp; Compare any document
25+
<hr/>
26+
27+
<div style="padding: 20px 20px 20px 20px; text-align: left;">
28+
<div class="alert alert-danger" style="display: none;" id="labelFailed">
29+
</div>
30+
<div class="alert alert-success" style="display: none;" id="labelCompleted">
31+
</div>
32+
<div class="panel panel-primary" style="width: 100%;">
33+
<div class="panel-heading">
34+
<h4><b>[::] GroupDocs.Comparison for Java</b></h4>
35+
</div>
36+
<div class="panel-body">
37+
<table width="100%">
38+
<tr>
39+
<td>
40+
<div style="padding: 20px;">
41+
<div class="panel panel-info">
42+
<div class="panel-heading" style="text-transform: uppercase;">
43+
<b>Source file</b>
44+
</div>
45+
<div class="panel-body">
46+
<div class="input-group">
47+
<input type="file" name="source" width="100%" class="input"/>
48+
</div>
49+
</div>
50+
</div>
51+
</div>
52+
</td>
53+
<td>
54+
<div style="padding: 20px;">
55+
<div class="panel panel-info">
56+
<div class="panel-heading" style="text-transform: uppercase;">
57+
<b>Target file</b>
58+
</div>
59+
<div class="panel-body">
60+
<div class="input-group">
61+
<input type="file" name="target" width="100%" class="input"/>
62+
</div>
63+
</div>
64+
</div>
65+
</div>
66+
</td>
67+
</tr>
68+
</table>
69+
<div style="text-align: center;">
70+
<label>
71+
Comparison Type
72+
<select name="comparison-type">
73+
<option value="2">Words</option>
74+
<option value="3">Cells</option>
75+
<option value="4">Pdf</option>
76+
<option value="1">Slides</option>
77+
<option value="0">Text</option>
78+
</select>
79+
</label>
80+
<br/>
81+
<input type="submit" value="Compare &amp; Download Results" class="btn btn-success"/>
82+
83+
</div>
84+
</div>
85+
</div>
86+
</div>
87+
</div>
88+
</form>
89+
</body>
90+
</html>

0 commit comments

Comments
 (0)