source: VirtualCollectionRegistry/branches/VirtualCollectionRegistry-1.0/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/Application.java @ 5609

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

renamed 1.0-beta branch to 1.1

  • Property svn:eol-style set to native
File size: 5.3 KB
Line 
1package eu.clarin.cmdi.virtualcollectionregistry.gui;
2
3import eu.clarin.cmdi.virtualcollectionregistry.AdminUsersService;
4import eu.clarin.cmdi.virtualcollectionregistry.DataStore;
5import eu.clarin.cmdi.virtualcollectionregistry.VirtualCollectionRegistry;
6import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.AboutPage;
7import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.AdminPage;
8import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.BrowsePrivateCollectionsPage;
9import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.BrowsePublicCollectionsPage;
10import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.CreateVirtualCollectionPage;
11import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.EditVirtualCollectionPage;
12import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.HelpPage;
13import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.LoginPage;
14import eu.clarin.cmdi.virtualcollectionregistry.gui.pages.VirtualCollectionDetailsPage;
15import org.apache.wicket.Page;
16import org.apache.wicket.authentication.AuthenticatedWebApplication;
17import org.apache.wicket.authentication.AuthenticatedWebSession;
18import org.apache.wicket.authorization.strategies.role.Roles;
19import org.apache.wicket.markup.html.WebPage;
20import org.apache.wicket.protocol.http.WebApplication;
21import org.apache.wicket.request.target.coding.MixedParamHybridUrlCodingStrategy;
22import org.apache.wicket.session.pagemap.LeastRecentlyAccessedEvictionStrategy;
23import org.apache.wicket.spring.injection.annot.SpringComponentInjector;
24import org.odlabs.wiquery.core.commons.IWiQuerySettings;
25import org.odlabs.wiquery.core.commons.WiQuerySettings;
26import org.slf4j.Logger;
27import org.slf4j.LoggerFactory;
28import org.springframework.beans.factory.annotation.Autowired;
29import org.springframework.stereotype.Component;
30
31@Component
32public class Application extends AuthenticatedWebApplication implements IWiQuerySettings {
33
34    private final static Logger logger = LoggerFactory.getLogger(Application.class);
35
36    @Autowired
37    private VirtualCollectionRegistry registry;
38    @Autowired
39    private DataStore dataStore;
40    @Autowired
41    private AdminUsersService adminUsersService;
42
43    @Override
44    protected void init() {
45        super.init();
46        logger.info("Initialising VCR web application");
47        addComponentInstantiationListener(new SpringComponentInjector(this));
48
49        getMarkupSettings().setDefaultMarkupEncoding("utf-8");
50        getRequestCycleSettings().setResponseRequestEncoding("utf-8");
51        getSessionSettings().setMaxPageMaps(3);
52        getSessionSettings().setPageMapEvictionStrategy(
53                new LeastRecentlyAccessedEvictionStrategy(3));
54        if (!DEPLOYMENT.equals(getConfigurationType())) {
55            logger.warn("Web application configured for development");
56            getMarkupSettings().setStripWicketTags(true);
57            getMarkupSettings().setStripComments(true);
58        }
59
60        mountBookmarkablePage("/login",
61                LoginPage.class);
62        mountBookmarkablePage("/public",
63                BrowsePublicCollectionsPage.class);
64        mountBookmarkablePage("/private",
65                BrowsePrivateCollectionsPage.class);
66        mountBookmarkablePage("/create", CreateVirtualCollectionPage.class);
67        mountBookmarkablePage("/about", AboutPage.class);
68        mountBookmarkablePage("/help", HelpPage.class);
69        mountBookmarkablePage("/admin", AdminPage.class);
70
71        // details of an existing collection by ID, e.g. /details/123
72        mount(new MixedParamHybridUrlCodingStrategy("/details",
73                VirtualCollectionDetailsPage.class, new String[]{VirtualCollectionDetailsPage.PARAM_VC_ID}));
74        // editing an existing collection by ID, e.g. /edit/123
75        mount(new MixedParamHybridUrlCodingStrategy("/edit",
76                EditVirtualCollectionPage.class, new String[]{"id"}));
77    }
78
79    @Override
80    public Class<? extends Page> getHomePage() {
81        return BrowsePublicCollectionsPage.class;
82    }
83
84    @Override
85    protected Class<? extends WebPage> getSignInPageClass() {
86        return LoginPage.class;
87    }
88
89    @Override
90    protected Class<? extends AuthenticatedWebSession> getWebSessionClass() {
91        return ApplicationSession.class;
92    }
93
94    public boolean hasAnyRole(String[] roles) {
95        if (roles != null) {
96            final Roles sessionRoles = AuthenticatedWebSession.get().getRoles();
97            if (sessionRoles != null) {
98                for (String role : roles) {
99                    if (sessionRoles.hasRole(role)) {
100                        return true;
101                    }
102                }
103            }
104        }
105        return false;
106    }
107
108    boolean isAdmin(String user) {
109        return adminUsersService.isAdmin(user);
110    }
111
112    public VirtualCollectionRegistry getRegistry() {
113        return registry;
114    }
115
116    public DataStore getDataStore() {
117        return dataStore;
118    }
119
120    public static Application get() {
121        return (Application) WebApplication.get();
122    }
123
124    @Override
125    public WiQuerySettings getWiQuerySettings() {
126        final WiQuerySettings settings = new WiQuerySettings();
127        // WiQuery should not import the jQuery library because it is already
128        // provided in the template as a dependency of Bootstrap
129        settings.setAutoImportJQueryResource(false);
130        settings.setAutoImportJQueryUIResource(false);
131        return settings;
132    }
133
134} // class Application
Note: See TracBrowser for help on using the repository browser.