/** Copyright 2009 TiTA Project, Vienna University of Technology Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE\-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ package at.ac.tuwien.ifs.tita.ui; import java.net.MalformedURLException; import java.security.NoSuchAlgorithmException; import java.util.List; import org.apache.wicket.Request; import org.apache.wicket.Response; import org.apache.wicket.Session; import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.injection.web.InjectorHolder; import org.apache.wicket.security.hive.HiveMind; import org.apache.wicket.security.hive.authentication.LoginContext; import org.apache.wicket.security.hive.config.PolicyFileHiveFactory; import org.apache.wicket.security.hive.config.SwarmPolicyFileHiveFactory; import org.apache.wicket.security.swarm.SwarmWebApplication; import org.apache.wicket.spring.injection.annot.SpringBean; import org.apache.wicket.spring.injection.annot.SpringComponentInjector; import org.apache.wicket.util.file.Folder; import at.ac.tuwien.ifs.tita.business.security.TiTASecurity; import at.ac.tuwien.ifs.tita.business.service.project.IProjectService; import at.ac.tuwien.ifs.tita.business.service.tasks.ITaskService; import at.ac.tuwien.ifs.tita.business.service.user.IUserService; import at.ac.tuwien.ifs.tita.entity.TiTAUser; import at.ac.tuwien.ifs.tita.entity.conv.IssueTracker; import at.ac.tuwien.ifs.tita.entity.conv.ProjectStatus; import at.ac.tuwien.ifs.tita.entity.conv.Role; import at.ac.tuwien.ifs.tita.ui.importing.effort.csv.EffortImportCSVPage; import at.ac.tuwien.ifs.tita.ui.login.TitaLoginContext; import at.ac.tuwien.ifs.tita.ui.login.TitaSession; import at.ac.tuwien.ifs.tita.ui.utils.TimerCoordinator; /** * Wicket Application for testing Hello World from DB. */ public class TiTAApplication extends SwarmWebApplication { private static final Long C_ONE = 1L; private static final Long C_TWO = 2L; private static final Long C_THREE = 3L; // the service for DB-Operations @SpringBean(name = "titaProjectService") private IProjectService titaProjectService; @SpringBean(name = "userService") private IUserService userService; @SpringBean(name = "taskService") private ITaskService taskService; @SpringBean(name = "timerCoordinator") private TimerCoordinator timerCoordinator; private Folder uploadFolder = null; public TiTAApplication() { } /** {@inheritDoc} */ @Override protected void init() { // THIS LINE IS IMPORTANT - IT INSTALLS THE COMPONENT INJECTOR THAT WILL // INJECT NEWLY CREATED COMPONENTS WITH THEIR SPRING DEPENDENCIES super.init(); addComponentInstantiationListener(new SpringComponentInjector(this)); InjectorHolder.getInjector().inject(this); uploadFolder = new Folder(System.getProperty("java.io.tmpdir"), "wicket-uploads"); // Ensure folder exists uploadFolder.mkdirs(); try { initDatabase(); } catch (NoSuchAlgorithmException e) { // TODO Auto-generated catch block e.printStackTrace(); } mountBookmarkablePage("/single", EffortImportCSVPage.class); new Thread(timerCoordinator).start(); } /** * Init database if the values are not available. * * @throws NoSuchAlgorithmException * n */ private void initDatabase() throws NoSuchAlgorithmException { Role admin = new Role(C_ONE, "Administrator"); Role timeconsumer = new Role(C_TWO, "Time Consumer"); Role timecontroller = new Role(C_THREE, "Time Controller"); IssueTracker issueTracker = new IssueTracker(C_ONE, "Mantis-OpenEngSB", "http://localhost/mantisbt-1.1.8"); ProjectStatus open = new ProjectStatus(C_ONE, "open"); ProjectStatus closed = new ProjectStatus(C_TWO, "closed"); TiTAUser user1 = new TiTAUser("admin", TiTASecurity.calcHash("admin"), "Andreas", "Pieber", "anpi@gmx.at", false, admin, null, null); TiTAUser user2 = new TiTAUser("timecontroller", TiTASecurity.calcHash("timecontroller"), "Andreas", "Pieber", "anpi@gmx.at", false, timecontroller, null, null); TiTAUser user3 = new TiTAUser("timeconsumer", TiTASecurity.calcHash("timeconsumer"), "Christoph", "Zehetner", "christoph.zehetner@gmx.at", false, timeconsumer, null, null); IssueTracker i = taskService.getIssueTrackerById(issueTracker.getId()); if (taskService.getIssueTrackerById(issueTracker.getId()) != null) { // taskService.deleteIssueTracker(issueTracker); } taskService.saveAndFlushIssueTracker(issueTracker); List a = titaProjectService.findAllTiTAProjects(); if (titaProjectService.findAllTiTAProjects().contains(open)) { titaProjectService.deleteProjectStatus(open); } titaProjectService.saveAndFlushProjectStatus(open); if (titaProjectService.findAllTiTAProjects().contains(closed)) { titaProjectService.deleteProjectStatus(closed); } titaProjectService.saveAndFlushProjectStatus(closed); if (userService.getRoles().contains(admin)) { userService.deleteRole(admin); } userService.saveAndFlushRole(admin); if (userService.getRoles().contains(timeconsumer)) { userService.deleteRole(timeconsumer); } userService.saveAndFlushRole(timeconsumer); if (userService.getRoles().contains(timecontroller)) { userService.deleteRole(timecontroller); } userService.saveAndFlushRole(timecontroller); List u = userService.getAvailableTiTAUser(); if (userService.getAvailableTiTAUser().contains(user1)) { userService.deleteUser(user1); } userService.saveAndFlushUser(user1); if (userService.getAvailableTiTAUser().contains(user2)) { userService.deleteUser(user2); } userService.saveAndFlushUser(user2); if (userService.getAvailableTiTAUser().contains(user3)) { userService.deleteUser(user3); } userService.saveAndFlushUser(user3); } /** * Gets current homepage of application. * * @return homepage of app */ @Override public Class<BasePage> getHomePage() { return BasePage.class; } /** * {@inheritDoc} */ @Override protected Object getHiveKey() { return getServletContext().getRealPath(CONTEXTPATH); } /** * {@inheritDoc} */ @Override protected void setUpHive() { PolicyFileHiveFactory factory = new SwarmPolicyFileHiveFactory(getActionFactory()); try { factory.addPolicyFile(getServletContext().getResource("/WEB-INF/tita.hive")); factory.setAlias("hp", "at.ac.tuwien.ifs.tita.ui.BasePage"); // Aliases for Admin factory.setAlias("userAdministration", "at.ac.tuwien.ifs.tita.ui.administration.user.UserAdministrationPage"); factory.setAlias("projectAdministration", "at.ac.tuwien.ifs.tita.ui.administration.project.ProjectAdministrationPage"); // Aliases for timeconsumer factory.setAlias("effortsPage", "at.ac.tuwien.ifs.tita.ui.startpages.EffortsPage"); factory.setAlias("dailyView", "at.ac.tuwien.ifs.tita.ui.evaluation.timeconsumer.DailyViewPage"); factory.setAlias("monthlyView", "at.ac.tuwien.ifs.tita.ui.evaluation.timeconsumer.MonthlyViewPage"); factory.setAlias("effortImportCSV", "at.ac.tuwien.ifs.tita.ui.importing.effort.csv.EffortImportCSVPage"); // Aliases for timecontroller factory.setAlias("projectsPage", "at.ac.tuwien.ifs.tita.ui.startpages" + ".ProjectsPage"); factory.setAlias("multipleProjectsView", "at.ac.tuwien.ifs.tita.ui.evaluation" + ".timecontroller.MultipleProjectsView"); factory.setAlias("targetActualView", "at.ac.tuwien.ifs.tita.ui.evaluation" + ".timecontroller.TargetActualView"); factory.setAlias("performanceOfPersonView", "at.ac.tuwien.ifs.tita.ui.evaluation" + ".timecontroller.PerformanceOfPersonView"); // Aliases for admin factory.setAlias("adminPage", "at.ac.tuwien.ifs.tita.ui.startpages" + ".AdminPage"); } catch (MalformedURLException e) { throw new WicketRuntimeException(e); } // register factory HiveMind.registerHive(getHiveKey(), factory); } /** * {@inheritDoc} */ @Override public Class<HomePage> getLoginPage() { return HomePage.class; } /** * {@inheritDoc} */ @Override public Session newSession(Request request, Response response) { return new TitaSession(this, request); } /** * {@inheritDoc} */ public LoginContext getLogoffContext() { return new TitaLoginContext(); } /** * Return the upload folder. * * @return the folder for uploads */ public Folder getUploadFolder() { return uploadFolder; } }