|
|
@@ -184,16 +184,16 @@ public class DatasetServiceImpl implements DatasetService { |
|
|
*/ |
|
|
*/ |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public ResponseEntity<InputStreamResource> downloadDataset(Integer id) { |
|
|
|
|
|
|
|
|
public ResponseEntity<InputStreamResource> downloadDataset(Integer id) throws Exception { |
|
|
DatasetVersion datasetVersion = this.datasetVersionDao.queryById(id); |
|
|
DatasetVersion datasetVersion = this.datasetVersionDao.queryById(id); |
|
|
if (datasetVersion == null) { |
|
|
if (datasetVersion == null) { |
|
|
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null); |
|
|
|
|
|
|
|
|
throw new Exception("未找到该版本下数据集"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
// 从数据库中获取存储路径(即MinIO中的对象名称) |
|
|
// 从数据库中获取存储路径(即MinIO中的对象名称) |
|
|
String objectName = datasetVersion.getUrl(); |
|
|
String objectName = datasetVersion.getUrl(); |
|
|
if(objectName == null || objectName.isEmpty() ){ |
|
|
if(objectName == null || objectName.isEmpty() ){ |
|
|
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); |
|
|
|
|
|
|
|
|
throw new Exception("未找到该版本数据集文件"); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
@@ -210,7 +210,7 @@ public class DatasetServiceImpl implements DatasetService { |
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
e.printStackTrace(); |
|
|
e.printStackTrace(); |
|
|
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); |
|
|
|
|
|
|
|
|
throw new Exception("下载数据集文件错误"); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@@ -362,15 +362,28 @@ public class DatasetServiceImpl implements DatasetService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void checkDeclaredName(Dataset insert) throws Exception { |
|
|
public void checkDeclaredName(Dataset insert) throws Exception { |
|
|
Dataset dataset = datasetDao.findByName(insert.getName()); |
|
|
|
|
|
if (dataset != null) { |
|
|
|
|
|
|
|
|
Dataset existingDataset = datasetDao.findByName(insert.getName()); |
|
|
|
|
|
if (existingDataset != null) { |
|
|
|
|
|
// Check if the found dataset is not the same as the one being inserted |
|
|
|
|
|
// This is important if you are using this method for both insert and update operations |
|
|
|
|
|
// You may need an identifier check here, e.g., if 'insert' has an ID and it's the same as 'existingDataset' |
|
|
|
|
|
if (insert.getId() != null && insert.getId().equals(existingDataset.getId())) { |
|
|
|
|
|
// This is the same dataset, no duplicate name issue for update operation |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Now we know there's another dataset with the same name |
|
|
Field[] fields = Dataset.class.getDeclaredFields(); |
|
|
Field[] fields = Dataset.class.getDeclaredFields(); |
|
|
for (Field field : fields) { |
|
|
for (Field field : fields) { |
|
|
if (field.isAnnotationPresent(CheckDuplicate.class)) { |
|
|
|
|
|
|
|
|
field.setAccessible(true); // Make private fields accessible |
|
|
|
|
|
|
|
|
|
|
|
if ("name".equals(field.getName()) && field.isAnnotationPresent(CheckDuplicate.class)) { |
|
|
|
|
|
// If the field is 'name' and is marked with CheckDuplicate annotation |
|
|
CheckDuplicate annotation = field.getAnnotation(CheckDuplicate.class); |
|
|
CheckDuplicate annotation = field.getAnnotation(CheckDuplicate.class); |
|
|
throw new Exception(field.getName()+ annotation.message()); |
|
|
|
|
|
|
|
|
throw new Exception("重复的数据集名称: " + insert.getName() + ". " + annotation.message()); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |