1 | package eu.clarin.cmdi.virtualcollectionregistry.gui.pages; |
---|
2 | |
---|
3 | import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry; |
---|
4 | import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException; |
---|
5 | import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession; |
---|
6 | import eu.clarin.cmdi.virtualcollectionregistry.gui.VolatileEntityModel; |
---|
7 | import eu.clarin.cmdi.virtualcollectionregistry.gui.wizard.CreateVirtualCollectionWizard; |
---|
8 | import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection; |
---|
9 | import java.security.Principal; |
---|
10 | import java.util.Date; |
---|
11 | import org.apache.wicket.Page; |
---|
12 | import org.apache.wicket.PageParameters; |
---|
13 | import org.apache.wicket.WicketRuntimeException; |
---|
14 | import org.apache.wicket.authorization.strategies.role.Roles; |
---|
15 | import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation; |
---|
16 | import org.apache.wicket.model.IModel; |
---|
17 | import org.apache.wicket.spring.injection.annot.SpringBean; |
---|
18 | |
---|
19 | @AuthorizeInstantiation(Roles.USER) |
---|
20 | @SuppressWarnings("serial") |
---|
21 | public class CreateVirtualCollectionPage extends BasePage { |
---|
22 | |
---|
23 | @SpringBean |
---|
24 | private VirtualCollectionRegistry vcr; |
---|
25 | |
---|
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 |
---|
33 | this(new VirtualCollection(), null); |
---|
34 | } |
---|
35 | |
---|
36 | public CreateVirtualCollectionPage(VirtualCollection vc, final Page previousPage) { |
---|
37 | final CreateVirtualCollectionWizard wizard = createWizard(vc, previousPage); |
---|
38 | add(wizard); |
---|
39 | } |
---|
40 | |
---|
41 | protected final CreateVirtualCollectionWizard createWizard(VirtualCollection vc, final Page previousPage) { |
---|
42 | return new CreateVirtualCollectionWizard("wizard", new VolatileEntityModel(vc)) { |
---|
43 | |
---|
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 |
---|
55 | protected void onFinishWizard(IModel<VirtualCollection> vcModel) { |
---|
56 | final VirtualCollection vc = vcModel.getObject(); |
---|
57 | try { |
---|
58 | ApplicationSession session |
---|
59 | = (ApplicationSession) getSession(); |
---|
60 | Principal principal = session.getPrincipal(); |
---|
61 | if (principal == null) { |
---|
62 | // XXX: security issue? |
---|
63 | throw new WicketRuntimeException("principal == null"); |
---|
64 | |
---|
65 | } |
---|
66 | // FIXME: get date from GUI? |
---|
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 | } |
---|
73 | } catch (VirtualCollectionRegistryException e) { |
---|
74 | getSession().error(e.getMessage()); |
---|
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 | |
---|
87 | } // class CreateVirtualCollecionPage |
---|