MNT-24883 base engine changes to maintain source file name

This commit is contained in:
bsayan2
2025-05-21 20:54:28 +05:30
parent 5aa262e7e4
commit 278f1405ae
5 changed files with 40 additions and 28 deletions

View File

@@ -28,8 +28,10 @@ package org.alfresco.transform.base.fs;
import jakarta.servlet.http.Part; import jakarta.servlet.http.Part;
import org.alfresco.transform.base.logging.LogEntry; import org.alfresco.transform.base.logging.LogEntry;
import org.alfresco.transform.base.util.Util;
import org.alfresco.transform.common.ExtensionService; import org.alfresco.transform.common.ExtensionService;
import org.alfresco.transform.exceptions.TransformException; import org.alfresco.transform.exceptions.TransformException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.Resource; import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource; import org.springframework.core.io.UrlResource;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
@@ -73,10 +75,9 @@ public class FileManager
if (request != null && request.getParts() != null) { if (request != null && request.getParts() != null) {
String submittedFileName = request.getParts().stream() String submittedFileName = request.getParts().stream()
.map(Part::getSubmittedFileName) .map(Part::getSubmittedFileName)
.filter(name -> name != null && extension.contains(".doc"))
.findFirst() .findFirst()
.orElse(null); .orElse(null);
file = (submittedFileName != null) file = (!StringUtils.isEmpty(submittedFileName) && Util.isDocFile(submittedFileName))
? TempFileProvider.createTempDirForDocFile(submittedFileName) ? TempFileProvider.createTempDirForDocFile(submittedFileName)
: TempFileProvider.createTempFile("source_", extension); : TempFileProvider.createTempFile("source_", extension);
} }
@@ -99,8 +100,7 @@ public class FileManager
} }
public static File createSourceFileWithSameName(HttpServletRequest request, String sourceFileName, InputStream inputStream, String sourceMimetype) { public static File createSourceDocFileWithSameName(HttpServletRequest request, String sourceFileName, InputStream inputStream, String sourceMimetype) {
try try
{ {
File file = TempFileProvider.createTempDirForDocFile(sourceFileName); File file = TempFileProvider.createTempDirForDocFile(sourceFileName);
@@ -269,8 +269,6 @@ public class FileManager
throw new RuntimeException("Failed to create temp directory: " + tempDir); throw new RuntimeException("Failed to create temp directory: " + tempDir);
} }
return new File(tempDir, sourceFileName); return new File(tempDir, sourceFileName);
// return File.createTempFile(sourceFileName, ".docx", tempDir);
// return File.createTempFile(sourceFileName, ".docx", alfrescoTempDirectory);
} }
catch (Exception e) catch (Exception e)
{ {

View File

@@ -68,7 +68,6 @@ abstract class ProcessHandler extends FragmentHandler
private static final List<String> NON_TRANSFORM_OPTION_REQUEST_PARAMETERS = Arrays.asList(SOURCE_EXTENSION, private static final List<String> NON_TRANSFORM_OPTION_REQUEST_PARAMETERS = Arrays.asList(SOURCE_EXTENSION,
TARGET_EXTENSION, TARGET_MIMETYPE, SOURCE_MIMETYPE, DIRECT_ACCESS_URL); TARGET_EXTENSION, TARGET_MIMETYPE, SOURCE_MIMETYPE, DIRECT_ACCESS_URL);
protected String sourceFileName=null;
protected final String sourceMimetype; protected final String sourceMimetype;
protected final String targetMimetype; protected final String targetMimetype;
private final Map<String, String> transformOptions; private final Map<String, String> transformOptions;
@@ -93,22 +92,6 @@ abstract class ProcessHandler extends FragmentHandler
this.customTransformers = customTransformers; this.customTransformers = customTransformers;
} }
ProcessHandler(String sourceFileName,String sourceMimetype, String targetMimetype, Map<String, String> transformOptions,
String reference, TransformServiceRegistry transformRegistry, TransformerDebug transformerDebug,
ProbeTransform probeTransform, CustomTransformers customTransformers)
{
this.sourceFileName = sourceFileName;
this.sourceMimetype = sourceMimetype;
this.targetMimetype = targetMimetype;
this.transformOptions = cleanTransformOptions(transformOptions);
this.reference = reference;
this.transformRegistry = transformRegistry;
this.transformerDebug = transformerDebug;
this.probeTransform = probeTransform;
this.customTransformers = customTransformers;
}
private static Map<String, String> cleanTransformOptions(Map<String, String> requestParameters) private static Map<String, String> cleanTransformOptions(Map<String, String> requestParameters)
{ {
Map<String, String> transformOptions = new HashMap<>(requestParameters); Map<String, String> transformOptions = new HashMap<>(requestParameters);

View File

@@ -26,6 +26,7 @@
*/ */
package org.alfresco.transform.base.transform; package org.alfresco.transform.base.transform;
import org.alfresco.transform.base.TransformManager;
import org.alfresco.transform.base.sfs.SharedFileStoreClient; import org.alfresco.transform.base.sfs.SharedFileStoreClient;
import org.alfresco.transform.base.messaging.TransformReplySender; import org.alfresco.transform.base.messaging.TransformReplySender;
import org.alfresco.transform.base.model.FileRefResponse; import org.alfresco.transform.base.model.FileRefResponse;
@@ -101,6 +102,8 @@ public class TransformHandler
private TransformerDebug transformerDebug; private TransformerDebug transformerDebug;
private final AtomicInteger httpRequestCount = new AtomicInteger(1); private final AtomicInteger httpRequestCount = new AtomicInteger(1);
@Autowired
private TransformManager transformManager;
public ResponseEntity<Resource> handleHttpRequest(HttpServletRequest request, public ResponseEntity<Resource> handleHttpRequest(HttpServletRequest request,
MultipartFile sourceMultipartFile, String sourceMimetype, String targetMimetype, MultipartFile sourceMultipartFile, String sourceMimetype, String targetMimetype,
@@ -190,7 +193,7 @@ public class TransformHandler
ProbeTransform probeTransform) ProbeTransform probeTransform)
{ {
TransformReply reply = createBasicTransformReply(request); TransformReply reply = createBasicTransformReply(request);
new ProcessHandler(request.getSourceFileName(),request.getSourceMediaType(), request.getTargetMediaType(), new ProcessHandler(request.getSourceMediaType(), request.getTargetMediaType(),
request.getTransformRequestOptions(),"unset", transformRegistry, request.getTransformRequestOptions(),"unset", transformRegistry,
transformerDebug, probeTransform, customTransformers) transformerDebug, probeTransform, customTransformers)
{ {
@@ -199,6 +202,7 @@ public class TransformHandler
{ {
checkTransformRequestValid(request, reply); checkTransformRequestValid(request, reply);
reference = TransformStack.getReference(reply.getInternalContext()); reference = TransformStack.getReference(reply.getInternalContext());
transformManager.setSourceFileName(request.getSourceFileName());
initTarget(); initTarget();
super.init(); super.init();
} }

View File

@@ -29,6 +29,7 @@ package org.alfresco.transform.base.transform;
import org.alfresco.transform.base.TransformManager; import org.alfresco.transform.base.TransformManager;
import org.alfresco.transform.base.fs.FileManager; import org.alfresco.transform.base.fs.FileManager;
import org.alfresco.transform.base.util.OutputStreamLengthRecorder; import org.alfresco.transform.base.util.OutputStreamLengthRecorder;
import org.alfresco.transform.base.util.Util;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -56,11 +57,13 @@ public class TransformManagerImpl implements TransformManager
private String targetMimetype; private String targetMimetype;
private File sourceFile; private File sourceFile;
private File targetFile; private File targetFile;
private boolean keepTargetFile; private boolean keepTargetFile;
private boolean createSourceFileCalled; private boolean createSourceFileCalled;
private boolean createTargetFileCalled; private boolean createTargetFileCalled;
private Boolean startedWithSourceFile; private Boolean startedWithSourceFile;
private Boolean startedWithTargetFile; private Boolean startedWithTargetFile;
private String sourceFileName;
public void setRequest(HttpServletRequest request) public void setRequest(HttpServletRequest request)
{ {
@@ -150,6 +153,17 @@ public class TransformManagerImpl implements TransformManager
keepTargetFile = true; keepTargetFile = true;
} }
public String getSourceFileName()
{
return sourceFileName;
}
public void setSourceFileName(String sourceFileName)
{
this.sourceFileName = sourceFileName;
}
@Override public File createSourceFile() @Override public File createSourceFile()
{ {
if (createSourceFileCalled) if (createSourceFileCalled)
@@ -158,10 +172,12 @@ public class TransformManagerImpl implements TransformManager
} }
createSourceFileCalled = true; createSourceFileCalled = true;
if (sourceFile == null) { if (sourceFile == null)
sourceFile = StringUtils.isEmpty(this.processHandler.sourceFileName) {
? FileManager.createSourceFile(request, inputStream, sourceMimetype) boolean isDocFile = !StringUtils.isEmpty(this.sourceFileName) && Util.isDocFile(this.sourceFileName);
: FileManager.createSourceFileWithSameName(request, this.processHandler.sourceFileName, inputStream, sourceMimetype); sourceFile = isDocFile
? FileManager.createSourceDocFileWithSameName(request, this.sourceFileName, inputStream, sourceMimetype)
: FileManager.createSourceFile(request, inputStream, sourceMimetype);
} }
return sourceFile; return sourceFile;
} }

View File

@@ -64,4 +64,15 @@ public class Util
{ {
return param == null ? null : Long.parseLong(param); return param == null ? null : Long.parseLong(param);
} }
/**
* check if given file name is a doc file
* @param filename
* @return if file is .doc*
*/
public static boolean isDocFile(String filename)
{
String extension = filename.substring(filename.lastIndexOf('.') );
return extension.startsWith(".doc");
}
} }