source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/CreateVirtualCollectionPage.java @ 5505

Last change on this file since 5505 was 5505, checked in by Twan Goosen, 10 years ago

Added a feedback panel to the base page, removed it from the filter form. Improved feedback (now via panel) when editing/creation of a VC fails

  • Property svn:eol-style set to native
File size: 3.4 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui.pages;
2
3import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
4import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistryException;
5import eu.clarin.cmdi.virtualcollectionregistry.gui.ApplicationSession;
6import eu.clarin.cmdi.virtualcollectionregistry.gui.VolatileEntityModel;
7import eu.clarin.cmdi.virtualcollectionregistry.gui.wizard.CreateVirtualCollectionWizard;
8import eu.clarin.cmdi.virtualcollectionregistry.model.VirtualCollection;
9import java.security.Principal;
10import java.util.Date;
11import org.apache.wicket.Page;
12import org.apache.wicket.PageParameters;
13import org.apache.wicket.WicketRuntimeException;
14import org.apache.wicket.authorization.strategies.role.Roles;
15import org.apache.wicket.authorization.strategies.role.annotations.AuthorizeInstantiation;
16import org.apache.wicket.model.IModel;
17import org.apache.wicket.spring.injection.annot.SpringBean;
18
19@AuthorizeInstantiation(Roles.USER)
20@SuppressWarnings("serial")
21public 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
Note: See TracBrowser for help on using the repository browser.