mirror of
https://github.com/Alfresco/alfresco-transform-core.git
synced 2025-08-14 17:58:27 +00:00
MNT-24883 base engine changes to maintain source file name
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
@@ -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);
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user