Skip to content

Commit

Permalink
[#2181] Merge internalFilename and originalFilename (#2430)
Browse files Browse the repository at this point in the history
* Serialize non-primitive types and store in Influx

* extract RawFieldSerializer

* rename test

* delete old

* temp

* redesign file api

* fix

* add comment

* merge internalFilename and originalFilename

* delete useless

* fix bug

* code review and unit test

* Delete debug logs

Co-authored-by: Tim <50115603+bossenti@users.noreply.github.com>

* add log

* undo

---------

Co-authored-by: Tim <50115603+bossenti@users.noreply.github.com>
  • Loading branch information
muyangye and bossenti authored Mar 6, 2024
1 parent 92048ed commit 0035d12
Show file tree
Hide file tree
Showing 24 changed files with 426 additions and 366 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ protected void handleFile(String document,
var fileMetadata = resolver.readDocument(document);
resolver.writeDocument(document);
byte[] file = zipContent.get(
fileMetadata.getInternalFilename().substring(0, fileMetadata.getInternalFilename().lastIndexOf(".")));
new FileHandler().storeFile(fileMetadata.getInternalFilename(), new ByteArrayInputStream(file));
fileMetadata.getFilename().substring(0, fileMetadata.getFilename().lastIndexOf(".")));
new FileHandler().storeFile(fileMetadata.getFilename(), new ByteArrayInputStream(file));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ protected void handleDataViewWidget(String document, String dataViewWidget) {
protected void handleFile(String document,
String fileMetadataId,
Map<String, byte[]> zipContent) throws JsonProcessingException {
addExportItem(fileMetadataId, new FileResolver().readDocument(document).getOriginalFilename(),
addExportItem(fileMetadataId, new FileResolver().readDocument(document).getFilename(),
importConfig::addFile);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public byte[] generateExportPackage() throws IOException {

config.getFiles().forEach(item -> {
var fileResolver = new FileResolver();
String filename = fileResolver.findDocument(item.getResourceId()).getInternalFilename();
String filename = fileResolver.findDocument(item.getResourceId()).getFilename();
addDoc(builder, item, new FileResolver(), manifest::addFile);
try {
builder.addBinary(filename, Files.readAllBytes(FileManager.getFile(filename).toPath()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public FileMetadata readDocument(String serializedDoc) throws JsonProcessingExce

@Override
public ExportItem convert(FileMetadata document) {
return new ExportItem(document.getFileId(), document.getOriginalFilename(), true);
return new ExportItem(document.getFileId(), document.getFilename(), true);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ public class FileMetadata {

private @SerializedName("_rev") String rev;

private String internalFilename;
private String originalFilename;
private String filename;
private String filetype;

private long createdAt;
Expand All @@ -53,20 +52,12 @@ public void setRev(String rev) {
this.rev = rev;
}

public String getInternalFilename() {
return internalFilename;
public String getFilename() {
return filename;
}

public void setInternalFilename(String internalFilename) {
this.internalFilename = internalFilename;
}

public String getOriginalFilename() {
return originalFilename;
}

public void setOriginalFilename(String originalFilename) {
this.originalFilename = originalFilename;
public void setFilename(String filename) {
this.filename = filename;
}

public long getCreatedAt() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,19 @@
package org.apache.streampipes.manager.file;

import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

public class FileHandler {

Logger logger = LoggerFactory.getLogger(FileHandler.class);

public void storeFile(String filename, InputStream fileInputStream) throws IOException {
File targetFile = makeFile(filename);
FileUtils.copyInputStreamToFile(fileInputStream, targetFile);
Expand All @@ -39,6 +45,20 @@ public File getFile(String filename) {
return FileUtils.getFile(makeFile(filename));
}

public void renameFile(String oldFilename, String newFilename) {
try {
var fileInputStream = new FileInputStream(getFile(oldFilename));
deleteFile(oldFilename);
storeFile(newFilename, fileInputStream);
} catch (FileNotFoundException e) {
logger.error(
"Failed to find the old file locally with internalFilename as the identifier, this is most likely a mismatch "
+ "between local file and FileMetadata stored in CouchDB. Raw exception message: " + e.getMessage());
} catch (IOException e) {
logger.error("Failed to save renamed file locally: " + e.getMessage());
}
}

private File makeFile(String filename) {
File fileDir = new File(makeFileLocation());
if (!fileDir.exists()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
import java.io.InputStream;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

public class FileManager {
Expand All @@ -48,13 +47,13 @@ public static File getFileByOriginalName(String originalName) throws IOException

var file = allFiles
.stream()
.filter(fileMetadata -> fileMetadata.getOriginalFilename().equals(originalName))
.filter(fileMetadata -> fileMetadata.getFilename().equals(originalName))
.findFirst();

if (file.isEmpty()){
throw new IOException("No file with original name '%s' found".formatted(originalName));
}
return new FileHandler().getFile(file.get().getInternalFilename());
return new FileHandler().getFile(file.get().getFilename());
}

/**
Expand All @@ -74,16 +73,15 @@ public static FileMetadata storeFile(String user,

fileInputStream = cleanFile(fileInputStream, filetype);

String internalFilename = makeInternalFilename(filetype);
FileMetadata fileMetadata = makeFileMetadata(user, filename, internalFilename, filetype);
new FileHandler().storeFile(internalFilename, fileInputStream);
FileMetadata fileMetadata = makeFileMetadata(user, filename, filetype);
new FileHandler().storeFile(filename, fileInputStream);
storeFileMetadata(fileMetadata);
return fileMetadata;
}

public static void deleteFile(String id) {
FileMetadata fileMetadata = getFileMetadataStorage().getMetadataById(id);
new FileHandler().deleteFile(fileMetadata.getInternalFilename());
new FileHandler().deleteFile(fileMetadata.getFilename());
getFileMetadataStorage().deleteFileMetadata(id);
}

Expand Down Expand Up @@ -118,24 +116,18 @@ private static IFileMetadataStorage getFileMetadataStorage() {
}

private static FileMetadata makeFileMetadata(String user,
String originalFilename,
String internalFilename,
String filename,
String filetype) {

FileMetadata fileMetadata = new FileMetadata();
fileMetadata.setCreatedAt(System.currentTimeMillis());
fileMetadata.setCreatedByUser(user);
fileMetadata.setFiletype(filetype);
fileMetadata.setInternalFilename(internalFilename);
fileMetadata.setOriginalFilename(originalFilename);
fileMetadata.setFilename(filename);

return fileMetadata;
}

private static String makeInternalFilename(String filetype) {
return UUID.randomUUID() + "." + filetype;
}

private static List<FileMetadata> filterFiletypes(List<FileMetadata> allFiles, String filetypes) {
return allFiles
.stream()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ private byte[] getFileContents(File file) throws IOException {
public ResponseEntity<List<String>> getAllOriginalFilenames() {
return ok(FileManager.getAllFiles()
.stream()
.map(fileMetadata -> fileMetadata.getOriginalFilename()
.map(fileMetadata -> fileMetadata.getFilename()
.toLowerCase())
.toList());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
import org.apache.streampipes.service.core.migrations.v090.UpdateUsernameViewMigration;
import org.apache.streampipes.service.core.migrations.v093.AdapterMigration;
import org.apache.streampipes.service.core.migrations.v093.StoreEmailTemplatesMigration;
import org.apache.streampipes.service.core.migrations.v095.DuplicateFilesRenameMigration;
import org.apache.streampipes.service.core.migrations.v095.MergeFilenamesAndRenameDuplicatesMigration;

import java.util.Arrays;
import java.util.List;
Expand All @@ -40,7 +40,7 @@ public List<Migration> getAvailableMigrations() {
new UpdateUsernameViewMigration(),
new AdapterMigration(),
new StoreEmailTemplatesMigration(),
new DuplicateFilesRenameMigration()
new MergeFilenamesAndRenameDuplicatesMigration()
);
}
}

This file was deleted.

Loading

0 comments on commit 0035d12

Please sign in to comment.