77import com .datamate .common .domain .service .FileService ;
88import com .datamate .common .domain .utils .AnalyzerUtils ;
99import com .datamate .common .domain .utils .ArchiveAnalyzer ;
10+ import com .datamate .common .domain .utils .CommonUtils ;
1011import com .datamate .common .infrastructure .exception .BusinessAssert ;
1112import com .datamate .common .infrastructure .exception .BusinessException ;
1213import com .datamate .common .infrastructure .exception .CommonErrorCode ;
@@ -189,7 +190,7 @@ private DatasetFile getDatasetFile(Path path, Map<String, DatasetFile> datasetFi
189190 } else {
190191 DatasetFile exist = datasetFilesMap .get (path .toString ());
191192 if (exist == null ) {
192- datasetFile .setId ("file-" + datasetFile .getFileName ());
193+ datasetFile .setId (datasetFile .getFileName ());
193194 datasetFile .setFileSize (path .toFile ().length ());
194195 } else {
195196 datasetFile = exist ;
@@ -202,12 +203,21 @@ private DatasetFile getDatasetFile(Path path, Map<String, DatasetFile> datasetFi
202203 * 获取文件详情
203204 */
204205 @ Transactional (readOnly = true )
205- public DatasetFile getDatasetFile (String datasetId , String fileId ) {
206+ public DatasetFile getDatasetFile (Dataset dataset , String fileId ) {
207+ if (dataset != null && !CommonUtils .isUUID (fileId ) && !fileId .startsWith ("." )) {
208+ DatasetFile file = new DatasetFile ();
209+ file .setId (fileId );
210+ file .setFileName (fileId );
211+ file .setDatasetId (dataset .getId ());
212+ file .setFileSize (0L );
213+ file .setFilePath (dataset .getPath () + File .separator + fileId );
214+ return file ;
215+ }
206216 DatasetFile file = datasetFileRepository .getById (fileId );
207- if (file == null ) {
217+ if (file == null || dataset == null ) {
208218 throw new IllegalArgumentException ("File not found: " + fileId );
209219 }
210- if (!file .getDatasetId ().equals (datasetId )) {
220+ if (!file .getDatasetId ().equals (dataset . getId () )) {
211221 throw new IllegalArgumentException ("File does not belong to the specified dataset" );
212222 }
213223 return file ;
@@ -218,11 +228,13 @@ public DatasetFile getDatasetFile(String datasetId, String fileId) {
218228 */
219229 @ Transactional
220230 public void deleteDatasetFile (String datasetId , String fileId ) {
221- DatasetFile file = getDatasetFile (datasetId , fileId );
222231 Dataset dataset = datasetRepository .getById (datasetId );
232+ DatasetFile file = getDatasetFile (dataset , fileId );
223233 dataset .setFiles (new ArrayList <>(Collections .singleton (file )));
224234 datasetFileRepository .removeById (fileId );
225- dataset .removeFile (file );
235+ if (CommonUtils .isUUID (fileId )) {
236+ dataset .removeFile (file );
237+ }
226238 datasetRepository .updateById (dataset );
227239 // 删除文件时,上传到数据集中的文件会同时删除数据库中的记录和文件系统中的文件,归集过来的文件仅删除数据库中的记录
228240 if (file .getFilePath ().startsWith (dataset .getPath ())) {
@@ -239,10 +251,10 @@ public void deleteDatasetFile(String datasetId, String fileId) {
239251 * 下载文件
240252 */
241253 @ Transactional (readOnly = true )
242- public Resource downloadFile (String datasetId , String fileId ) {
243- DatasetFile file = getDatasetFile (datasetId , fileId );
254+ public Resource downloadFile (DatasetFile file ) {
244255 try {
245256 Path filePath = Paths .get (file .getFilePath ()).normalize ();
257+ log .info ("start download file {}" , file .getFilePath ());
246258 Resource resource = new UrlResource (filePath .toUri ());
247259 if (resource .exists ()) {
248260 return resource ;
@@ -638,12 +650,12 @@ public void deleteDirectory(String datasetId, String prefix) {
638650 */
639651 @ Transactional
640652 public void renameFile (String datasetId , String fileId , RenameFileRequest request ) {
641- DatasetFile file = getDatasetFile (datasetId , fileId );
642653 Dataset dataset = datasetRepository .getById (datasetId );
643654 if (dataset == null ) {
644655 throw BusinessException .of (DataManagementErrorCode .DATASET_NOT_FOUND );
645656 }
646657
658+ DatasetFile file = getDatasetFile (dataset , fileId );
647659 String newName = Optional .ofNullable (request .getNewName ()).orElse ("" ).trim ();
648660 if (newName .isEmpty ()) {
649661 throw BusinessException .of (CommonErrorCode .PARAM_ERROR );
0 commit comments