source: VirtualCollectionRegistry/trunk/VirtualCollectionRegistry/src/main/java/eu/clarin/cmdi/virtualcollectionregistry/gui/Application.java @ 5585

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

Suppressed jQuery javascript library import by WiQuery?
Refs #594

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