Skip to content

Commit cf960f2

Browse files
authored
Merge pull request #12028 from IQSS/11528-display-collection-size-on-add-files-page
Display current collection size on Add Files page
2 parents 27322aa + 7db4b0d commit cf960f2

5 files changed

Lines changed: 25 additions & 9 deletions

File tree

src/main/java/edu/harvard/iq/dataverse/DataFileServiceBean.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1490,11 +1490,15 @@ public UploadSessionQuotaLimit getUploadSessionQuotaLimit(DvObjectContainer pare
14901490
// Note that we are checking the recorded storage use not on the
14911491
// immediate parent necessarily, but on the specific ancestor
14921492
// DvObjectContainer on which the storage quota is defined:
1493-
Long currentSize = storageUseService.findStorageSizeByDvContainerId(testDvContainer.getId());
1493+
Long currentSize = currentStorageSizeInBytes(testDvContainer);
14941494

14951495
return new UploadSessionQuotaLimit(quota.getAllocation(), currentSize);
14961496
}
14971497

1498+
public Long currentStorageSizeInBytes(DvObjectContainer dvObjectContainer) {
1499+
return storageUseService.findStorageSizeByDvContainerId(dvObjectContainer.getId());
1500+
}
1501+
14981502
public boolean isInReleasedVersion(Long id) {
14991503
Query query = em.createNativeQuery("SELECT fm.id FROM filemetadata fm WHERE fm.datasetversion_id=(SELECT dv.id FROM datasetversion dv, dvobject dvo WHERE dv.dataset_id=dvo.owner_id AND dv.versionState='RELEASED' and dvo.id=" + id + " ORDER BY dv.versionNumber DESC, dv.minorVersionNumber DESC LIMIT 1) AND fm.datafile_id=" + id);
15001504

src/main/java/edu/harvard/iq/dataverse/EditDatafilesPage.java

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,9 @@
3535
import edu.harvard.iq.dataverse.license.LicenseServiceBean;
3636
import edu.harvard.iq.dataverse.search.IndexServiceBean;
3737
import edu.harvard.iq.dataverse.settings.JvmSettings;
38-
import edu.harvard.iq.dataverse.settings.Setting;
3938
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
4039
import edu.harvard.iq.dataverse.storageuse.UploadSessionQuotaLimit;
41-
import edu.harvard.iq.dataverse.util.FileUtil;
42-
import edu.harvard.iq.dataverse.util.JsfHelper;
43-
import edu.harvard.iq.dataverse.util.SystemConfig;
44-
import edu.harvard.iq.dataverse.util.WebloaderUtil;
45-
import edu.harvard.iq.dataverse.util.BundleUtil;
46-
import edu.harvard.iq.dataverse.util.EjbUtil;
47-
import edu.harvard.iq.dataverse.util.FileMetadataUtil;
40+
import edu.harvard.iq.dataverse.util.*;
4841

4942
import static edu.harvard.iq.dataverse.util.JsfHelper.JH;
5043
import java.io.File;
@@ -188,6 +181,8 @@ public enum Referrer {
188181

189182
private String versionString = "";
190183

184+
private String storageSizeStr;
185+
191186
private boolean saveEnabled = false;
192187

193188
// Used to store results of permissions checks
@@ -567,6 +562,17 @@ public boolean isFileUploadCountExceeded() {
567562
return !ignoreLimit && !isFileReplaceOperation() && fileUploadsAvailable != null && fileUploadsAvailable == 0;
568563
}
569564

565+
/**
566+
*
567+
* @return cached formatted storage size. '1,234 bytes'; '1.23 GB'; '1.00 TB'
568+
*/
569+
public String getCurrentContainerStorageUse() {
570+
if (storageSizeStr == null) {
571+
storageSizeStr = FileSizeChecker.bytesToHumanReadable(datafileService.currentStorageSizeInBytes(dataset.getOwner()));
572+
}
573+
return storageSizeStr;
574+
}
575+
570576
public String init() {
571577
// default mode should be EDIT
572578
if (mode == null) {
@@ -1059,6 +1065,7 @@ public String saveReplacementFile() throws FileReplaceException {
10591065

10601066
public String save() {
10611067

1068+
storageSizeStr = null; // Let this re-calculate after the calling save()
10621069
Collection<String> duplicates = IngestUtil.findDuplicateFilenames(workingVersion, newFiles);
10631070
if (!duplicates.isEmpty()) {
10641071
JH.addMessage(FacesMessage.SEVERITY_ERROR, BundleUtil.getStringFromBundle("dataset.message.filesFailure"), BundleUtil.getStringFromBundle("dataset.message.editMetadata.duplicateFilenames", new ArrayList<>(duplicates)));

src/main/java/propertyFiles/Bundle.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1876,6 +1876,7 @@ file.selectToAdd.tipMaxNumFilesUploadsAvailable=Maximum of {0} {0, choice, 0#fil
18761876
file.selectToAdd.tipTabularLimit=<a href="{0}/{1}/user/dataset-management.html#tabular-data-files" title="Tabular Data Files - Dataverse User Guide" target="_blank" rel="noopener">Tabular file ingest</a> is limited to {2}.
18771877
file.selectToAdd.tipPerFileTabularLimit=Ingest is limited to the following file sizes based on their format: {0}.
18781878
file.selectToAdd.tipMoreInformation=Select files or drag and drop into the upload widget.
1879+
file.selectToAdd.tipTotalSizeUsed=Total size of Collection: {0}.
18791880
file.selectToAdd.dragdropMsg=Drag and drop files here.
18801881
file.createUploadDisabled=Upload files using rsync via SSH. This method is recommended for large file transfers. The upload script will be available on the Upload Files page once you save this dataset.
18811882
file.fromHTTP=Upload with HTTP via your browser

src/main/webapp/editFilesFragment.xhtml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@
9898
<f:param value="#{systemConfig.guidesBaseUrl}"/>
9999
<f:param value="#{systemConfig.guidesVersion}"/>
100100
</h:outputFormat>
101+
<h:outputFormat value=" #{bundle['file.selectToAdd.tipTotalSizeUsed']}" escape="false">
102+
<f:param value="#{EditDatafilesPage.currentContainerStorageUse}"/>
103+
</h:outputFormat>
101104
<h:outputFormat value=" #{bundle['file.selectToAdd.tipMaxNumFiles']}" escape="false"
102105
rendered="#{EditDatafilesPage.maxNumberOfFiles > 0}">
103106
<f:param value="#{EditDatafilesPage.maxNumberOfFiles}"/>

src/test/java/edu/harvard/iq/dataverse/util/StringUtilTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.Optional;
1111
import java.util.stream.Stream;
1212

13+
import edu.harvard.iq.dataverse.datasetutility.FileSizeChecker;
1314
import org.junit.jupiter.api.Test;
1415
import org.junit.jupiter.params.ParameterizedTest;
1516
import org.junit.jupiter.params.provider.Arguments;

0 commit comments

Comments
 (0)