Changeset 5544


Ignore:
Timestamp:
08/08/14 13:01:54 (10 years ago)
Author:
Twan Goosen
Message:

Added confirmation dialogue for case of pre-publication warnings
Preparing for #607

Location:
VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/VirtualCollectionRegistryUsageException.java

    r5542 r5544  
    1212
    1313    public VirtualCollectionRegistryUsageException(String msg) {
    14         this(msg, null);
     14        this(msg, null, null);
    1515    }
    1616
     
    1818            Throwable cause) {
    1919        this(msg, cause, null);
     20    }
     21
     22    public VirtualCollectionRegistryUsageException(String msg,
     23            List<String> validationErrors) {
     24        this(msg, null, validationErrors);
    2025    }
    2126
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/Application.properties

    r5540 r5544  
    2525  undone. Be aware that other users may not expect a published collection to \
    2626  change!
     27collections.publishwarningsconfirm: WARNING: The collection "${name}" does not \
     28  meet all recommended criteria. The following warnings apply:\n {0}\n\
     29  Would you still like to publish the collection?
     30
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BrowseEditableCollectionsPanel.html

    r5540 r5544  
    1010  <div style="display: none" wicket:id="deleteCollectionDialog"></div>
    1111  <div style="display: none" wicket:id="editPublishedCollectionDialog"></div>
     12  <div style="display: none" wicket:id="confirmPublishCollectionDialog"></div>
    1213  <div wicket:id="collectionsTable"></div>
    1314</wicket:panel>
  • VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/BrowseEditableCollectionsPanel.java

    r5540 r5544  
    33import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
    44import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
     5import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryUsageException;
    56import eu.clarin.cmdi.virtualcollectionregistry.gui.VolatileEntityModel;
    67import eu.clarin.cmdi.virtualcollectionregistry.gui.dialog.ConfirmationDialog;
     
    1011import eu.clarin.cmdi.virtualcollectionregistry.gui.table.VirtualCollectionTable;
    1112import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
     13import eu.clarin.cmdi.virtualcollectionregistry.service.VirtualCollectionValidator;
    1214import java.security.Principal;
    1315import java.util.Collections;
     16import java.util.List;
    1417import org.apache.wicket.Component;
    1518import org.apache.wicket.PageParameters;
     19import org.apache.wicket.Session;
    1620import org.apache.wicket.ajax.AjaxRequestTarget;
    1721import org.apache.wicket.ajax.markup.html.AjaxLink;
     
    2125import org.apache.wicket.model.StringResourceModel;
    2226import org.apache.wicket.spring.injection.annot.SpringBean;
     27import org.slf4j.Logger;
     28import org.slf4j.LoggerFactory;
    2329
    2430/**
     
    3036public class BrowseEditableCollectionsPanel extends Panel {
    3137
     38    private final static Logger logger = LoggerFactory.getLogger(BrowseEditableCollectionsPanel.class);
     39
    3240    @SpringBean
    3341    private VirtualCollectionRegistry vcr;
     
    4856                                protected void onClick(AjaxRequestTarget target,
    4957                                        IModel<VirtualCollection> model) {
    50                                     doPublish(target, model.getObject());
     58                                    doPublish(target, model);
    5159                                }
    5260                            };
     
    109117                        @Override
    110118                        public void onClick(AjaxRequestTarget target) {
    111                             doPublish(target, getModelObject());
     119                            doPublish(target, getModel());
    112120                        }
    113121                    };
     
    159167    private final class PublishCollectionDialog extends ConfirmationDialog {
    160168
    161         private long vcId;
     169        private IModel<VirtualCollection> vcModel;
    162170
    163171        public PublishCollectionDialog(String id,
     
    170178        public void onConfirm(AjaxRequestTarget target) {
    171179            try {
    172                 vcr.setVirtualCollectionState(getUser(), vcId,
    173                         VirtualCollection.State.PUBLIC_PENDING);
    174             } catch (VirtualCollectionRegistryException e) {
    175                 e.printStackTrace();
    176             }
    177         }
    178 
    179         public void show(AjaxRequestTarget target, VirtualCollection vc) {
    180             this.vcId = vc.getId();
     180                try {
     181                    prePublicationValidator.validate(vcModel.getObject());
     182                    doPublish(vcModel.getObject().getId());
     183                } catch (VirtualCollectionRegistryUsageException ex) {
     184                    confirmPublishCollectionDialog.showDialogue(target, vcModel, ex.getValidationErrors());
     185                }
     186            } catch (VirtualCollectionRegistryException ex) {
     187                logger.error("Could not publish collection {}, id {}", vcModel.getObject().getName(), vcModel.getObject().getId(), ex);
     188                Session.get().error(ex.getMessage());
     189            }
     190        }
     191
     192        public void showDialogue(AjaxRequestTarget target, IModel<VirtualCollection> vc) {
     193            this.vcModel = vc;
    181194            super.show(target,
    182                     new StringResourceModel("collections.publishconfirm",
    183                             new VolatileEntityModel<VirtualCollection>(vc)));
     195                    new StringResourceModel("collections.publishconfirm", vc));
    184196        }
    185197    } // class BrowsePrivateCollectionsPage.PublishCollectionDialog
     198
     199    private void doPublish(long vcId) throws VirtualCollectionRegistryException {
     200        vcr.setVirtualCollectionState(getUser(), vcId,
     201                VirtualCollection.State.PUBLIC_PENDING);
     202    }
     203
     204    private final class ConfirmPublishCollectionDialog extends ConfirmationDialog {
     205
     206        private long vcId;
     207
     208        public ConfirmPublishCollectionDialog(String id,
     209                final Component updateComponenet) {
     210            super(id, updateComponenet);
     211            setInitialWidth(400);
     212        }
     213
     214        @Override
     215        public void onConfirm(AjaxRequestTarget target) {
     216            try {
     217                doPublish(vcId);
     218            } catch (VirtualCollectionRegistryException ex) {
     219                logger.error("Could not publish collection with id {}", vcId, ex);
     220                Session.get().error(ex.getMessage());
     221            }
     222        }
     223
     224        public void showDialogue(AjaxRequestTarget target, IModel<VirtualCollection> vc, List<String> warnings) {
     225            this.vcId = vc.getObject().getId();
     226            super.show(target,
     227                    new StringResourceModel("collections.publishwarningsconfirm", vc, new Object[]{warnings}));
     228        }
     229
     230    }
    186231
    187232    private final class DeleteCollectionDialog extends ConfirmationDialog {
     
    238283    private final DeleteCollectionDialog deleteDialog;
    239284    private final EditPublishedCollectionDialog editPublishedDialog;
     285    private final ConfirmPublishCollectionDialog confirmPublishCollectionDialog;
     286
     287    @SpringBean(name = "publication-soft")
     288    private VirtualCollectionValidator prePublicationValidator;
    240289
    241290    /**
     
    264313        publishDialog = new PublishCollectionDialog("publishCollectionDialog", table);
    265314        add(publishDialog);
    266        
     315
    267316        deleteDialog = new DeleteCollectionDialog("deleteCollectionDialog", table);
    268317        add(deleteDialog);
    269        
     318
    270319        editPublishedDialog = new EditPublishedCollectionDialog("editPublishedCollectionDialog", table);
    271320        add(editPublishedDialog);
    272 
     321       
     322        confirmPublishCollectionDialog = new ConfirmPublishCollectionDialog("confirmPublishCollectionDialog", table);
     323        add(confirmPublishCollectionDialog);
    273324    }
    274325
     
    283334
    284335    private void doPublish(AjaxRequestTarget target,
    285             VirtualCollection vc) {
    286         publishDialog.show(target, vc);
     336            IModel<VirtualCollection> vc) {
     337        publishDialog.showDialogue(target, vc);
    287338    }
    288339
Note: See TracChangeset for help on using the changeset viewer.