From 95be768c73f796bc20170b93060e18e061da732a Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Fri, 27 Jun 2025 16:54:41 +0530 Subject: [PATCH 1/3] linking of subcategory to multiple files --- .../data/kmfilemanager/KMFileManager.java | 6 +- .../KMFileManagerRepository.java | 4 + .../KMFileManagerServiceImpl.java | 76 ++++++++++++++++++ .../service/services/CommonServiceImpl.java | 77 ++++++++++++++----- 4 files changed, 143 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java b/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java index 6630f367..6409837f 100644 --- a/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java +++ b/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java @@ -110,7 +110,11 @@ public class KMFileManager { @Transient @Expose private Integer categoryID; - @Transient +// @Transient +// @Expose +// private Integer subCategoryID; + + @Column(name = "SubCategoryID") // 🔴 DB-mapped field to associate files with a subcategory @Expose private Integer subCategoryID; @Transient diff --git a/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java b/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java index aad6a98f..615c841b 100644 --- a/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java +++ b/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java @@ -74,5 +74,9 @@ ArrayList getKMFileLists(@Param("providerServiceMapID") Integer p @Query("select kmFileManager.fileName, kmFileManager.fileExtension from KMFileManager kmFileManager " + "where kmFileManager.fileUID = :fileUID") List getFileNameByUID(@Param("fileUID") String fileUID); + + //newChange + @Query("SELECT km FROM KMFileManager km WHERE km.subCategoryID = :subCategoryID AND km.deleted = false") + List getFilesBySubCategoryID(@Param("subCategoryID") Integer subCategoryID); } diff --git a/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java b/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java index 1a86fad0..df34dd5b 100644 --- a/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java +++ b/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java @@ -125,6 +125,78 @@ public String addKMFile(String request) throws IOException, NoSuchAlgorithmExcep return kmFileManagers.toString(); } +// private ArrayList addKMFile(Iterable kmFileManagers) +// throws IOException, NoSuchAlgorithmException { +// ArrayList savedFileManagers = new ArrayList(); +// FileOutputStream newFile = null; +// FileInputStream fis = null; +// try +// { +// for (KMFileManager kmFileManager : kmFileManagers) { +// if (kmFileManager.getFileName() != null && kmFileManager.getProviderServiceMapID() != null +// && kmFileManager.getFileContent() != null) { +// kmFileManager.setFileName(kmFileManager.getFileName().replace("`", "").replace("'", "").replace("$", "") +// .replace("\\", "").replace("/", "").replace("~", "").replace("`", "").replace("!", "") +// .replace("@", "").replace("#", "").replace("$", "").replace("%", "").replace("^", "") +// .replace("&", "").replace("*", "").replace("(", "").replace(")", "").replace("{", "") +// .replace("}", "").replace("[", "").replace("]", "").replace("|", "").replace("\\", "") +// .replace(":", "").replace(";", "").replace("-", "").replace("_", "").replace("+", "") +// .replace("=", "").replace("\"", "").replace("'", "")); +// String tempFilePath = ConfigProperties.getPropertyByName("tempFilePath"); +// newFile = new FileOutputStream(tempFilePath + "/" + kmFileManager.getFileName()); +// newFile.write(Base64.getDecoder().decode(kmFileManager.getFileContent())); +// newFile.flush(); +// newFile.close(); +// fis = new FileInputStream(tempFilePath + "/" + kmFileManager.getFileName()); +// String checksum = DigestUtils.md5DigestAsHex(fis); +// fis.close(); +// logger.info("File is " + kmFileManager.getFileName()); +// logger.info("File size is " + new File(tempFilePath + "/" + kmFileManager.getFileName()).length()); +// logger.info("File checksum is " + checksum); +// logger.info("File checksum length is " + checksum.length()); +// kmFileManager.setFileCheckSum(checksum); +// kmFileManager.setKmUploadStatus(KM_UPLOADSTATUS_PENDING); +// String version = getFileVersion(kmFileManager); +// kmFileManager.setVersionNo(version); +// String documentPath = kmFileManager.getProviderServiceMapID() + "/"; +// if (kmFileManager.getCategoryID() != null) { +// documentPath += kmFileManager.getCategoryID() + "/"; +// } +// if (kmFileManager.getSubCategoryID() != null) { +// documentPath += kmFileManager.getSubCategoryID() + "/"; +// } +// if (kmFileManager.getVanID() != null) +// documentPath += kmFileManager.getVanID() + "/"; +// +// documentPath += version + "/"; +// documentPath += kmFileManager.getFileName(); +// kmFileManager.setKmUploadStatus(KM_UPLOADSTATUS_STARTED); +// String uuid = kmService.createDocument(documentPath, tempFilePath + "/" + kmFileManager.getFileName()); +// if (uuid != null) { +// kmFileManager.setKmUploadStatus(KM_UPLOADSTATUS_COMPLETED); +// kmFileManager.setFileUID(uuid); +// savedFileManagers.add(kmFileManagerRepository.save(kmFileManager)); +// if (kmFileManager.getSubCategoryID() != null) { +// updateSubcategoryFilePath(kmFileManager); +// } +// } +// } +// } +// } +// catch(Exception e) +// { +// logger.error("error " + e.getMessage()); +// } +// finally +// { +// if(newFile !=null) +// newFile.close(); +// if(fis !=null) +// fis.close(); +// } +// return savedFileManagers; +// } + private ArrayList addKMFile(Iterable kmFileManagers) throws IOException, NoSuchAlgorithmException { ArrayList savedFileManagers = new ArrayList(); @@ -175,6 +247,9 @@ private ArrayList addKMFile(Iterable kmFileManager if (uuid != null) { kmFileManager.setKmUploadStatus(KM_UPLOADSTATUS_COMPLETED); kmFileManager.setFileUID(uuid); + + kmFileManager.setSubCategoryID(kmFileManager.getSubCategoryID()); + savedFileManagers.add(kmFileManagerRepository.save(kmFileManager)); if (kmFileManager.getSubCategoryID() != null) { updateSubcategoryFilePath(kmFileManager); @@ -197,6 +272,7 @@ private ArrayList addKMFile(Iterable kmFileManager return savedFileManagers; } + private void updateSubcategoryFilePath(KMFileManager kmFileManager) { subCategoryRepository.updateFilePath(kmFileManager.getSubCategoryID(), kmFileManager.getFileUID()); } diff --git a/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java b/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java index fe081acb..e1010cf6 100644 --- a/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java +++ b/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java @@ -57,6 +57,7 @@ import com.iemr.common.utils.exception.IEMRException; import com.iemr.common.utils.mapper.InputMapper; import com.iemr.common.data.common.DocFileManager; +import com.iemr.common.data.kmfilemanager.KMFileManager; @Service @PropertySource("classpath:/application.properties") @@ -133,29 +134,67 @@ public Iterable getCategories() { return categoriesList; } +// @Override +// public Iterable getSubCategories(String request) throws IEMRException, JsonMappingException, JsonProcessingException { +// ObjectMapper objectMapper = new ObjectMapper(); +// SubCategoryDetails subCategoryDetails = objectMapper.readValue(request, SubCategoryDetails.class); +// List subCategoriesList = new ArrayList(); +// ArrayList lists = subCategoryRepository.findByCategoryID(subCategoryDetails.getCategoryID()); +// for (Object[] objects : lists) { +// if (objects != null && objects.length > 1) { +// String SubCatFilePath = (String) objects[2]; +// String fileUIDAsURI = null; +// String fileNameWithExtension = null; +// if(SubCatFilePath!=null) { +// fileUIDAsURI=getFilePath(SubCatFilePath); +// List fileNameList = kmFileManagerRepository.getFileNameByUID(SubCatFilePath); +// Object[] fileobjects = fileNameList.get(0); +// fileNameWithExtension= (String)fileobjects[0]+ (String) fileobjects[1]; +// } +// subCategoriesList.add(new SubCategoryDetails((Integer) objects[0], (String) objects[1], SubCatFilePath, fileUIDAsURI, fileNameWithExtension)); +// } +// } +// return subCategoriesList; +// } + + //newChange @Override public Iterable getSubCategories(String request) throws IEMRException, JsonMappingException, JsonProcessingException { - ObjectMapper objectMapper = new ObjectMapper(); - SubCategoryDetails subCategoryDetails = objectMapper.readValue(request, SubCategoryDetails.class); - List subCategoriesList = new ArrayList(); - ArrayList lists = subCategoryRepository.findByCategoryID(subCategoryDetails.getCategoryID()); - for (Object[] objects : lists) { - if (objects != null && objects.length > 1) { - String SubCatFilePath = (String) objects[2]; - String fileUIDAsURI = null; - String fileNameWithExtension = null; - if(SubCatFilePath!=null) { - fileUIDAsURI=getFilePath(SubCatFilePath); - List fileNameList = kmFileManagerRepository.getFileNameByUID(SubCatFilePath); - Object[] fileobjects = fileNameList.get(0); - fileNameWithExtension= (String)fileobjects[0]+ (String) fileobjects[1]; - } - subCategoriesList.add(new SubCategoryDetails((Integer) objects[0], (String) objects[1], SubCatFilePath, fileUIDAsURI, fileNameWithExtension)); - } - } - return subCategoriesList; + ObjectMapper objectMapper = new ObjectMapper(); + SubCategoryDetails subCategoryDetails = objectMapper.readValue(request, SubCategoryDetails.class); + List subCategoriesList = new ArrayList<>(); + ArrayList lists = subCategoryRepository.findByCategoryID(subCategoryDetails.getCategoryID()); + + for (Object[] objects : lists) { + if (objects != null && objects.length > 1) { + Integer subCatId = (Integer) objects[0]; + String subCatName = (String) objects[1]; + + // Fetch all files under this subcategory from KMFileManager + List files = kmFileManagerRepository.getFilesBySubCategoryID(subCatId); + ArrayList fileList = new ArrayList<>(files); + + String fileURL = null; + String fileNameWithExtension = null; + + if (!fileList.isEmpty()) { + KMFileManager firstFile = fileList.get(0); // Just for representative file URL and name + fileURL = getFilePath(firstFile.getFileUID()); + fileNameWithExtension = firstFile.getFileName() + firstFile.getFileExtension(); + } + + SubCategoryDetails subCategory = new SubCategoryDetails(subCatId, subCatName); + subCategory.setFileManger(fileList); // Attach all files here + subCategory.setFileURL(fileURL); // Representative file URL + subCategory.setFileNameWithExtension(fileNameWithExtension); // Representative file name+ext + + subCategoriesList.add(subCategory); + } + } + return subCategoriesList; } + private String getFilePath(String fileUID) { String fileUIDAsURI = null; From eef6bb37ce77cf0cab714c38eec9a465501fd823 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Fri, 27 Jun 2025 16:57:50 +0530 Subject: [PATCH 2/3] removed commented code --- .../KMFileManagerServiceImpl.java | 71 ------------------- .../service/services/CommonServiceImpl.java | 22 ------ 2 files changed, 93 deletions(-) diff --git a/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java b/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java index df34dd5b..7a24c6da 100644 --- a/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java +++ b/src/main/java/com/iemr/common/service/kmfilemanager/KMFileManagerServiceImpl.java @@ -125,77 +125,6 @@ public String addKMFile(String request) throws IOException, NoSuchAlgorithmExcep return kmFileManagers.toString(); } -// private ArrayList addKMFile(Iterable kmFileManagers) -// throws IOException, NoSuchAlgorithmException { -// ArrayList savedFileManagers = new ArrayList(); -// FileOutputStream newFile = null; -// FileInputStream fis = null; -// try -// { -// for (KMFileManager kmFileManager : kmFileManagers) { -// if (kmFileManager.getFileName() != null && kmFileManager.getProviderServiceMapID() != null -// && kmFileManager.getFileContent() != null) { -// kmFileManager.setFileName(kmFileManager.getFileName().replace("`", "").replace("'", "").replace("$", "") -// .replace("\\", "").replace("/", "").replace("~", "").replace("`", "").replace("!", "") -// .replace("@", "").replace("#", "").replace("$", "").replace("%", "").replace("^", "") -// .replace("&", "").replace("*", "").replace("(", "").replace(")", "").replace("{", "") -// .replace("}", "").replace("[", "").replace("]", "").replace("|", "").replace("\\", "") -// .replace(":", "").replace(";", "").replace("-", "").replace("_", "").replace("+", "") -// .replace("=", "").replace("\"", "").replace("'", "")); -// String tempFilePath = ConfigProperties.getPropertyByName("tempFilePath"); -// newFile = new FileOutputStream(tempFilePath + "/" + kmFileManager.getFileName()); -// newFile.write(Base64.getDecoder().decode(kmFileManager.getFileContent())); -// newFile.flush(); -// newFile.close(); -// fis = new FileInputStream(tempFilePath + "/" + kmFileManager.getFileName()); -// String checksum = DigestUtils.md5DigestAsHex(fis); -// fis.close(); -// logger.info("File is " + kmFileManager.getFileName()); -// logger.info("File size is " + new File(tempFilePath + "/" + kmFileManager.getFileName()).length()); -// logger.info("File checksum is " + checksum); -// logger.info("File checksum length is " + checksum.length()); -// kmFileManager.setFileCheckSum(checksum); -// kmFileManager.setKmUploadStatus(KM_UPLOADSTATUS_PENDING); -// String version = getFileVersion(kmFileManager); -// kmFileManager.setVersionNo(version); -// String documentPath = kmFileManager.getProviderServiceMapID() + "/"; -// if (kmFileManager.getCategoryID() != null) { -// documentPath += kmFileManager.getCategoryID() + "/"; -// } -// if (kmFileManager.getSubCategoryID() != null) { -// documentPath += kmFileManager.getSubCategoryID() + "/"; -// } -// if (kmFileManager.getVanID() != null) -// documentPath += kmFileManager.getVanID() + "/"; -// -// documentPath += version + "/"; -// documentPath += kmFileManager.getFileName(); -// kmFileManager.setKmUploadStatus(KM_UPLOADSTATUS_STARTED); -// String uuid = kmService.createDocument(documentPath, tempFilePath + "/" + kmFileManager.getFileName()); -// if (uuid != null) { -// kmFileManager.setKmUploadStatus(KM_UPLOADSTATUS_COMPLETED); -// kmFileManager.setFileUID(uuid); -// savedFileManagers.add(kmFileManagerRepository.save(kmFileManager)); -// if (kmFileManager.getSubCategoryID() != null) { -// updateSubcategoryFilePath(kmFileManager); -// } -// } -// } -// } -// } -// catch(Exception e) -// { -// logger.error("error " + e.getMessage()); -// } -// finally -// { -// if(newFile !=null) -// newFile.close(); -// if(fis !=null) -// fis.close(); -// } -// return savedFileManagers; -// } private ArrayList addKMFile(Iterable kmFileManagers) throws IOException, NoSuchAlgorithmException { diff --git a/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java b/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java index e1010cf6..ff6f83e9 100644 --- a/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java +++ b/src/main/java/com/iemr/common/service/services/CommonServiceImpl.java @@ -134,28 +134,6 @@ public Iterable getCategories() { return categoriesList; } -// @Override -// public Iterable getSubCategories(String request) throws IEMRException, JsonMappingException, JsonProcessingException { -// ObjectMapper objectMapper = new ObjectMapper(); -// SubCategoryDetails subCategoryDetails = objectMapper.readValue(request, SubCategoryDetails.class); -// List subCategoriesList = new ArrayList(); -// ArrayList lists = subCategoryRepository.findByCategoryID(subCategoryDetails.getCategoryID()); -// for (Object[] objects : lists) { -// if (objects != null && objects.length > 1) { -// String SubCatFilePath = (String) objects[2]; -// String fileUIDAsURI = null; -// String fileNameWithExtension = null; -// if(SubCatFilePath!=null) { -// fileUIDAsURI=getFilePath(SubCatFilePath); -// List fileNameList = kmFileManagerRepository.getFileNameByUID(SubCatFilePath); -// Object[] fileobjects = fileNameList.get(0); -// fileNameWithExtension= (String)fileobjects[0]+ (String) fileobjects[1]; -// } -// subCategoriesList.add(new SubCategoryDetails((Integer) objects[0], (String) objects[1], SubCatFilePath, fileUIDAsURI, fileNameWithExtension)); -// } -// } -// return subCategoriesList; -// } //newChange @Override From 7be379683cd0967203ec22c1a2b27e4b5a39c132 Mon Sep 17 00:00:00 2001 From: SR20290919 Date: Mon, 30 Jun 2025 12:14:36 +0530 Subject: [PATCH 3/3] removed commented code --- .../com/iemr/common/data/kmfilemanager/KMFileManager.java | 5 +---- .../repository/kmfilemanager/KMFileManagerRepository.java | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java b/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java index 6409837f..ed7f0b84 100644 --- a/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java +++ b/src/main/java/com/iemr/common/data/kmfilemanager/KMFileManager.java @@ -110,11 +110,8 @@ public class KMFileManager { @Transient @Expose private Integer categoryID; -// @Transient -// @Expose -// private Integer subCategoryID; - @Column(name = "SubCategoryID") // 🔴 DB-mapped field to associate files with a subcategory + @Column(name = "SubCategoryID") @Expose private Integer subCategoryID; @Transient diff --git a/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java b/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java index 615c841b..f1e8187d 100644 --- a/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java +++ b/src/main/java/com/iemr/common/repository/kmfilemanager/KMFileManagerRepository.java @@ -75,7 +75,7 @@ ArrayList getKMFileLists(@Param("providerServiceMapID") Integer p + "where kmFileManager.fileUID = :fileUID") List getFileNameByUID(@Param("fileUID") String fileUID); - //newChange + @Query("SELECT km FROM KMFileManager km WHERE km.subCategoryID = :subCategoryID AND km.deleted = false") List getFilesBySubCategoryID(@Param("subCategoryID") Integer subCategoryID);