source: VirtualCollectionRegistry/tags/VirtualCollectionRegistry-0.4.0-alpha2/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/pages/CreateVirtualCollectionPage.java @ 5557

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

tag for VCR alpha 2

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