mirror of
https://github.com/Alfresco/alfresco-transform-core.git
synced 2025-06-30 18:14:51 +00:00
MNT-24883 base engine changes to maintain source file name
This commit is contained in:
parent
5aa262e7e4
commit
278f1405ae
@ -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)
|
||||
{
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user