Skip to content

Commit b04dc4e

Browse files
Updated to work with Java 8. Fixed problem with exists result file
1 parent 7e95d22 commit b04dc4e

7 files changed

Lines changed: 89 additions & 16 deletions

File tree

Demos/Dropwizard/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<url>https://groupdocs.com</url>
1414

1515
<properties>
16-
<java.version>15</java.version>
16+
<java.version>1.8</java.version>
1717
<maven.compiler.source>${java.version}</maven.compiler.source>
1818
<maven.compiler.target>${java.version}</maven.compiler.target>
1919
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
@@ -125,7 +125,7 @@
125125
<dependency>
126126
<groupId>com.dropbox.core</groupId>
127127
<artifactId>dropbox-core-sdk</artifactId>
128-
<version>5.2.0</version>
128+
<version>4.0.1</version>
129129
</dependency>
130130

131131
<dependency>

Demos/Dropwizard/src/main/java/com/groupdocs/ui/common/util/TempFilesManager.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.nio.file.FileSystems;
99
import java.nio.file.Files;
1010
import java.nio.file.Path;
11+
import java.nio.file.Paths;
1112

1213
public final class TempFilesManager {
1314
private static final Logger logger = LoggerFactory.getLogger(TempFilesManager.class);
@@ -36,7 +37,7 @@ public static void createInstance(String tempDirectory) {
3637
if (tempDirectory == null) {
3738
throw new IllegalArgumentException("tempDirectory must not be null");
3839
}
39-
INSTANCE = new TempFilesManager(Path.of(tempDirectory));
40+
INSTANCE = new TempFilesManager(Paths.get(tempDirectory));
4041
}
4142

4243
public static TempFilesManager getInstance() {

Demos/Dropwizard/src/main/java/com/groupdocs/ui/comparison/provider/DropboxFilesProvider.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ public void receiveResultOutputStream(String fileName, Consumer<OutputStream> st
123123
final String path = "/" + resultDirectory + "/" + fileName;
124124
logger.debug("Request to Dropbox API to upload result file '" + path + "'");
125125
try {
126+
// Always delete result file if it is already exist.
127+
if (isFileExists(path)) {
128+
deleteFile(path);
129+
}
126130
final DbxUserFilesRequests filesRequests = client.files();
127131
try (final UploadUploader apiUploader = filesRequests.upload(path)) {
128132
try (final OutputStream outputStream = apiUploader.getOutputStream()) {
@@ -139,11 +143,39 @@ public void receiveResultOutputStream(String fileName, Consumer<OutputStream> st
139143
public boolean isFileExists(String path) {
140144
logger.debug("Checking is result file exists: '" + path + "'");
141145
try {
142-
ListFolderResult result = client.files().listFolder("");
146+
if (path.startsWith("/")) {
147+
path = path.substring(1);
148+
}
149+
final String fileDirectory, fileName;
150+
if (path.contains("/")) {
151+
final int nameStartsFrom = path.lastIndexOf("/") + 1;
152+
fileDirectory = "/" + path.substring(0, nameStartsFrom);
153+
fileName = path.substring(nameStartsFrom);
154+
} else {
155+
fileDirectory = "";
156+
fileName = path;
157+
}
158+
159+
ListFolderResult result = client.files().listFolder(fileDirectory);
143160
final List<Metadata> entries = result.getEntries();
144-
return entries.stream().anyMatch(metadata -> metadata.getPathLower().equals(path.toLowerCase(Locale.ROOT)));
161+
return entries.stream().anyMatch(metadata -> metadata.getName().equals(fileName.toLowerCase(Locale.ROOT)));
145162
} catch (Exception e) {
146163
throw new ApiException("Api exception: Can't check if result file exists!", e);
147164
}
148165
}
166+
167+
@Override
168+
public void deleteFile(String path) throws ApiException {
169+
logger.debug("Request to Dropbox API to delete file with path '" + path + "'");
170+
171+
try {
172+
final DbxUserFilesRequests filesRequests = client.files();
173+
if (!path.startsWith("/")) {
174+
path = "/" + path;
175+
}
176+
filesRequests.deleteV2(path);
177+
} catch (Exception e) {
178+
throw new ApiException("Api exception: Can't delete file data!", e);
179+
}
180+
}
149181
}

Demos/Dropwizard/src/main/java/com/groupdocs/ui/comparison/provider/FilesProvider.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import com.groupdocs.ui.common.Defaults;
44
import com.groupdocs.ui.common.config.GlobalConfiguration;
5-
import com.groupdocs.ui.common.exception.ApiException;
5+
import com.groupdocs.ui.common.exception.TotalGroupDocsException;
6+
import com.groupdocs.ui.common.exception.TotalGroupDocsException;
67
import com.groupdocs.ui.comparison.config.ComparisonConfiguration;
78

89
import java.io.InputStream;
@@ -17,17 +18,19 @@ public interface DirectoryContentVisitor {
1718
void visit(String guid, String name, boolean isDirectory, long size);
1819
}
1920

20-
public abstract void visitDirectoryContent(String path, DirectoryContentVisitor visitor) throws ApiException;
21+
public abstract void visitDirectoryContent(String path, DirectoryContentVisitor visitor) throws TotalGroupDocsException;
2122

22-
public abstract void receiveFilesInputStream(String path, Consumer<InputStream> streamConsumer) throws ApiException;
23+
public abstract void receiveFilesInputStream(String path, Consumer<InputStream> streamConsumer) throws TotalGroupDocsException;
2324

24-
public abstract void receiveFilesOutputStream(String fileName, Consumer<OutputStream> streamConsumer) throws ApiException;
25+
public abstract void receiveFilesOutputStream(String fileName, Consumer<OutputStream> streamConsumer) throws TotalGroupDocsException;
2526

26-
public abstract void receiveResultInputStream(String fileName, Consumer<InputStream> streamConsumer) throws ApiException;
27+
public abstract void receiveResultInputStream(String fileName, Consumer<InputStream> streamConsumer) throws TotalGroupDocsException;
2728

28-
public abstract void receiveResultOutputStream(String fileName, Consumer<OutputStream> streamConsumer) throws ApiException;
29+
public abstract void receiveResultOutputStream(String fileName, Consumer<OutputStream> streamConsumer) throws TotalGroupDocsException;
2930

30-
public abstract boolean isFileExists(String fileName) throws ApiException;
31+
public abstract boolean isFileExists(String fileName) throws TotalGroupDocsException;
32+
33+
public abstract void deleteFile(String path) throws TotalGroupDocsException;
3134

3235
public static void create(GlobalConfiguration globalConfiguration) {
3336
final ComparisonConfiguration comparisonConfiguration = globalConfiguration.getComparison();

Demos/Dropwizard/src/main/java/com/groupdocs/ui/comparison/provider/GoogleFilesProvider.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,4 +257,27 @@ public boolean isFileExists(String path) throws ApiException {
257257
throw new ApiException("Api exception: Can't check if result file exists!", e);
258258
}
259259
}
260+
261+
@Override
262+
public void deleteFile(String path) throws ApiException {
263+
logger.debug("Deleting the file: '" + path + "'");
264+
try {
265+
FileList result = service.files().list()
266+
.setFields("files(id)")
267+
.setCorpora("user")
268+
.set("ownedByMe", true)
269+
.setSpaces("drive")
270+
.set("trashed", false)
271+
// Remove directories and their content from the list, check by name is file exists
272+
.setQ("mimeType != 'application/vnd.google-apps.folder' and 'root' in parents and name = '" + path + "'")
273+
.execute();
274+
final Optional<File> optionalFile = result.getFiles().stream().findFirst();
275+
if (optionalFile.isPresent()) {
276+
service.files().delete(optionalFile.get().getId());
277+
}
278+
279+
} catch (Exception e) {
280+
throw new ApiException("Api exception: Can't delete the file!", e);
281+
}
282+
}
260283
}

Demos/Dropwizard/src/main/java/com/groupdocs/ui/comparison/provider/LocalFilesProvider.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.groupdocs.ui.comparison.provider;
22

33
import com.groupdocs.ui.common.exception.LocalDiskException;
4-
import com.groupdocs.ui.common.exception.LocalDiskException;
4+
import com.groupdocs.ui.common.exception.TotalGroupDocsException;
55
import com.groupdocs.ui.comparison.config.LocalProviderConfiguration;
66
import org.slf4j.Logger;
77
import org.slf4j.LoggerFactory;
@@ -119,7 +119,17 @@ public void receiveResultOutputStream(String fileName, Consumer<OutputStream> st
119119

120120
@Override
121121
public boolean isFileExists(String path) {
122-
logger.debug("Checking is result file exists: '" + path + "'");
122+
logger.debug("Checking is file exists: '" + path + "'");
123123
return Files.exists(filesDirectory.resolve(path));
124124
}
125+
126+
@Override
127+
public void deleteFile(String path) throws TotalGroupDocsException {
128+
logger.debug("Deleting the file: '" + path + "'");
129+
try {
130+
Files.delete(filesDirectory.resolve(path));
131+
} catch (IOException e) {
132+
throw new LocalDiskException("Storage exception: Can't delete the file!", e);
133+
}
134+
}
125135
}

Demos/Dropwizard/src/main/java/com/groupdocs/ui/comparison/service/ComparisonServiceImpl.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,13 @@ public boolean checkFiles(CompareRequest compareRequest) {
305305
* @return path to file in storage
306306
*/
307307
@Override
308-
public String uploadFile(InputStream inputStream, String fileName, boolean isRewrite) throws Exception {
308+
public String uploadFile(InputStream inputStream, String fileName, boolean isRewrite) {
309309
final FilesProvider filesProvider = FilesProvider.getInstance();
310-
if (!filesProvider.isFileExists(fileName) || isRewrite) {
310+
final boolean isFileExists = filesProvider.isFileExists(fileName);
311+
if (!isFileExists || isRewrite) {
312+
if (isFileExists) {
313+
filesProvider.deleteFile(fileName);
314+
}
311315
filesProvider.receiveFilesOutputStream(fileName, outputStream -> {
312316
try {
313317
IOUtils.copy(inputStream, outputStream);

0 commit comments

Comments
 (0)