From c7a3d00869f5189ced5fde6894602f46616622e5 Mon Sep 17 00:00:00 2001 From: Alejandra Tenorio <31973211+alejandratenorio@users.noreply.github.com> Date: Tue, 9 Nov 2021 08:55:33 -0600 Subject: [PATCH 1/2] Fix 7874-Dataset-template-authors-ordering --- src/main/java/edu/harvard/iq/dataverse/TemplatePage.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java b/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java index 6e2881300d5..b68d8e160be 100644 --- a/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java +++ b/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java @@ -10,6 +10,7 @@ import static edu.harvard.iq.dataverse.util.JsfHelper.JH; import java.sql.Timestamp; import java.util.Date; +import java.util.Iterator; import java.util.Set; import javax.ejb.EJB; import javax.ejb.EJBException; @@ -183,6 +184,10 @@ public String save(String redirectPage) { Long createdId = new Long(0); Template created; try { + Iterator dsfItSort = template.getDatasetFields().iterator(); + while (dsfItSort.hasNext()) { + dsfItSort.next().setValueDisplayOrder(); + } if (editMode == EditMode.CREATE) { template.setCreateTime(new Timestamp(new Date().getTime())); template.setUsageCount(new Long(0)); From 912bb36ba4df169b8b2bc305bad8d81786a89d16 Mon Sep 17 00:00:00 2001 From: alejandratenorio Date: Thu, 6 Jan 2022 15:45:32 -0600 Subject: [PATCH 2/2] Add DatasetFieldUtil class --- .../harvard/iq/dataverse/TemplatePage.java | 15 ++----- .../command/impl/AbstractDatasetCommand.java | 23 +--------- .../impl/CreateDatasetVersionCommand.java | 4 +- .../CuratePublishedDatasetVersionCommand.java | 3 +- .../impl/UpdateDatasetVersionCommand.java | 5 ++- .../iq/dataverse/util/DatasetFieldUtil.java | 42 +++++++++++++++++++ 6 files changed, 55 insertions(+), 37 deletions(-) create mode 100644 src/main/java/edu/harvard/iq/dataverse/util/DatasetFieldUtil.java diff --git a/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java b/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java index b68d8e160be..8ce7c24ddae 100644 --- a/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java +++ b/src/main/java/edu/harvard/iq/dataverse/TemplatePage.java @@ -6,23 +6,17 @@ import edu.harvard.iq.dataverse.engine.command.impl.UpdateDataverseCommand; import edu.harvard.iq.dataverse.engine.command.impl.UpdateDataverseTemplateCommand; import edu.harvard.iq.dataverse.util.BundleUtil; +import edu.harvard.iq.dataverse.util.DatasetFieldUtil; import edu.harvard.iq.dataverse.util.JsfHelper; import static edu.harvard.iq.dataverse.util.JsfHelper.JH; import java.sql.Timestamp; import java.util.Date; -import java.util.Iterator; -import java.util.Set; import javax.ejb.EJB; import javax.ejb.EJBException; import javax.faces.application.FacesMessage; -import javax.faces.context.FacesContext; import javax.faces.view.ViewScoped; import javax.inject.Inject; import javax.inject.Named; -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.ValidatorFactory; /** * @@ -184,10 +178,9 @@ public String save(String redirectPage) { Long createdId = new Long(0); Template created; try { - Iterator dsfItSort = template.getDatasetFields().iterator(); - while (dsfItSort.hasNext()) { - dsfItSort.next().setValueDisplayOrder(); - } + + DatasetFieldUtil.tidyUpFields( template.getDatasetFields(), false ); + if (editMode == EditMode.CREATE) { template.setCreateTime(new Timestamp(new Date().getTime())); template.setUsageCount(new Long(0)); diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractDatasetCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractDatasetCommand.java index 9d9ad548457..e66b5c9043d 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractDatasetCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractDatasetCommand.java @@ -15,7 +15,6 @@ import edu.harvard.iq.dataverse.util.BundleUtil; import java.sql.Timestamp; import java.util.Date; -import java.util.Iterator; import java.util.Set; import java.util.logging.Level; import java.util.logging.Logger; @@ -115,27 +114,7 @@ protected void validateOrDie(DatasetVersion dsv, Boolean lenient) throws Command } } - /** - * Removed empty fields, sets field value display order. - * - * @param dsv the dataset version show fields we want to tidy up. - */ - protected void tidyUpFields(DatasetVersion dsv) { - Iterator dsfIt = dsv.getDatasetFields().iterator(); - while (dsfIt.hasNext()) { - if (dsfIt.next().removeBlankDatasetFieldValues()) { - dsfIt.remove(); - } - } - Iterator dsfItSort = dsv.getDatasetFields().iterator(); - while (dsfItSort.hasNext()) { - dsfItSort.next().setValueDisplayOrder(); - } - Iterator dsfItTrim = dsv.getDatasetFields().iterator(); - while (dsfItTrim.hasNext()) { - dsfItTrim.next().trimTrailingSpaces(); - } - } + /** * Whether it's EZID or DataCite, if the registration is refused because the diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateDatasetVersionCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateDatasetVersionCommand.java index 328c8d34d05..dbd2cfa9df8 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateDatasetVersionCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateDatasetVersionCommand.java @@ -10,6 +10,8 @@ import edu.harvard.iq.dataverse.engine.command.RequiredPermissions; import edu.harvard.iq.dataverse.engine.command.exception.CommandException; import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException; +import edu.harvard.iq.dataverse.util.DatasetFieldUtil; + import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; @@ -76,7 +78,7 @@ public void prepareDatasetAndVersion() throws CommandException { //throwing constraint violations because they //had been stripped from the dataset fields prior to validation validateOrDie(newVersion, false); - tidyUpFields(newVersion); + DatasetFieldUtil.tidyUpFields(newVersion.getDatasetFields(), true); final List currentVersions = dataset.getVersions(); ArrayList dsvs = new ArrayList<>(currentVersions.size()); diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java index a86f90d03eb..24966f0a548 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CuratePublishedDatasetVersionCommand.java @@ -10,6 +10,7 @@ import edu.harvard.iq.dataverse.export.ExportException; import edu.harvard.iq.dataverse.export.ExportService; import edu.harvard.iq.dataverse.util.BundleUtil; +import edu.harvard.iq.dataverse.util.DatasetFieldUtil; import edu.harvard.iq.dataverse.workflows.WorkflowComment; import edu.harvard.iq.dataverse.Dataset; import edu.harvard.iq.dataverse.DatasetVersion; @@ -59,7 +60,7 @@ public Dataset execute(CommandContext ctxt) throws CommandException { validateOrDie(updateVersion, isValidateLenient()); // final DatasetVersion editVersion = getDataset().getEditVersion(); - tidyUpFields(updateVersion); + DatasetFieldUtil.tidyUpFields(updateVersion.getDatasetFields(), true); // Merge the new version into our JPA context ctxt.em().merge(updateVersion); diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/UpdateDatasetVersionCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/UpdateDatasetVersionCommand.java index 4da9e2fef2f..227c54c598f 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/UpdateDatasetVersionCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/UpdateDatasetVersionCommand.java @@ -9,6 +9,7 @@ import edu.harvard.iq.dataverse.engine.command.RequiredPermissions; import edu.harvard.iq.dataverse.engine.command.exception.CommandException; import edu.harvard.iq.dataverse.engine.command.exception.IllegalCommandException; +import edu.harvard.iq.dataverse.util.DatasetFieldUtil; import edu.harvard.iq.dataverse.util.FileMetadataUtil; import java.io.IOException; @@ -117,8 +118,8 @@ public Dataset execute(CommandContext ctxt) throws CommandException { validateOrDie(getDataset().getEditVersion(fmVarMet), isValidateLenient()); final DatasetVersion editVersion = getDataset().getEditVersion(fmVarMet); - - tidyUpFields(editVersion); + + DatasetFieldUtil.tidyUpFields(editVersion.getDatasetFields(), true); // Merge the new version into out JPA context, if needed. if (editVersion.getId() == null || editVersion.getId() == 0L) { diff --git a/src/main/java/edu/harvard/iq/dataverse/util/DatasetFieldUtil.java b/src/main/java/edu/harvard/iq/dataverse/util/DatasetFieldUtil.java new file mode 100644 index 00000000000..c5c725283f2 --- /dev/null +++ b/src/main/java/edu/harvard/iq/dataverse/util/DatasetFieldUtil.java @@ -0,0 +1,42 @@ +package edu.harvard.iq.dataverse.util; + +import edu.harvard.iq.dataverse.DatasetField; + +import java.util.Iterator; +import java.util.List; +import java.util.logging.Logger; + +/** + * Toolkit for datasetFields + * @author alejandra.tenorio + * @author qqmyers + */ +public class DatasetFieldUtil { + + private static final Logger logger = Logger.getLogger(DatasetFieldUtil.class.getCanonicalName()); + + /** + * Removed empty fields, sets field value display order. + * @param datasetFields the datasetFields from templates or datasetVersions we want to tidy up. + * @param removeBlanks if remove blank fields + */ + public static void tidyUpFields(List datasetFields, boolean removeBlanks) { + if(removeBlanks){ + Iterator dsfIt = datasetFields.iterator(); + while (dsfIt.hasNext()) { + if (dsfIt.next().removeBlankDatasetFieldValues()) { + dsfIt.remove(); + } + } + Iterator dsfItTrim = datasetFields.iterator(); + while (dsfItTrim.hasNext()) { + dsfItTrim.next().trimTrailingSpaces(); + } + } + Iterator dsfItSort = datasetFields.iterator(); + while (dsfItSort.hasNext()) { + dsfItSort.next().setValueDisplayOrder(); + } + + } +}