Skip to content

Commit fe5cffa

Browse files
committed
refactor method called for newly uploaded chemical file from GalleryController into RSChemElementManager, then call it on file upload through FilesApiController
1 parent 054de02 commit fe5cffa

File tree

4 files changed

+44
-29
lines changed

4 files changed

+44
-29
lines changed

src/main/java/com/researchspace/api/v1/controller/FilesApiController.java

+7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.researchspace.core.util.ISearchResults;
99
import com.researchspace.core.util.MediaUtils;
1010
import com.researchspace.files.service.FileStore;
11+
import com.researchspace.model.EcatChemistryFile;
1112
import com.researchspace.model.EcatImage;
1213
import com.researchspace.model.EcatMediaFile;
1314
import com.researchspace.model.FileProperty;
@@ -21,6 +22,7 @@
2122
import com.researchspace.model.record.Folder;
2223
import com.researchspace.service.FolderManager;
2324
import com.researchspace.service.MediaManager;
25+
import com.researchspace.service.RSChemElementManager;
2426
import java.io.FileInputStream;
2527
import java.io.IOException;
2628
import java.io.InputStream;
@@ -51,6 +53,7 @@ public class FilesApiController extends BaseApiController implements FilesApi {
5153
private @Autowired @Qualifier("compositeFileStore") FileStore fileStore;
5254
private @Autowired FilesAPIHandler fileHandler;
5355
private @Autowired MediaManager mediaMgr;
56+
private @Autowired RSChemElementManager rsChemElementManager;
5457
private @Autowired FolderManager folderMgr;
5558
private @Autowired ApiAccountInitialiser contentInit;
5659
private @Autowired IPermissionUtils permUtils;
@@ -161,6 +164,10 @@ public ApiFile uploadFiles(
161164
if (emf.isImage() && originalImageId != null) {
162165
mediaMgr.saveOriginalImageLink((EcatImage) emf, originalImageId, user);
163166
}
167+
if (emf.isChemistryFile()) {
168+
rsChemElementManager.generateRsChemElementForNewlyUploadedChemistryFile(
169+
(EcatChemistryFile) emf, user);
170+
}
164171
ApiFile apiFile = new ApiFile(emf);
165172
addFileLink(apiFile);
166173
return apiFile;

src/main/java/com/researchspace/service/RSChemElementManager.java

+3-9
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.researchspace.model.ChemSearchedItem;
44
import com.researchspace.model.EcatChemistryFile;
5+
import com.researchspace.model.EcatMediaFile;
56
import com.researchspace.model.FileProperty;
67
import com.researchspace.model.RSChemElement;
78
import com.researchspace.model.User;
@@ -177,15 +178,8 @@ List<RSChemElement> updateChemImages(
177178
*/
178179
List<RSChemElement> getAllRSChemElementsByField(Long fieldId, User user);
179180

180-
/**
181-
* Generate the byte representation of the given {@link RSChemElement} in the given format format
182-
* is currently limited to either PNG or JPEG export with a specified size (width x height)
183-
*
184-
* @param format the ChemicalExportFormat to generate the bytes with
185-
* @param rsChemElement the {@link RSChemElement} to generate the bytes of
186-
* @return the byte array representation of the rschemelement
187-
*/
188-
RSChemElement generateRsChemExportBytes(ChemicalExportFormat format, RSChemElement rsChemElement);
181+
void generateRsChemElementForNewlyUploadedChemistryFile(EcatChemistryFile media,
182+
User subject) throws IOException;
189183

190184
/**
191185
* Get a list of the file extensions supported by the chemistry provider

src/main/java/com/researchspace/service/impl/RSChemElementManagerImpl.java

+32-1
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,38 @@ public List<RSChemElement> getAllRSChemElementsByField(Long fieldId, User user)
504504
}
505505

506506
@Override
507-
public RSChemElement generateRsChemExportBytes(
507+
public void generateRsChemElementForNewlyUploadedChemistryFile(EcatChemistryFile chemFile,
508+
User subject) throws IOException {
509+
510+
// Create Basic Chem Element in order for searching of gallery files to work
511+
RSChemElement rsChemElement =
512+
RSChemElement.builder()
513+
.chemElements(
514+
chemistryProvider.convert(chemFile.getChemString()))
515+
.chemElementsFormat(ChemElementsFormat.MRV)
516+
.ecatChemFileId(chemFile.getId())
517+
.build();
518+
519+
ChemicalExportFormat format =
520+
ChemicalExportFormat.builder()
521+
.exportType(ChemicalExportType.PNG)
522+
.height(1000)
523+
.width(1000)
524+
.build();
525+
generateRsChemExportBytes(format, rsChemElement);
526+
saveChemImagePng(
527+
rsChemElement, new ByteArrayInputStream(rsChemElement.getDataImage()), subject);
528+
}
529+
530+
/**
531+
* Generate the byte representation of the given {@link RSChemElement} in the given format format
532+
* is currently limited to either PNG or JPEG export with a specified size (width x height)
533+
*
534+
* @param format the ChemicalExportFormat to generate the bytes with
535+
* @param rsChemElement the {@link RSChemElement} to generate the bytes of
536+
* @return the byte array representation of the rschemelement
537+
*/
538+
private RSChemElement generateRsChemExportBytes(
508539
ChemicalExportFormat format, RSChemElement rsChemElement) {
509540
byte[] image = chemistryProvider.exportToImage(rsChemElement.getChemElements(), format);
510541
rsChemElement.setDataImage(image);

src/main/java/com/researchspace/webapp/controller/GalleryController.java

+2-19
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ public class GalleryController extends BaseController {
9797
private @Autowired MediaManager mediaManager;
9898
private @Autowired DetailedRecordInformationProvider infoProvider;
9999
private @Autowired RSChemElementManager rsChemElementManager;
100-
private @Autowired ChemistryProvider chemistryProvider;
101100
@Autowired private SystemPropertyPermissionManager systemPropertyPermissionManager;
102101

103102
/**
@@ -419,24 +418,8 @@ private AjaxReturnObject<RecordInformation> saveMediaFile(
419418
"",
420419
subject);
421420
if (media.isChemistryFile() && fieldId == null && mediaFileId == null) {
422-
// Create Basic Chem Element in order for searching of gallery files to work
423-
RSChemElement rsChemElement =
424-
RSChemElement.builder()
425-
.chemElements(
426-
chemistryProvider.convert(((EcatChemistryFile) media).getChemString()))
427-
.chemElementsFormat(ChemElementsFormat.MRV)
428-
.ecatChemFileId(media.getId())
429-
.build();
430-
431-
ChemicalExportFormat format =
432-
ChemicalExportFormat.builder()
433-
.exportType(ChemicalExportType.PNG)
434-
.height(1000)
435-
.width(1000)
436-
.build();
437-
rsChemElementManager.generateRsChemExportBytes(format, rsChemElement);
438-
rsChemElementManager.saveChemImagePng(
439-
rsChemElement, new ByteArrayInputStream(rsChemElement.getDataImage()), subject);
421+
rsChemElementManager.generateRsChemElementForNewlyUploadedChemistryFile(
422+
(EcatChemistryFile) media, subject);
440423
}
441424
return new AjaxReturnObject<>(media.toRecordInfo(), null);
442425

0 commit comments

Comments
 (0)