From c2b47a165ee138d28f211a3bf13767fa1dd60a92 Mon Sep 17 00:00:00 2001 From: Eryk Kulikowski Date: Mon, 8 Aug 2022 10:29:37 +0200 Subject: [PATCH 01/27] initial implementation --- .../edu/harvard/iq/dataverse/DatasetPage.java | 11 ++++++++++- .../harvard/iq/dataverse/DatasetServiceBean.java | 10 +++++----- .../edu/harvard/iq/dataverse/DatasetVersion.java | 11 +++++------ .../java/edu/harvard/iq/dataverse/FilePage.java | 11 ++++++++++- .../edu/harvard/iq/dataverse/api/Dataverses.java | 15 +++++++++++++-- .../impl/AbstractCreateDatasetCommand.java | 10 +++++++++- .../impl/CreateDatasetVersionCommand.java | 10 +++++++++- .../command/impl/CreateNewDatasetCommand.java | 7 ++++++- .../dataverse/search/SearchIncludeFragment.java | 11 +++++++++++ .../iq/dataverse/search/SolrSearchResult.java | 16 ++++++++++++++++ src/main/java/propertyFiles/Bundle.properties | 3 +++ src/main/webapp/dataset.xhtml | 9 +++++++-- src/main/webapp/file.xhtml | 1 + .../webapp/mydata_templates/cards_minimum.html | 1 + src/main/webapp/search-include-fragment.xhtml | 1 + 15 files changed, 107 insertions(+), 20 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java index 63ecfd7cdc1..caaef4def5b 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetPage.java @@ -2155,10 +2155,19 @@ private void displayPublishMessage(){ if (workingVersion.isDraft() && workingVersion.getId() != null && canUpdateDataset() && !dataset.isLockedFor(DatasetLock.Reason.finalizePublication) && (canPublishDataset() || !dataset.isLockedFor(DatasetLock.Reason.InReview) )){ - JsfHelper.addWarningMessage(datasetService.getReminderString(dataset, canPublishDataset())); + JsfHelper.addWarningMessage(datasetService.getReminderString(dataset, canPublishDataset(), false, isValid())); } } + public boolean isValid() { + if (!workingVersion.isDraft()) { + return true; + } + DatasetVersion newVersion = workingVersion.cloneDatasetVersion(); + newVersion.setDatasetFields(newVersion.initDatasetFields()); + return newVersion.isValid(); + } + private void displayLockInfo(Dataset dataset) { // Various info messages, when the dataset is locked (for various reasons): if (dataset.isLocked() && canUpdateDataset()) { diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java index ce8420b91e5..80bc3f614b6 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetServiceBean.java @@ -801,14 +801,10 @@ public void exportAllDatasets(boolean forceReExport) { } } - - public String getReminderString(Dataset dataset, boolean canPublishDataset) { - return getReminderString( dataset, canPublishDataset, false); - } //get a string to add to save success message //depends on page (dataset/file) and user privleges - public String getReminderString(Dataset dataset, boolean canPublishDataset, boolean filePage) { + public String getReminderString(Dataset dataset, boolean canPublishDataset, boolean filePage, boolean isValid) { String reminderString; @@ -834,6 +830,10 @@ public String getReminderString(Dataset dataset, boolean canPublishDataset, bool } } + if (!isValid) { + reminderString = reminderString + "
" + BundleUtil.getStringFromBundle("dataset.message.invalid.warning") + ""; + } + if (reminderString != null) { return reminderString; } else { diff --git a/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java b/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java index 510cb2866e8..3758d0dc989 100644 --- a/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java +++ b/src/main/java/edu/harvard/iq/dataverse/DatasetVersion.java @@ -16,7 +16,6 @@ import java.io.Serializable; import java.net.URL; import java.sql.Timestamp; -import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -52,7 +51,6 @@ import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; -import javax.validation.ValidatorFactory; import javax.validation.constraints.Size; import org.apache.commons.lang3.StringUtils; @@ -67,6 +65,7 @@ public class DatasetVersion implements Serializable { private static final Logger logger = Logger.getLogger(DatasetVersion.class.getCanonicalName()); + private static final Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); /** * Convenience comparator to compare dataset versions by their version number. @@ -1665,8 +1664,6 @@ public String getSemanticVersion() { public List> validateRequired() { List> returnListreturnList = new ArrayList<>(); - ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - Validator validator = factory.getValidator(); for (DatasetField dsf : this.getFlatDatasetFields()) { dsf.setValidationMessage(null); // clear out any existing validation message Set> constraintViolations = validator.validate(dsf); @@ -1680,11 +1677,13 @@ public List> validateRequired() { return returnListreturnList; } + public boolean isValid() { + return validate().isEmpty(); + } + public Set validate() { Set returnSet = new HashSet<>(); - ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); - Validator validator = factory.getValidator(); for (DatasetField dsf : this.getFlatDatasetFields()) { dsf.setValidationMessage(null); // clear out any existing validation message diff --git a/src/main/java/edu/harvard/iq/dataverse/FilePage.java b/src/main/java/edu/harvard/iq/dataverse/FilePage.java index 3fa6d4fdfff..cf19cdd8dcd 100644 --- a/src/main/java/edu/harvard/iq/dataverse/FilePage.java +++ b/src/main/java/edu/harvard/iq/dataverse/FilePage.java @@ -259,10 +259,19 @@ public String init() { private void displayPublishMessage(){ if (fileMetadata.getDatasetVersion().isDraft() && canUpdateDataset() && (canPublishDataset() || !fileMetadata.getDatasetVersion().getDataset().isLockedFor(DatasetLock.Reason.InReview))){ - JsfHelper.addWarningMessage(datasetService.getReminderString(fileMetadata.getDatasetVersion().getDataset(), canPublishDataset(), true)); + JsfHelper.addWarningMessage(datasetService.getReminderString(fileMetadata.getDatasetVersion().getDataset(), canPublishDataset(), true, isValid())); } } + public boolean isValid() { + if (!fileMetadata.getDatasetVersion().isDraft()) { + return true; + } + DatasetVersion newVersion = fileMetadata.getDatasetVersion().cloneDatasetVersion(); + newVersion.setDatasetFields(newVersion.initDatasetFields()); + return newVersion.isValid(); + } + private boolean canViewUnpublishedDataset() { return permissionsWrapper.canViewUnpublishedDataset( dvRequestService.getDataverseRequest(), fileMetadata.getDatasetVersion().getDataset()); } diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Dataverses.java b/src/main/java/edu/harvard/iq/dataverse/api/Dataverses.java index d15b0f1c48f..cc2857e211a 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/Dataverses.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/Dataverses.java @@ -2,6 +2,8 @@ import edu.harvard.iq.dataverse.DataFile; import edu.harvard.iq.dataverse.Dataset; +import edu.harvard.iq.dataverse.DatasetAuthor; +import edu.harvard.iq.dataverse.DatasetField; import edu.harvard.iq.dataverse.DatasetFieldType; import edu.harvard.iq.dataverse.DatasetVersion; import edu.harvard.iq.dataverse.Dataverse; @@ -17,6 +19,8 @@ import edu.harvard.iq.dataverse.GuestbookServiceBean; import edu.harvard.iq.dataverse.MetadataBlock; import edu.harvard.iq.dataverse.RoleAssignment; +import edu.harvard.iq.dataverse.DatasetFieldType.FieldType; + import static edu.harvard.iq.dataverse.api.AbstractApiBean.error; import edu.harvard.iq.dataverse.api.dto.ExplicitGroupDTO; import edu.harvard.iq.dataverse.api.dto.RoleAssignmentDTO; @@ -29,6 +33,7 @@ import edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroupProvider; import edu.harvard.iq.dataverse.authorization.groups.impl.explicit.ExplicitGroupServiceBean; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; +import edu.harvard.iq.dataverse.authorization.users.PrivateUrlUser; import edu.harvard.iq.dataverse.authorization.users.User; import edu.harvard.iq.dataverse.dataverse.DataverseUtil; import edu.harvard.iq.dataverse.engine.command.DataverseRequest; @@ -225,13 +230,14 @@ public Response addDataverse(String body, @PathParam("identifier") String parent @POST @Path("{identifier}/datasets") @Consumes("application/json") - public Response createDataset(String jsonBody, @PathParam("identifier") String parentIdtf) { + public Response createDataset(String jsonBody, @PathParam("identifier") String parentIdtf, @QueryParam("doNotValidate") String doNotValidateParam) { try { logger.fine("Json is: " + jsonBody); User u = findUserOrDie(); Dataverse owner = findDataverseOrDie(parentIdtf); Dataset ds = parseDataset(jsonBody); ds.setOwner(owner); + boolean validate = u.isAuthenticated() && !StringUtil.isTrue(doNotValidateParam); if (ds.getVersions().isEmpty()) { return badRequest(BundleUtil.getStringFromBundle("dataverses.api.create.dataset.error.mustIncludeVersion")); @@ -246,6 +252,11 @@ public Response createDataset(String jsonBody, @PathParam("identifier") String p // clean possible version metadata DatasetVersion version = ds.getVersions().get(0); + + if (!validate && (version.getDatasetAuthors().isEmpty() || version.getDatasetAuthors().stream().anyMatch(a -> a.getName() == null || a.getName().isEmpty()))) { + return badRequest(BundleUtil.getStringFromBundle("dataverses.api.create.dataset.error.mustIncludeAuthorName")); + } + version.setMinorVersionNumber(null); version.setVersionNumber(null); version.setVersionState(DatasetVersion.VersionState.DRAFT); @@ -258,7 +269,7 @@ public Response createDataset(String jsonBody, @PathParam("identifier") String p ds.setGlobalIdCreateTime(null); Dataset managedDs = null; try { - managedDs = execCommand(new CreateNewDatasetCommand(ds, createDataverseRequest(u))); + managedDs = execCommand(new CreateNewDatasetCommand(ds, createDataverseRequest(u), false, null, validate)); } catch (WrappedResponse ww) { Throwable cause = ww.getCause(); StringBuilder sb = new StringBuilder(); diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractCreateDatasetCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractCreateDatasetCommand.java index ec544d9490a..283c333cce3 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractCreateDatasetCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/AbstractCreateDatasetCommand.java @@ -31,6 +31,7 @@ public abstract class AbstractCreateDatasetCommand extends AbstractDatasetComman private static final Logger logger = Logger.getLogger(AbstractCreateDatasetCommand.class.getCanonicalName()); final protected boolean registrationRequired; + final protected boolean validate; public AbstractCreateDatasetCommand(Dataset theDataset, DataverseRequest aRequest) { this(theDataset, aRequest, false); @@ -39,6 +40,13 @@ public AbstractCreateDatasetCommand(Dataset theDataset, DataverseRequest aReques public AbstractCreateDatasetCommand(Dataset theDataset, DataverseRequest aRequest, boolean isRegistrationRequired) { super(aRequest, theDataset); registrationRequired = isRegistrationRequired; + this.validate = true; + } + + public AbstractCreateDatasetCommand(Dataset theDataset, DataverseRequest aRequest, boolean isRegistrationRequired, boolean validate) { + super(aRequest, theDataset); + registrationRequired = isRegistrationRequired; + this.validate = validate; } protected void additionalParameterTests(CommandContext ctxt) throws CommandException { @@ -81,7 +89,7 @@ public Dataset execute(CommandContext ctxt) throws CommandException { DatasetVersion dsv = getVersionToPersist(theDataset); // This re-uses the state setup logic of CreateDatasetVersionCommand, but // without persisting the new version, or altering its files. - new CreateDatasetVersionCommand(getRequest(), theDataset, dsv).prepareDatasetAndVersion(); + new CreateDatasetVersionCommand(getRequest(), theDataset, dsv, validate).prepareDatasetAndVersion(); theDataset.setCreator((AuthenticatedUser) getRequest().getUser()); 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 dbd2cfa9df8..73c6434cc69 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 @@ -27,11 +27,17 @@ public class CreateDatasetVersionCommand extends AbstractDatasetCommand currentVersions = dataset.getVersions(); diff --git a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateNewDatasetCommand.java b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateNewDatasetCommand.java index 534e07feaae..e9c48d658cd 100644 --- a/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateNewDatasetCommand.java +++ b/src/main/java/edu/harvard/iq/dataverse/engine/command/impl/CreateNewDatasetCommand.java @@ -55,9 +55,14 @@ public CreateNewDatasetCommand(Dataset theDataset, DataverseRequest aRequest) { public CreateNewDatasetCommand(Dataset theDataset, DataverseRequest aRequest, boolean registrationRequired) { this( theDataset, aRequest, registrationRequired, null); } + public CreateNewDatasetCommand(Dataset theDataset, DataverseRequest aRequest, boolean registrationRequired, Template template) { - super(theDataset, aRequest, registrationRequired); + this(theDataset, aRequest, registrationRequired, template, true); + } + + public CreateNewDatasetCommand(Dataset theDataset, DataverseRequest aRequest, boolean registrationRequired, Template template, boolean validate) { + super(theDataset, aRequest, registrationRequired, validate); this.template = template; dv = theDataset.getOwner(); } diff --git a/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java b/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java index 6da4960679d..be33d210b64 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/SearchIncludeFragment.java @@ -8,6 +8,8 @@ import edu.harvard.iq.dataverse.DatasetFieldType; import edu.harvard.iq.dataverse.DatasetFieldType.FieldType; import edu.harvard.iq.dataverse.DatasetServiceBean; +import edu.harvard.iq.dataverse.DatasetVersion; +import edu.harvard.iq.dataverse.DatasetVersion.VersionState; import edu.harvard.iq.dataverse.DatasetVersionServiceBean; import edu.harvard.iq.dataverse.Dataverse; import edu.harvard.iq.dataverse.DataverseFacet; @@ -1383,6 +1385,15 @@ public boolean isActivelyEmbargoed(SolrSearchResult result) { } } + public boolean isValid(SolrSearchResult result) { + if (!result.isDraftState()) { + return true; + } + DatasetVersion version = datasetVersionService.getDatasetVersionById(result.getEntityId(), VersionState.DRAFT.toString()); + version.setDatasetFields(version.initDatasetFields()); + return version.isValid(); + } + public enum SortOrder { asc, desc diff --git a/src/main/java/edu/harvard/iq/dataverse/search/SolrSearchResult.java b/src/main/java/edu/harvard/iq/dataverse/search/SolrSearchResult.java index 59fcd1d8503..0adf068909e 100644 --- a/src/main/java/edu/harvard/iq/dataverse/search/SolrSearchResult.java +++ b/src/main/java/edu/harvard/iq/dataverse/search/SolrSearchResult.java @@ -422,6 +422,7 @@ public JsonObjectBuilder getJsonForMyData() { .add("is_draft_state", this.isDraftState()).add("is_in_review_state", this.isInReviewState()) .add("is_unpublished_state", this.isUnpublishedState()).add("is_published", this.isPublishedState()) .add("is_deaccesioned", this.isDeaccessionedState()) + .add("is_valid", this.isValid()) .add("date_to_display_on_card", getDateToDisplayOnCard()); // Add is_deaccessioned attribute, even though MyData currently screens any deaccessioned info out @@ -1255,4 +1256,19 @@ public Long getEmbargoEndDate() { public void setEmbargoEndDate(Long embargoEndDate) { this.embargoEndDate = embargoEndDate; } + + public boolean isValid() { + if (!this.entity.isInstanceofDataset()) { + return true; + } + if (!this.isDraftState()) { + return true; + } + Dataset ds = (Dataset) this.entity; + ds.setOwner(); + DatasetVersion dv = ds.getVersionFromId(this.datasetVersionId); + DatasetVersion newVersion = dv.cloneDatasetVersion(); + newVersion.setDatasetFields(newVersion.initDatasetFields()); + return newVersion.isValid(); + } } diff --git a/src/main/java/propertyFiles/Bundle.properties b/src/main/java/propertyFiles/Bundle.properties index cfaeab739ef..25b20285ded 100644 --- a/src/main/java/propertyFiles/Bundle.properties +++ b/src/main/java/propertyFiles/Bundle.properties @@ -15,6 +15,7 @@ embargoed=Embargoed embargoedaccess=Embargoed with Access embargoedandrestricted=Embargoed and then Restricted embargoedandrestrictedaccess=Embargoed and then Restricted with Access +notValid=Invalid find=Find search=Search language=Language @@ -1531,6 +1532,7 @@ dataset.message.addFiles.Failure=Failed to add files to the dataset. Please try dataset.message.addFiles.partialSuccess=Partial success: only {0} files out of {1} have been saved. Please try uploading the missing file(s) again. dataset.message.publish.warning=This draft version needs to be published. dataset.message.submit.warning=This draft version needs to be submitted for review. +dataset.message.invalid.warning=This draft version has invalid metadata and needs to be eddited before it can be published. dataset.message.publish.remind.draft=When ready for sharing, please publish it so that others can see these changes. dataset.message.submit.remind.draft=When ready for sharing, please submit it for review. dataset.message.publish.remind.draft.filePage=When ready for sharing, please go to the dataset page to publish it so that others can see these changes. @@ -2554,6 +2556,7 @@ dataverses.api.move.dataverse.error.datasetLink=Dataset is linked to target data dataverses.api.move.dataverse.error.forceMove=Please use the parameter ?forceMove=true to complete the move. This will remove anything from the dataverse that is not compatible with the target dataverse. dataverses.api.create.dataset.error.mustIncludeVersion=Please provide initial version in the dataset json dataverses.api.create.dataset.error.superuserFiles=Only a superuser may add files via this api +dataverses.api.create.dataset.error.mustIncludeAuthorName=Please provide author name in the dataset json #Access.java access.api.allowRequests.failure.noDataset=Could not find Dataset with id: {0} diff --git a/src/main/webapp/dataset.xhtml b/src/main/webapp/dataset.xhtml index bbc29e4edfe..d4553c46ee8 100644 --- a/src/main/webapp/dataset.xhtml +++ b/src/main/webapp/dataset.xhtml @@ -127,6 +127,7 @@ + @@ -1617,6 +1618,9 @@

#{bundle['dataset.submitMessage']}

+

+ #{bundle['dataset.message.invalid.warning']} +

@@ -1633,7 +1637,8 @@
-

#{bundle['dataset.publish.tip']}

+

#{bundle['dataset.publish.tip']}

+

#{bundle['dataset.message.invalid.warning']}

#{bundle['dataset.publish.terms.tip']}

@@ -1693,7 +1698,7 @@
-
From f8ff29421f64269b81ac5d59f0e4c35344d029e5 Mon Sep 17 00:00:00 2001 From: Eryk Kulikowski Date: Fri, 12 Aug 2022 10:34:58 +0200 Subject: [PATCH 02/27] implementation of dataset metadata validity in solr --- conf/solr/8.11.1/schema.xml | 3 ++ .../iq/dataverse/mydata/DataRetrieverAPI.java | 12 ++++- .../dataverse/mydata/MyDataFilterParams.java | 46 ++++++++++++++++++- .../iq/dataverse/mydata/MyDataFinder.java | 9 +++- .../iq/dataverse/mydata/MyDataPage.java | 2 +- .../iq/dataverse/search/IndexServiceBean.java | 9 ++++ .../iq/dataverse/search/SearchFields.java | 3 ++ .../search/SearchIncludeFragment.java | 7 +-- .../dataverse/search/SearchServiceBean.java | 2 + .../iq/dataverse/search/SolrSearchResult.java | 19 +++----- .../mydata_templates/cards_minimum.html | 2 +- 11 files changed, 90 insertions(+), 24 deletions(-) diff --git a/conf/solr/8.11.1/schema.xml b/conf/solr/8.11.1/schema.xml index 63312ab5d40..0d876f48fb9 100644 --- a/conf/solr/8.11.1/schema.xml +++ b/conf/solr/8.11.1/schema.xml @@ -228,6 +228,7 @@ + + + {% for role_name in card_info.user_roles %} From c0947f98c6ce7b3941f2a5e9712c22353e0e1af1 Mon Sep 17 00:00:00 2001 From: Eryk Kulikowski Date: Fri, 12 Aug 2022 15:32:34 +0200 Subject: [PATCH 03/27] validity status of metadata in solr --- .../iq/dataverse/mydata/MyDataPage.java | 13 ++++++ src/main/java/propertyFiles/Bundle.properties | 2 + src/main/webapp/mydata_fragment.xhtml | 41 +++++++++++++------ .../mydata_templates/cards_minimum.html | 2 +- src/main/webapp/resources/js/mydata.js | 7 ++++ 5 files changed, 52 insertions(+), 13 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/mydata/MyDataPage.java b/src/main/java/edu/harvard/iq/dataverse/mydata/MyDataPage.java index 78d04161d88..0e01b375c17 100644 --- a/src/main/java/edu/harvard/iq/dataverse/mydata/MyDataPage.java +++ b/src/main/java/edu/harvard/iq/dataverse/mydata/MyDataPage.java @@ -14,11 +14,13 @@ import edu.harvard.iq.dataverse.RoleAssigneeServiceBean; import edu.harvard.iq.dataverse.search.SearchServiceBean; import edu.harvard.iq.dataverse.search.SolrQueryResponse; +import edu.harvard.iq.dataverse.util.BundleUtil; import edu.harvard.iq.dataverse.authorization.DataverseRole; import edu.harvard.iq.dataverse.authorization.DataverseRolePermissionHelper; import edu.harvard.iq.dataverse.authorization.users.AuthenticatedUser; import edu.harvard.iq.dataverse.engine.command.DataverseRequest; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.logging.Logger; import javax.ejb.EJB; @@ -113,6 +115,17 @@ public List getRoleInfoForCheckboxes(){ return new ArrayList<>(); } } + + public List getValidityInfoForCheckboxes(){ + return Arrays.asList( + new String[] {"true", "valid", BundleUtil.getStringFromBundle("valid")}, + new String[] {"false", "invalid", BundleUtil.getStringFromBundle("notValid")} + ); + } + + public boolean showValidityFilter() { + return true; + } public String getRetrieveDataFullAPIPath(){ return DataRetrieverAPI.retrieveDataFullAPIPath; diff --git a/src/main/java/propertyFiles/Bundle.properties b/src/main/java/propertyFiles/Bundle.properties index 25b20285ded..0f9d0df410a 100644 --- a/src/main/java/propertyFiles/Bundle.properties +++ b/src/main/java/propertyFiles/Bundle.properties @@ -16,6 +16,7 @@ embargoedaccess=Embargoed with Access embargoedandrestricted=Embargoed and then Restricted embargoedandrestrictedaccess=Embargoed and then Restricted with Access notValid=Invalid +valid=Valid find=Find search=Search language=Language @@ -2216,6 +2217,7 @@ mydataFragment.publicationStatus=Publication Status mydataFragment.roles=Roles mydataFragment.resultsByUserName=Results by Username mydataFragment.search=Search my data... +mydataFragment.validity=Metadata validity mydata.result=Result mydata.results=Results mydata.viewnext=View Next diff --git a/src/main/webapp/mydata_fragment.xhtml b/src/main/webapp/mydata_fragment.xhtml index 17cd2d3dbfa..65cbeeac608 100644 --- a/src/main/webapp/mydata_fragment.xhtml +++ b/src/main/webapp/mydata_fragment.xhtml @@ -79,7 +79,23 @@
- + + + + @@ -112,17 +128,18 @@