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 org.alfresco.transform.base.logging.LogEntry;
import org.alfresco.transform.base.util.Util;
import org.alfresco.transform.common.ExtensionService;
import org.alfresco.transform.exceptions.TransformException;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.Resource;
import org.springframework.core.io.UrlResource;
import org.springframework.http.ResponseEntity;
@ -73,10 +75,9 @@ public class FileManager
if (request != null && request.getParts() != null) {
String submittedFileName = request.getParts().stream()
.map(Part::getSubmittedFileName)
.filter(name -> name != null && extension.contains(".doc"))
.findFirst()
.orElse(null);
file = (submittedFileName != null)
file = (!StringUtils.isEmpty(submittedFileName) && Util.isDocFile(submittedFileName))
? TempFileProvider.createTempDirForDocFile(submittedFileName)
: 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
{
File file = TempFileProvider.createTempDirForDocFile(sourceFileName);
@ -269,8 +269,6 @@ public class FileManager
throw new RuntimeException("Failed to create temp directory: " + tempDir);
}
return new File(tempDir, sourceFileName);
// return File.createTempFile(sourceFileName, ".docx", tempDir);
// return File.createTempFile(sourceFileName, ".docx", alfrescoTempDirectory);
}
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,
TARGET_EXTENSION, TARGET_MIMETYPE, SOURCE_MIMETYPE, DIRECT_ACCESS_URL);
protected String sourceFileName=null;
protected final String sourceMimetype;
protected final String targetMimetype;
private final Map<String, String> transformOptions;
@ -93,22 +92,6 @@ abstract class ProcessHandler extends FragmentHandler
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)
{
Map<String, String> transformOptions = new HashMap<>(requestParameters);

View File

@ -26,6 +26,7 @@
*/
package org.alfresco.transform.base.transform;
import org.alfresco.transform.base.TransformManager;
import org.alfresco.transform.base.sfs.SharedFileStoreClient;
import org.alfresco.transform.base.messaging.TransformReplySender;
import org.alfresco.transform.base.model.FileRefResponse;
@ -101,6 +102,8 @@ public class TransformHandler
private TransformerDebug transformerDebug;
private final AtomicInteger httpRequestCount = new AtomicInteger(1);
@Autowired
private TransformManager transformManager;
public ResponseEntity<Resource> handleHttpRequest(HttpServletRequest request,
MultipartFile sourceMultipartFile, String sourceMimetype, String targetMimetype,
@ -190,7 +193,7 @@ public class TransformHandler
ProbeTransform probeTransform)
{
TransformReply reply = createBasicTransformReply(request);
new ProcessHandler(request.getSourceFileName(),request.getSourceMediaType(), request.getTargetMediaType(),
new ProcessHandler(request.getSourceMediaType(), request.getTargetMediaType(),
request.getTransformRequestOptions(),"unset", transformRegistry,
transformerDebug, probeTransform, customTransformers)
{
@ -199,6 +202,7 @@ public class TransformHandler
{
checkTransformRequestValid(request, reply);
reference = TransformStack.getReference(reply.getInternalContext());
transformManager.setSourceFileName(request.getSourceFileName());
initTarget();
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.fs.FileManager;
import org.alfresco.transform.base.util.OutputStreamLengthRecorder;
import org.alfresco.transform.base.util.Util;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -56,11 +57,13 @@ public class TransformManagerImpl implements TransformManager
private String targetMimetype;
private File sourceFile;
private File targetFile;
private boolean keepTargetFile;
private boolean createSourceFileCalled;
private boolean createTargetFileCalled;
private Boolean startedWithSourceFile;
private Boolean startedWithTargetFile;
private String sourceFileName;
public void setRequest(HttpServletRequest request)
{
@ -150,6 +153,17 @@ public class TransformManagerImpl implements TransformManager
keepTargetFile = true;
}
public String getSourceFileName()
{
return sourceFileName;
}
public void setSourceFileName(String sourceFileName)
{
this.sourceFileName = sourceFileName;
}
@Override public File createSourceFile()
{
if (createSourceFileCalled)
@ -158,10 +172,12 @@ public class TransformManagerImpl implements TransformManager
}
createSourceFileCalled = true;
if (sourceFile == null) {
sourceFile = StringUtils.isEmpty(this.processHandler.sourceFileName)
? FileManager.createSourceFile(request, inputStream, sourceMimetype)
: FileManager.createSourceFileWithSameName(request, this.processHandler.sourceFileName, inputStream, sourceMimetype);
if (sourceFile == null)
{
boolean isDocFile = !StringUtils.isEmpty(this.sourceFileName) && Util.isDocFile(this.sourceFileName);
sourceFile = isDocFile
? FileManager.createSourceDocFileWithSameName(request, this.sourceFileName, inputStream, sourceMimetype)
: FileManager.createSourceFile(request, inputStream, sourceMimetype);
}
return sourceFile;
}

View File

@ -64,4 +64,15 @@ public class Util
{
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");
}
}