/*
* Copyright (c) 2006-2009 by Dirk Riehle, http://dirkriehle.com
*
* This file is part of the Wahlzeit photo rating application.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/>.
*/
package org.wahlzeit.main;
import org.wahlzeit.handlers.*;
import org.wahlzeit.model.AccessRights;
import org.wahlzeit.model.EnglishModelConfig;
import org.wahlzeit.model.GermanModelConfig;
import org.wahlzeit.model.LanguageConfigs;
import org.wahlzeit.services.ConfigDir;
import org.wahlzeit.services.Language;
import org.wahlzeit.services.LogBuilder;
import org.wahlzeit.services.SysConfig;
import org.wahlzeit.webparts.WebPartTemplateService;
import java.util.logging.Logger;
/**
* A Main class that runs a Wahlzeit web server.
*/
public class ServiceMain extends ModelMain {
private static final Logger log = Logger.getLogger(ServiceMain.class.getName());
/**
*
*/
protected static ServiceMain instance = new ServiceMain();
/**
*
*/
protected boolean isToStop = false;
/**
*
*/
protected boolean isInProduction = false;
/**
*
*/
public static ServiceMain getInstance() {
return instance;
}
/**
*
*/
public void requestStop() {
synchronized (instance) {
instance.isToStop = true;
}
}
/**
*
*/
public boolean isShuttingDown() {
return instance.isToStop;
}
/**
*
*/
public boolean isInProduction() {
return instance.isInProduction;
}
/**
*
*/
public void startUp(boolean inProduction, String rootDir) throws Exception {
isInProduction = inProduction;
log.config(LogBuilder.createSystemMessage().addAction("Start up ModelMain").toString());
super.startUp(rootDir);
log.config(LogBuilder.createSystemMessage().addAction("Configure WebPartTemplateService").toString());
configureWebPartTemplateService();
log.config(LogBuilder.createSystemMessage().addAction("Configure WebPartHandler").toString());
configureWebPartHandlers();
log.config(LogBuilder.createSystemMessage().addAction("Configure LanguageModels").toString());
configureLanguageModels();
log.config(LogBuilder.createSystemMessage().addMessage("StartUp complete.").toString());
}
/**
*
*/
public void configureWebPartTemplateService() {
ConfigDir templatesDir = SysConfig.getTemplatesDir();
WebPartTemplateService.getInstance().setTemplatesDir(templatesDir);
}
/**
*
*/
public void configureWebPartHandlers() {
WebPartHandler temp = null;
WebPartHandlerManager manager = WebPartHandlerManager.getInstance();
// NullInfo and NullForm
manager.addWebPartHandler(PartUtil.NULL_FORM_NAME, new NullFormHandler());
// Note page
manager.addWebPartHandler(PartUtil.SHOW_NOTE_PAGE_NAME, new ShowNotePageHandler());
// ShowPhoto page
manager.addWebPartHandler(PartUtil.FILTER_PHOTOS_FORM_NAME, new FilterPhotosFormHandler());
manager.addWebPartHandler(PartUtil.PRAISE_PHOTO_FORM_NAME, new PraisePhotoFormHandler());
temp = new ShowPhotoPageHandler();
manager.addWebPartHandler(PartUtil.SHOW_PHOTO_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.ENGAGE_GUEST_FORM_NAME, temp);
manager.addWebPartHandler(PartUtil.FILTER_PHOTOS_PAGE_NAME, new FilterPhotosPageHandler());
manager.addWebPartHandler(PartUtil.RESET_SESSION_PAGE_NAME, new ResetSessionPageHandler());
// About and Terms pages
manager.addWebPartHandler(PartUtil.ABOUT_PAGE_NAME,
new ShowInfoPageHandler(AccessRights.GUEST, PartUtil.ABOUT_INFO_FILE));
manager.addWebPartHandler(PartUtil.CONTACT_PAGE_NAME,
new ShowInfoPageHandler(AccessRights.GUEST, PartUtil.CONTACT_INFO_FILE));
manager.addWebPartHandler(PartUtil.IMPRINT_PAGE_NAME,
new ShowInfoPageHandler(AccessRights.GUEST, PartUtil.IMPRINT_INFO_FILE));
manager.addWebPartHandler(PartUtil.TERMS_PAGE_NAME,
new ShowInfoPageHandler(AccessRights.GUEST, PartUtil.TERMS_INFO_FILE));
// Flag, Send, Tell, and Options pages
temp = manager.addWebPartHandler(PartUtil.FLAG_PHOTO_FORM_NAME, new FlagPhotoFormHandler());
manager.addWebPartHandler(PartUtil.FLAG_PHOTO_PAGE_NAME, new ShowPartPageHandler(AccessRights.GUEST, temp));
temp = manager.addWebPartHandler(PartUtil.SEND_EMAIL_FORM_NAME, new SendEmailFormHandler());
manager.addWebPartHandler(PartUtil.SEND_EMAIL_PAGE_NAME, new ShowPartPageHandler(AccessRights.GUEST, temp));
temp = manager.addWebPartHandler(PartUtil.TELL_FRIEND_FORM_NAME, new TellFriendFormHandler());
manager.addWebPartHandler(PartUtil.TELL_FRIEND_PAGE_NAME, new ShowPartPageHandler(AccessRights.GUEST, temp));
temp = manager.addWebPartHandler(PartUtil.SET_OPTIONS_FORM_NAME, new SetOptionsFormHandler());
manager.addWebPartHandler(PartUtil.SET_OPTIONS_PAGE_NAME, new ShowPartPageHandler(AccessRights.GUEST, temp));
// Signup, Login, EmailUserName/Password, and Logout pages
temp = manager.addWebPartHandler(PartUtil.LOGIN_FORM_NAME, new LoginFormHandler());
manager.addWebPartHandler(PartUtil.LOGIN_FORM_NAME, new ShowPartPageHandler(AccessRights.GUEST, temp));
manager.addWebPartHandler(PartUtil.LOGOUT_PAGE_NAME, new LogoutPageHandler());
// SetLanguage pages
temp = new SetLanguagePageHandler();
manager.addWebPartHandler(PartUtil.SET_ENGLISH_LANGUAGE_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SET_GERMAN_LANGUAGE_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SET_SPANISH_LANGUAGE_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SET_JAPANESE_LANGUAGE_PAGE_NAME, temp);
// SetPhotoSize pages
temp = new SetPhotoSizePageHandler();
manager.addWebPartHandler(PartUtil.SET_EXTRA_SMALL_PHOTO_SIZE_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SET_SMALL_PHOTO_SIZE_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SET_MEDIUM_PHOTO_SIZE_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SET_LARGE_PHOTO_SIZE_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SET_EXTRA_LARGE_PHOTO_SIZE_PAGE_NAME, temp);
// ShowHome page
manager.addWebPartHandler(PartUtil.SHOW_USER_PROFILE_FORM_NAME, new ShowUserProfileFormHandler());
manager.addWebPartHandler(PartUtil.SHOW_USER_PHOTO_FORM_NAME, new ShowUserPhotoFormHandler());
manager.addWebPartHandler(PartUtil.SHOW_USER_HOME_PAGE_NAME, new ShowUserHomePageHandler());
// EditProfile, ChangePassword, EditPhoto, and UploadPhoto pages
temp = manager.addWebPartHandler(PartUtil.EDIT_USER_PROFILE_FORM_NAME, new EditUserProfileFormHandler());
manager.addWebPartHandler(PartUtil.EDIT_USER_PROFILE_PAGE_NAME,
new ShowPartPageHandler(AccessRights.USER, temp));
temp = manager.addWebPartHandler(PartUtil.EDIT_USER_PHOTO_FORM_NAME, new EditUserPhotoFormHandler());
manager.addWebPartHandler(PartUtil.EDIT_USER_PHOTO_PAGE_NAME, new ShowPartPageHandler(AccessRights.USER, temp));
temp = manager.addWebPartHandler(PartUtil.UPLOAD_PHOTO_FORM_NAME, new UploadPhotoFormHandler());
manager.addWebPartHandler(PartUtil.UPLOAD_PHOTO_PAGE_NAME, new ShowPartPageHandler(AccessRights.USER, temp));
manager.addWebPartHandler(PartUtil.EDIT_PHOTO_CASE_FORM_NAME, new EditPhotoCaseFormHandler());
manager.addWebPartHandler(PartUtil.SHOW_PHOTO_CASES_PAGE_NAME, new ShowPhotoCasesPageHandler());
// Admin page incl. AdminUserProfile and AdminUserPhoto
temp = new ShowAdminPageHandler();
manager.addWebPartHandler(PartUtil.SHOW_ADMIN_PAGE_NAME, temp);
manager.addWebPartHandler(PartUtil.SHOW_ADMIN_MENU_FORM_NAME, temp);
manager.addWebPartHandler(PartUtil.ADMIN_USER_PROFILE_FORM_NAME, new AdminUserProfileFormHandler());
manager.addWebPartHandler(PartUtil.ADMIN_USER_PHOTO_FORM_NAME, new AdminUserPhotoFormHandler());
}
/**
*
*/
public void configureLanguageModels() {
LanguageConfigs.put(Language.ENGLISH, new EnglishModelConfig());
LanguageConfigs.put(Language.GERMAN, new GermanModelConfig());
}
/**
*
*/
public void shutDown() throws Exception {
//AgentManager am = AgentManager.getInstance();
//am.stopAllThreads();
super.shutDown();
}
}