[906] | 1 | package eu.clarin.cmdi.virtualcollectionregistry.gui.pages; |
---|
| 2 | |
---|
[5436] | 3 | import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry; |
---|
| 4 | import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException; |
---|
| 5 | import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession; |
---|
[5440] | 6 | import eu.clarin.cmdi.virtualcollectionregistry.gui.VolatileEntityModel; |
---|
[5436] | 7 | import eu.clarin.cmdi.virtualcollectionregistry.gui.wizard.CreateVirtualCollectionWizard; |
---|
| 8 | import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection; |
---|
[933] | 9 | import java.security.Principal; |
---|
| 10 | import java.util.Date; |
---|
| 11 | import org.apache.wicket.Page; |
---|
[5436] | 12 | import org.apache.wicket.PageParameters; |
---|
[933] | 13 | import org.apache.wicket.WicketRuntimeException; |
---|
[906] | 14 | import org.apache.wicket.authorization.strategies.role.Roles; |
---|
| 15 | import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation; |
---|
[5440] | 16 | import org.apache.wicket.model.IModel; |
---|
[5372] | 17 | import org.apache.wicket.spring.injection.annot.SpringBean; |
---|
[906] | 18 | |
---|
| 19 | @AuthorizeInstantiation(Roles.USER) |
---|
[933] | 20 | @SuppressWarnings("serial") |
---|
[906] | 21 | public class CreateVirtualCollectionPage extends BasePage { |
---|
| 22 | |
---|
[5372] | 23 | @SpringBean |
---|
| 24 | private VirtualCollectionRegistry vcr; |
---|
[5417] | 25 | |
---|
[5366] | 26 | // only for extensions |
---|
| 27 | protected CreateVirtualCollectionPage() { |
---|
| 28 | } |
---|
| 29 | |
---|
| 30 | // used when page constructed by framework |
---|
| 31 | public CreateVirtualCollectionPage(PageParameters params) { |
---|
| 32 | //ignore any params |
---|
[933] | 33 | this(new VirtualCollection(), null); |
---|
[906] | 34 | } |
---|
[933] | 35 | |
---|
[5366] | 36 | public CreateVirtualCollectionPage(VirtualCollection vc, final Page previousPage) { |
---|
| 37 | final CreateVirtualCollectionWizard wizard = createWizard(vc, previousPage); |
---|
| 38 | add(wizard); |
---|
| 39 | } |
---|
[933] | 40 | |
---|
[5366] | 41 | protected final CreateVirtualCollectionWizard createWizard(VirtualCollection vc, final Page previousPage) { |
---|
[5440] | 42 | return new CreateVirtualCollectionWizard("wizard", new VolatileEntityModel(vc)) { |
---|
[5366] | 43 | |
---|
[933] | 44 | @Override |
---|
| 45 | protected void onCancelWizard() { |
---|
| 46 | // proceed to response page |
---|
| 47 | if (previousPage != null) { |
---|
| 48 | setResponsePage(previousPage); |
---|
| 49 | } else { |
---|
| 50 | setResponsePage(BrowsePrivateCollectionsPage.class); |
---|
| 51 | } |
---|
| 52 | } |
---|
| 53 | |
---|
| 54 | @Override |
---|
[5440] | 55 | protected void onFinishWizard(IModel<VirtualCollection> vcModel) { |
---|
| 56 | final VirtualCollection vc = vcModel.getObject(); |
---|
[933] | 57 | try { |
---|
[5366] | 58 | ApplicationSession session |
---|
| 59 | = (ApplicationSession) getSession(); |
---|
[933] | 60 | Principal principal = session.getPrincipal(); |
---|
| 61 | if (principal == null) { |
---|
| 62 | // XXX: security issue? |
---|
| 63 | throw new WicketRuntimeException("principal == null"); |
---|
[5366] | 64 | |
---|
[933] | 65 | } |
---|
| 66 | // FIXME: get date from GUI? |
---|
[1014] | 67 | if (vc.getId() == null) { |
---|
| 68 | vc.setCreationDate(new Date()); |
---|
| 69 | vcr.createVirtualCollection(principal, vc); |
---|
| 70 | } else { |
---|
| 71 | vcr.updateVirtualCollection(principal, vc.getId(), vc); |
---|
| 72 | } |
---|
[933] | 73 | } catch (VirtualCollectionRegistryException e) { |
---|
[5505] | 74 | getSession().error(e.getMessage()); |
---|
[933] | 75 | } |
---|
| 76 | |
---|
| 77 | // proceed to response page |
---|
| 78 | if (previousPage != null) { |
---|
| 79 | setResponsePage(previousPage); |
---|
| 80 | } else { |
---|
| 81 | setResponsePage(BrowsePrivateCollectionsPage.class); |
---|
| 82 | } |
---|
| 83 | } |
---|
| 84 | }; |
---|
| 85 | } |
---|
| 86 | |
---|
[906] | 87 | } // class CreateVirtualCollecionPage |
---|