1
1
package org .baderlab .csplugins .enrichmentmap .rest ;
2
2
3
+ import java .io .BufferedReader ;
4
+ import java .io .BufferedWriter ;
3
5
import java .io .File ;
4
- import java .io .FileOutputStream ;
6
+ import java .io .FileWriter ;
5
7
import java .io .InputStream ;
8
+ import java .io .InputStreamReader ;
6
9
import java .nio .file .Files ;
7
10
import java .nio .file .Path ;
8
11
import java .nio .file .attribute .FileAttribute ;
9
12
10
13
import javax .ws .rs .Consumes ;
11
14
import javax .ws .rs .POST ;
12
15
import javax .ws .rs .Produces ;
16
+ import javax .ws .rs .QueryParam ;
13
17
import javax .ws .rs .core .MediaType ;
14
18
import javax .ws .rs .core .Response ;
15
19
20
24
21
25
22
26
@ Api (tags ="Apps: EnrichmentMap" )
23
- @ javax .ws .rs .Path ("/enrichmentmap/fileupload " )
27
+ @ javax .ws .rs .Path ("/enrichmentmap/textfileupload " )
24
28
public class UploadFileResource {
25
29
26
30
private Path tempDir = null ;
@@ -33,26 +37,47 @@ public class UploadFileResource {
33
37
@ ApiOperation (value ="Upload a file." ,
34
38
notes =""
35
39
)
36
- public Response uploadFile (@ FormDataParam ("file" ) InputStream in ) {
40
+ public Response uploadFile (
41
+ @ QueryParam ("fileName" ) String fileName ,
42
+ @ FormDataParam ("file" ) InputStream in
43
+ ) {
37
44
try {
38
45
synchronized (this ) {
39
46
if (tempDir == null ) {
40
47
tempDir = Files .createTempDirectory ("em_fileupload_" , new FileAttribute <?>[0 ]);
41
48
}
42
49
}
43
50
44
- File tempFile = Files .createTempFile (tempDir , "em_" , "" , new FileAttribute <?>[0 ]).toFile ();
51
+ File tempFile = Files .createTempFile (tempDir , "em_" , "_" + fileName , new FileAttribute <?>[0 ]).toFile ();
45
52
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
+ }
52
78
}
53
- out .flush ();
54
79
}
55
-
80
+
56
81
String absPath = tempFile .getAbsolutePath ();
57
82
String response = String .format ("{\" path\" : \" %s\" }" , absPath );
58
83
return Response .status (200 ).entity (response ).build ();
0 commit comments