Skip to content

Commit b32b7f7

Browse files
committed
Upload text file, can't use servlet api bc of problems with cytoscape.
Refs #385
1 parent c02543a commit b32b7f7

File tree

1 file changed

+37
-12
lines changed

1 file changed

+37
-12
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/rest/UploadFileResource.java

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
package org.baderlab.csplugins.enrichmentmap.rest;
22

3+
import java.io.BufferedReader;
4+
import java.io.BufferedWriter;
35
import java.io.File;
4-
import java.io.FileOutputStream;
6+
import java.io.FileWriter;
57
import java.io.InputStream;
8+
import java.io.InputStreamReader;
69
import java.nio.file.Files;
710
import java.nio.file.Path;
811
import java.nio.file.attribute.FileAttribute;
912

1013
import javax.ws.rs.Consumes;
1114
import javax.ws.rs.POST;
1215
import javax.ws.rs.Produces;
16+
import javax.ws.rs.QueryParam;
1317
import javax.ws.rs.core.MediaType;
1418
import javax.ws.rs.core.Response;
1519

@@ -20,7 +24,7 @@
2024

2125

2226
@Api(tags="Apps: EnrichmentMap")
23-
@javax.ws.rs.Path("/enrichmentmap/fileupload")
27+
@javax.ws.rs.Path("/enrichmentmap/textfileupload")
2428
public class UploadFileResource {
2529

2630
private Path tempDir = null;
@@ -33,26 +37,47 @@ public class UploadFileResource {
3337
@ApiOperation(value="Upload a file.",
3438
notes=""
3539
)
36-
public Response uploadFile(@FormDataParam("file") InputStream in) {
40+
public Response uploadFile(
41+
@QueryParam("fileName") String fileName,
42+
@FormDataParam("file") InputStream in
43+
) {
3744
try {
3845
synchronized(this) {
3946
if(tempDir == null) {
4047
tempDir = Files.createTempDirectory("em_fileupload_", new FileAttribute<?>[0]);
4148
}
4249
}
4350

44-
File tempFile = Files.createTempFile(tempDir, "em_", "", new FileAttribute<?>[0]).toFile();
51+
File tempFile = Files.createTempFile(tempDir, "em_", "_" + fileName, new FileAttribute<?>[0]).toFile();
4552
tempFile.deleteOnExit();
46-
47-
try(FileOutputStream out = new FileOutputStream(tempFile)) {
48-
int read = 0;
49-
byte[] bytes = new byte[1024];
50-
while((read = in.read(bytes)) != -1) {
51-
out.write(bytes, 0, read);
53+
54+
try (
55+
FileWriter fileWriter = new FileWriter(tempFile);
56+
BufferedWriter buffWriter = new BufferedWriter(fileWriter);
57+
InputStreamReader reader = new InputStreamReader(in);
58+
BufferedReader buffReader = new BufferedReader(reader)
59+
) {
60+
String firstLine = buffReader.readLine();
61+
// Skip 3 lines
62+
buffReader.readLine();
63+
buffReader.readLine();
64+
buffReader.readLine();
65+
66+
String line = buffReader.readLine();
67+
if(!line.startsWith(firstLine)) {
68+
while(line != null) {
69+
buffWriter.write(line);
70+
71+
line = buffReader.readLine();
72+
if(line.startsWith(firstLine)) {
73+
break;
74+
} else {
75+
buffWriter.newLine();
76+
}
77+
}
5278
}
53-
out.flush();
5479
}
55-
80+
5681
String absPath = tempFile.getAbsolutePath();
5782
String response = String.format("{\"path\" : \"%s\"}", absPath);
5883
return Response.status(200).entity(response).build();

0 commit comments

Comments
 (0)