Skip to content

Commit bff4cc8

Browse files
committed
Image API support Local
1 parent 158099a commit bff4cc8

File tree

9 files changed

+57
-21
lines changed

9 files changed

+57
-21
lines changed

common/src/main/java/com/genexus/util/GXExternalFileInfo.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.genexus.CommonUtil;
99
import com.genexus.db.driver.*;
1010
import com.genexus.common.interfaces.SpecificImplementation;
11+
import com.genexus.db.driver.ResourceAccessControlList;
1112

1213
import java.util.Date;
1314

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.genexus.util;
2+
3+
public enum GxFileInfoSourceType {
4+
Unknown,
5+
LocalFile,
6+
ExternalFile
7+
}

gxoffice/src/main/java/com/genexus/gxoffice/poi/sxssf/ExcelDocument.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.genexus.gxoffice.poi.sxssf;
22

3+
import com.genexus.util.GxFileInfoSourceType;
34
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
45
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
56

@@ -28,8 +29,7 @@ public short Open(String fileName) {
2829
return errCod;
2930
}
3031
} else {
31-
boolean isAbsolute = new java.io.File(fileName).isAbsolute();
32-
GXFile file = new GXFile(fileName, Constants.EXTERNAL_UPLOAD_ACL, isAbsolute);
32+
GXFile file = new GXFile("", fileName, Constants.EXTERNAL_UPLOAD_ACL, GxFileInfoSourceType.Unknown);
3333
if (file.exists()) {
3434
// System.out.println("Opening..");
3535
workBook = new SXSSFWorkbook(new XSSFWorkbook(file.getStream()));

gxoffice/src/main/java/com/genexus/gxoffice/poi/xssf/ExcelDocument.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.io.ByteArrayInputStream;
44
import java.io.ByteArrayOutputStream;
55

6+
import com.genexus.util.GxFileInfoSourceType;
67
import org.apache.poi.ss.usermodel.Row;
78
import org.apache.poi.ss.usermodel.Sheet;
89
import org.apache.poi.ss.usermodel.Workbook;
@@ -36,8 +37,7 @@ public short Open(String fileName) {
3637
return errCod;
3738
}
3839
} else {
39-
boolean isAbsolute = new java.io.File(fileName).isAbsolute();
40-
GXFile file = new GXFile(fileName, Constants.EXTERNAL_UPLOAD_ACL, isAbsolute);
40+
GXFile file = new GXFile("", fileName, Constants.EXTERNAL_UPLOAD_ACL, GxFileInfoSourceType.Unknown);
4141
if (file.exists()) {
4242
// System.out.println("Opening..");
4343
workBook = new XSSFWorkbook(file.getStream());

java/src/main/java/com/genexus/GxImageUtil.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import java.awt.image.BufferedImage;
88
import java.io.*;
99

10+
import com.genexus.db.driver.ResourceAccessControlList;
11+
import com.genexus.util.GxFileInfoSourceType;
1012
import com.genexus.util.GXFile;
1113
import org.apache.logging.log4j.Logger;
1214

@@ -15,7 +17,12 @@ public class GxImageUtil {
1517
private static int INVALID_CODE = -1;
1618

1719
private static InputStream getInputStream(String imageFile) throws IOException {
18-
return new GXFile(imageFile.replace("/", File.separator)).getStream();
20+
return getGXFile(imageFile).getStream();
21+
}
22+
23+
private static GXFile getGXFile(String imageFile) {
24+
String basePath = (com.genexus.ModelContext.getModelContext() != null) ? com.genexus.ModelContext.getModelContext().getHttpContext().getDefaultPath(): "";
25+
return new GXFile(basePath, imageFile.replace("/", File.separator), ResourceAccessControlList.Default, GxFileInfoSourceType.Unknown);
1926
}
2027

2128
public static long getFileSize(String imageFile){
@@ -78,7 +85,7 @@ private static void writeImage(BufferedImage croppedImage, String destinationFil
7885
try (ByteArrayOutputStream outStream = new ByteArrayOutputStream()) {
7986
ImageIO.write(croppedImage, CommonUtil.getFileType(destinationFilePathOrUrl), outStream);
8087
try (ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray())) {
81-
GXFile file = new GXFile(destinationFilePathOrUrl);
88+
GXFile file = getGXFile(destinationFilePathOrUrl);
8289
file.create(inStream, true);
8390
file.close();
8491
}

java/src/main/java/com/genexus/specific/java/FileUtils.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package com.genexus.specific.java;
22

33
import com.genexus.common.classes.AbstractGXFile;
4-
import com.genexus.util.GXFile;
54
import com.genexus.db.driver.ResourceAccessControlList;
5+
import com.genexus.util.GXFile;
6+
import com.genexus.util.GxFileInfoSourceType;
67

78
import java.io.File;
89
import java.io.IOException;
@@ -47,7 +48,7 @@ public void copyFile(File file, File file2) throws IOException {
4748

4849
@Override
4950
public AbstractGXFile createFile(String file, ResourceAccessControlList acl, boolean local) {
50-
return new GXFile(file, acl, local);
51+
return new GXFile(file, acl, local ? GxFileInfoSourceType.LocalFile: GxFileInfoSourceType.Unknown);
5152
}
5253

5354
}

java/src/main/java/com/genexus/util/GXFile.java

Lines changed: 33 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,35 +46,54 @@ public GXFile(String fileName) {
4646
}
4747

4848
//For compatibility reasons
49+
@Deprecated
4950
public GXFile(String fileName, boolean isPrivate) {
50-
this(fileName, isPrivate ? ResourceAccessControlList.Private: ResourceAccessControlList.Default, false);
51+
this(fileName, isPrivate ? ResourceAccessControlList.Private: ResourceAccessControlList.Default, GxFileInfoSourceType.Unknown);
5152
}
5253

5354
public GXFile(String fileName, ResourceAccessControlList fileAcl) {
54-
this(fileName, fileAcl, false);
55+
this(fileName, fileAcl, GxFileInfoSourceType.Unknown);
5556
}
5657

57-
public GXFile(String fileName, ResourceAccessControlList fileAcl, boolean isLocalFilePath) {
58+
public GXFile(String fileName, ResourceAccessControlList fileAcl, GxFileInfoSourceType sourceType) {
59+
this("", fileName, fileAcl, sourceType);
60+
}
61+
62+
@Deprecated
63+
public GXFile(String fileName, ResourceAccessControlList fileAcl, boolean isLocalFile) {
64+
this("", fileName, fileAcl, isLocalFile ? GxFileInfoSourceType.LocalFile: GxFileInfoSourceType.Unknown);
65+
}
66+
67+
public GXFile(String baseDirectoryPath, String fileName, ResourceAccessControlList fileAcl, GxFileInfoSourceType sourceType) {
5868
if (com.genexus.CommonUtil.isUploadPrefix(fileName)) {
5969
uploadFileId = fileName;
6070
fileName = SpecificImplementation.GXutil.getUploadValue(fileName);
6171
}
6272

63-
ExternalProvider storageProvider = Application.getExternalProvider();
64-
isLocalFilePath = isLocalFilePath || new java.io.File(fileName).isAbsolute();
65-
if (!isLocalFilePath && storageProvider != null) {
66-
FileSource = new GXExternalFileInfo(fileName, storageProvider, true, fileAcl);
67-
} else {
68-
FileSource = new GXFileInfo(new File(fileName));
69-
}
70-
}
73+
switch (sourceType) {
74+
case LocalFile:
75+
FileSource = new GXFileInfo(Paths.get(baseDirectoryPath, fileName).toFile());
76+
break;
77+
case ExternalFile:
78+
FileSource = new GXExternalFileInfo(fileName, Application.getExternalProvider(), true, fileAcl);
79+
break;
80+
case Unknown:
81+
ExternalProvider storageProvider = Application.getExternalProvider();
82+
if (!new File(fileName).isAbsolute() && storageProvider != null) {
83+
FileSource = new GXExternalFileInfo(fileName, storageProvider, true, fileAcl);
84+
} else {
85+
FileSource = new GXFileInfo(Paths.get(baseDirectoryPath, fileName).toFile());
86+
}
87+
break;
88+
}
89+
}
7190

7291
public GXFile(IGXFileInfo fileInfo) {
7392
FileSource = fileInfo;
7493
}
7594

7695
public static String getgxFilename(String fileName) {
77-
return new GXFile(fileName, ResourceAccessControlList.Default, true).getNameNoExt();
96+
return new GXFile(fileName, ResourceAccessControlList.Default, GxFileInfoSourceType.LocalFile).getNameNoExt();
7897
}
7998

8099
public static String getgxFileext(String fileName) {
@@ -770,3 +789,5 @@ public void close() {
770789
}
771790
}
772791
}
792+
793+

java/src/test/java/com/genexus/TestGxImageUtil.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ private String initialize(String name)
4848
e.printStackTrace();
4949
}
5050

51-
System.out.println(copyFileLocation.toString());
5251
return copyFileLocation.toString();
5352
}
5453

0 commit comments

Comments
 (0)