159159import org .labkey .panoramapublic .ncbi .NcbiPublicationSearchService ;
160160import org .labkey .panoramapublic .ncbi .NcbiPublicationSearchServiceImpl ;
161161import org .labkey .panoramapublic .ncbi .PublicationMatch ;
162+ import org .labkey .panoramapublic .ncbi .NcbiConstants .DB ;
162163import org .labkey .panoramapublic .model .CatalogEntry ;
163164import org .labkey .panoramapublic .model .DataLicense ;
164165import org .labkey .panoramapublic .model .DatasetStatus ;
183184import org .labkey .panoramapublic .proteomexchange .ChemElement ;
184185import org .labkey .panoramapublic .proteomexchange .ExperimentModificationGetter ;
185186import org .labkey .panoramapublic .proteomexchange .Formula ;
186- import org .labkey .panoramapublic .ncbi .NcbiConstants .DB ;
187187import org .labkey .panoramapublic .proteomexchange .NcbiUtils ;
188188import org .labkey .panoramapublic .proteomexchange .ProteomeXchangeService ;
189189import org .labkey .panoramapublic .proteomexchange .ProteomeXchangeServiceException ;
@@ -10300,6 +10300,7 @@ public ModelAndView getView(PrivateDataSendReminderForm form, boolean reshow, Bi
1030010300 // Initialize form with current settings on first view
1030110301 if (!reshow )
1030210302 {
10303+ // Check the "Search for Publications" box if enabled in the saved settings
1030310304 PrivateDataReminderSettings settings = PrivateDataReminderSettings .get ();
1030410305 form .setSearchPublications (settings .isEnablePublicationSearch ());
1030510306 }
@@ -10670,6 +10671,22 @@ public static class DismissPublicationSuggestionAction extends UpdateDatasetStat
1067010671 {
1067110672 private PublicationMatch _publicationMatch ;
1067210673
10674+ @ Override
10675+ protected void doValidationForAction (Errors errors )
10676+ {
10677+ _publicationMatch = PublicationMatch .fromDatasetStatus (_datasetStatus );
10678+
10679+ if (_publicationMatch == null )
10680+ {
10681+ errors .reject (ERROR_MSG , "No publication suggestion exists for the data with short URL " + _exptAnnotations .getShortUrl ().renderShortURL ());
10682+ }
10683+ else if (_datasetStatus .getUserDismissedPublication () != null )
10684+ {
10685+ errors .reject (ERROR_MSG , "The publication suggestion for the data with short URL " + _exptAnnotations .getShortUrl ().renderShortURL ()
10686+ + " has already been dismissed" );
10687+ }
10688+ }
10689+
1067310690 @ Override
1067410691 protected String getConfirmViewTitle ()
1067510692 {
@@ -10691,22 +10708,6 @@ protected Renderable getConfirmViewMessage()
1069110708 publicationRef );
1069210709 }
1069310710
10694- @ Override
10695- protected void doValidationForAction (Errors errors )
10696- {
10697- _publicationMatch = PublicationMatch .fromDatasetStatus (_datasetStatus );
10698-
10699- if (_publicationMatch == null )
10700- {
10701- errors .reject (ERROR_MSG , "No publication suggestion exists for the data with short URL " + _exptAnnotations .getShortUrl ().renderShortURL ());
10702- }
10703- else if (_datasetStatus .getUserDismissedPublication () != null )
10704- {
10705- errors .reject (ERROR_MSG , "The publication suggestion for the data with short URL " + _exptAnnotations .getShortUrl ().renderShortURL ()
10706- + " has already been dismissed" );
10707- }
10708- }
10709-
1071010711 // Fetch the citation from NCBI. If NCBI is unavailable, the publication ID label will be used as a fallback.
1071110712 private void fetchCitation ()
1071210713 {
@@ -10756,6 +10757,21 @@ public ModelAndView getSuccessView(ShortUrlForm shortUrlForm)
1075610757 }
1075710758 }
1075810759
10760+ public static class ShortUrlForm
10761+ {
10762+ private String _shortUrlEntityId ;
10763+
10764+ public String getShortUrlEntityId ()
10765+ {
10766+ return _shortUrlEntityId ;
10767+ }
10768+
10769+ public void setShortUrlEntityId (String shortUrlEntityId )
10770+ {
10771+ _shortUrlEntityId = shortUrlEntityId ;
10772+ }
10773+ }
10774+
1075910775 @ RequiresPermission (AdminOperationsPermission .class )
1076010776 public static class SearchPublicationsForDatasetAction extends SimpleViewAction <ExperimentIdForm >
1076110777 {
@@ -10785,21 +10801,17 @@ public ModelAndView getView(ExperimentIdForm form, BindException errors)
1078510801 DatasetStatus datasetStatus = DatasetStatusManager .getForExperiment (_exptAnnotations );
1078610802
1078710803 // Check if any displayed match was dismissed by the user
10788- boolean showDismissedColumn = false ;
10804+
1078910805 String dismissedPubId = null ;
10790- if (datasetStatus != null && datasetStatus .getUserDismissedPublication () != null
10791- && datasetStatus .getPotentialPublicationId () != null )
10806+ if (datasetStatus != null )
1079210807 {
10793- dismissedPubId = datasetStatus .getPotentialPublicationId ();
10794- for (PublicationMatch match : matches )
10795- {
10796- if (match .getPublicationId ().equals (dismissedPubId ))
10797- {
10798- showDismissedColumn = true ;
10799- break ;
10800- }
10801- }
10808+ dismissedPubId = matches .stream ()
10809+ .map (PublicationMatch ::getPublicationId )
10810+ .filter (datasetStatus ::isPublicationDismissed )
10811+ .findFirst ()
10812+ .orElse (null );
1080210813 }
10814+ boolean showDismissedColumn = dismissedPubId != null ;
1080310815
1080410816 SearchPublicationsForDatasetBean bean = new SearchPublicationsForDatasetBean (_exptAnnotations , matches , showDismissedColumn , dismissedPubId );
1080510817 JspView <SearchPublicationsForDatasetBean > jspView = new JspView <>("/org/labkey/panoramapublic/view/searchPublicationsForDataset.jsp" , bean , errors );
@@ -10891,46 +10903,8 @@ public Object execute(ExperimentIdForm form, BindException errors)
1089110903 }
1089210904 }
1089310905
10894- public static class NotifySubmitterForm extends IdForm
10895- {
10896- private String _publicationId ;
10897- private String _publicationType ;
10898- private String _matchInfo ;
10899-
10900- public String getPublicationId ()
10901- {
10902- return _publicationId ;
10903- }
10904-
10905- public void setPublicationId (String publicationId )
10906- {
10907- _publicationId = publicationId ;
10908- }
10909-
10910- public String getPublicationType ()
10911- {
10912- return _publicationType ;
10913- }
10914-
10915- public void setPublicationType (String publicationType )
10916- {
10917- _publicationType = publicationType ;
10918- }
10919-
10920- public String getMatchInfo ()
10921- {
10922- return _matchInfo ;
10923- }
10924-
10925- public void setMatchInfo (String matchInfo )
10926- {
10927- _matchInfo = matchInfo ;
10928- }
10929-
10930- }
10931-
1093210906 @ RequiresPermission (AdminOperationsPermission .class )
10933- public static class NotifySubmitterOfPublicationsAction extends FormHandlerAction <NotifySubmitterForm >
10907+ public static class NotifySubmitterOfPublicationAction extends FormHandlerAction <NotifySubmitterForm >
1093410908 {
1093510909 private Container _announcementsContainer ;
1093610910 private Announcement _announcement ;
@@ -10960,8 +10934,7 @@ public boolean handlePost(NotifySubmitterForm form, BindException errors) throws
1096010934
1096110935 // Check if the user has already dismissed this publication suggestion
1096210936 DatasetStatus datasetStatus = DatasetStatusManager .getForExperiment (exptAnnotations );
10963- if (datasetStatus != null && datasetStatus .getUserDismissedPublication () != null
10964- && form .getPublicationId ().equals (datasetStatus .getPotentialPublicationId ()))
10937+ if (datasetStatus != null && datasetStatus .isPublicationDismissed (form .getPublicationId ()))
1096510938 {
1096610939 errors .reject (ERROR_MSG , "The user has already dismissed the publication suggestion "
1096710940 + datasetStatus .getPublicationIdLabel ()
@@ -10977,8 +10950,8 @@ public boolean handlePost(NotifySubmitterForm form, BindException errors) throws
1097710950 }
1097810951
1097910952 // Reconstruct PublicationMatch from form fields
10980- PublicationMatch selectedMatch = PublicationMatch . fromMatchInfo ( form .getPublicationId (), pubType , form . getMatchInfo () );
10981- selectedMatch . setCitation ( NcbiPublicationSearchService . get (). getCitation ( form .getPublicationId (), pubType ) );
10953+ String citation = NcbiPublicationSearchService . get (). getCitation ( form .getPublicationId (), pubType );
10954+ PublicationMatch selectedMatch = PublicationMatch . fromMatchInfo ( form .getPublicationId (), pubType , form . getMatchInfo (), citation );
1098210955
1098310956 // Post notification
1098410957 JournalSubmission submission = SubmissionManager .getSubmissionForExperiment (exptAnnotations );
@@ -11029,6 +11002,7 @@ journal, submission, exptAnnotations, submitter, getUser(), notifyUsers,
1102911002 datasetStatus .setPotentialPublicationId (form .getPublicationId ());
1103011003 datasetStatus .setPublicationType (pubType .name ());
1103111004 datasetStatus .setPublicationMatchInfo (form .getMatchInfo ());
11005+ datasetStatus .setCitation (selectedMatch .getCitation ());
1103211006 datasetStatus .setUserDismissedPublication (null );
1103311007 datasetStatus .setLastReminderDate (new Date ());
1103411008
@@ -11052,19 +11026,42 @@ public ActionURL getSuccessURL(NotifySubmitterForm form)
1105211026 }
1105311027 }
1105411028
11055- public static class ShortUrlForm
11029+ public static class NotifySubmitterForm extends IdForm
1105611030 {
11057- private String _shortUrlEntityId ;
11031+ private String _publicationId ;
11032+ private String _publicationType ;
11033+ private String _matchInfo ;
1105811034
11059- public String getShortUrlEntityId ()
11035+ public String getPublicationId ()
1106011036 {
11061- return _shortUrlEntityId ;
11037+ return _publicationId ;
1106211038 }
1106311039
11064- public void setShortUrlEntityId (String shortUrlEntityId )
11040+ public void setPublicationId (String publicationId )
1106511041 {
11066- _shortUrlEntityId = shortUrlEntityId ;
11042+ _publicationId = publicationId ;
11043+ }
11044+
11045+ public String getPublicationType ()
11046+ {
11047+ return _publicationType ;
1106711048 }
11049+
11050+ public void setPublicationType (String publicationType )
11051+ {
11052+ _publicationType = publicationType ;
11053+ }
11054+
11055+ public String getMatchInfo ()
11056+ {
11057+ return _matchInfo ;
11058+ }
11059+
11060+ public void setMatchInfo (String matchInfo )
11061+ {
11062+ _matchInfo = matchInfo ;
11063+ }
11064+
1106811065 }
1106911066
1107011067 private static ExperimentAnnotations getValidExperimentAnnotations (ShortUrlForm shortUrlForm , Errors errors )
0 commit comments