Author: solomax
Date: Wed May 22 17:40:44 2013
New Revision: 1485305
URL: http://svn.apache.org/r1485305
Log:
[OPENMEETINGS-639] installer works as expected
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongratulationsPanel.html
- copied unchanged from r1485172,
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongradulationsPanel.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java
- copied, changed from r1485172,
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongradulationsPanel.java
Removed:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongradulationsPanel.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongradulationsPanel.java
Modified:
openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentCategoryDao.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/AbstractOpenmeetingsSpringTest.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/users/UserForm.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/GeneralUserForm.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/NotInitedPage.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard$InstallStep.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
Modified: openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css
(original)
+++ openmeetings/trunk/singlewebapp/WebContent/openmeetings/css/theme.css Wed
May 22 17:40:44 2013
@@ -580,7 +580,7 @@ div.tableWrapper {
bottom: -20px;
left: 0px;
opacity: .7;
- width: 100%;
+ width: 130px;
padding: 5px;
z-index: 50;
font-size: 14px;
@@ -693,3 +693,18 @@ div.tableWrapper {
background-image: url(images/world_link.png);
background-repeat: no-repeat;
}
+.error {
+ color: red;
+}
+.message {
+ margin: 50px;
+ border: 1px solid black;
+ padding: 15px;
+ -webkit-border-radius: 8px;
+ border-radius: 8px;
+}
+.ui-progressbar div {
+ text-align: center;
+ padding-top: 7px;
+ font-weight: bold;
+}
\ No newline at end of file
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
--- openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java
(original)
+++ openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/cli/Admin.java
Wed May 22 17:40:44 2013
@@ -265,11 +265,11 @@ public class Admin {
importInit.loadSystem(cfg,
force);
restoreOm(ctxName, backup);
} else {
- AdminUserDetails admin =
checkAdminDetails(ctxName);
+ checkAdminDetails(ctxName);
dropDB(connectionProperties);
ImportInitvalues importInit =
getApplicationContext(ctxName).getBean(ImportInitvalues.class);
- importInit.loadAll(cfg,
admin.login, admin.pass, admin.email, admin.group, admin.tz, force);
+ importInit.loadAll(cfg, force);
}
InstallationDocumentHandler.createDocument(3);
@@ -517,55 +517,46 @@ public class Admin {
return result;
}
- private class AdminUserDetails {
- String login = null;
- String email = null;
- String group = null;
- String pass = null;
- String tz = null;
- }
-
- private AdminUserDetails checkAdminDetails(String ctxName) throws
Exception {
- AdminUserDetails admin = new AdminUserDetails();
- admin.login = cmdl.getOptionValue("user");
- admin.email = cmdl.getOptionValue("email");
- admin.group = cmdl.getOptionValue("group");
- if (admin.login == null || admin.login.length() <
InstallationConfig.USER_LOGIN_MINIMUM_LENGTH) {
+ private void checkAdminDetails(String ctxName) throws Exception {
+ cfg.username = cmdl.getOptionValue("user");
+ cfg.email = cmdl.getOptionValue("email");
+ cfg.group = cmdl.getOptionValue("group");
+ if (cfg.username == null || cfg.username.length() <
InstallationConfig.USER_LOGIN_MINIMUM_LENGTH) {
System.out.println("User login was not provided, or too
short, should be at least " + InstallationConfig.USER_LOGIN_MINIMUM_LENGTH + "
character long.");
System.exit(1);
}
try {
- if (!MailUtil.matches(admin.email)) {
+ if (!MailUtil.matches(cfg.email)) {
throw new AddressException("Invalid address");
}
- new InternetAddress(admin.email, true);
+ new InternetAddress(cfg.email, true);
} catch (AddressException ae) {
- System.out.println("Please provide non-empty valid
email: '" + admin.email + "' is not valid.");
+ System.out.println("Please provide non-empty valid
email: '" + cfg.email + "' is not valid.");
System.exit(1);
}
- if (admin.group == null || admin.group.length() < 1) {
- System.out.println("User group was not provided, or too
short, should be at least 1 character long: " + admin.group);
+ if (cfg.group == null || cfg.group.length() < 1) {
+ System.out.println("User group was not provided, or too
short, should be at least 1 character long: " + cfg.group);
System.exit(1);
}
- admin.pass = cmdl.getOptionValue("password");
+ cfg.password = cmdl.getOptionValue("password");
ConfigurationDao cfgDao =
getApplicationContext(ctxName).getBean(ConfigurationDao.class);
- if (invalidPassword(admin.pass, cfgDao)) {
- System.out.print("Please enter password for the user '"
+ admin.login + "':");
- admin.pass = new BufferedReader(new
InputStreamReader(System.in)).readLine();
- if (invalidPassword(admin.pass, cfgDao)) {
+ if (invalidPassword(cfg.password, cfgDao)) {
+ System.out.print("Please enter password for the user '"
+ cfg.username + "':");
+ cfg.password = new BufferedReader(new
InputStreamReader(System.in)).readLine();
+ if (invalidPassword(cfg.password, cfgDao)) {
System.out.println("Password was not provided,
or too short, should be at least " + getMinPasswdLength(cfgDao) + " character
long.");
System.exit(1);
}
}
ImportInitvalues importInit =
getApplicationContext(ctxName).getBean(ImportInitvalues.class);
Map<String, String> tzMap =
ImportHelper.getAllTimeZones(importInit.getTimeZones());
- admin.tz = null;
+ cfg.ical_timeZone = null;
if (cmdl.hasOption("tz")) {
- admin.tz = cmdl.getOptionValue("tz");
- admin.tz = tzMap.containsKey(admin.tz) ? admin.tz :
null;
+ cfg.ical_timeZone = cmdl.getOptionValue("tz");
+ cfg.ical_timeZone =
tzMap.containsKey(cfg.ical_timeZone) ? cfg.ical_timeZone : null;
}
- if (admin.tz == null) {
+ if (cfg.ical_timeZone == null) {
System.out.println("Please enter timezone, Possible
timezones are:");
for (String tzIcal : tzMap.keySet()) {
@@ -573,7 +564,6 @@ public class Admin {
}
System.exit(1);
}
- return admin;
}
public static void dropDB() throws Exception {
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentCategoryDao.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentCategoryDao.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentCategoryDao.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/data/calendar/daos/AppointmentCategoryDao.java
Wed May 22 17:40:44 2013
@@ -18,6 +18,8 @@
*/
package org.apache.openmeetings.data.calendar.daos;
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+
import java.util.Date;
import java.util.List;
@@ -26,8 +28,6 @@ import javax.persistence.NoResultExcepti
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
-import org.apache.openmeetings.OpenmeetingsVariables;
-import org.apache.openmeetings.data.basic.dao.ConfigurationDao;
import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.persistence.beans.calendar.AppointmentCategory;
import org.red5.logging.Red5LoggerFactory;
@@ -37,10 +37,7 @@ import org.springframework.transaction.a
@Transactional
public class AppointmentCategoryDao {
-
- private static final Logger log = Red5LoggerFactory.getLogger(
- ConfigurationDao.class,
- OpenmeetingsVariables.webAppRootKey);
+ private static final Logger log =
Red5LoggerFactory.getLogger(AppointmentCategoryDao.class, webAppRootKey);
@PersistenceContext
private EntityManager em;
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/installation/ImportInitvalues.java
Wed May 22 17:40:44 2013
@@ -18,6 +18,7 @@
*/
package org.apache.openmeetings.installation;
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
import static
org.apache.openmeetings.installation.InstallationConfig.USER_PASSWORD_MINIMUM_LENGTH;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.CRYPT_KEY;
import static
org.apache.openmeetings.persistence.beans.basic.Configuration.DASHBOARD_SHOW_MYROOMS_KEY;
@@ -40,7 +41,6 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import org.apache.openmeetings.OpenmeetingsVariables;
import org.apache.openmeetings.data.basic.FieldLanguageDao;
import org.apache.openmeetings.data.basic.FieldManager;
import org.apache.openmeetings.data.basic.NaviBuilder;
@@ -71,9 +71,7 @@ import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
public class ImportInitvalues {
-
- private static final Logger log = Red5LoggerFactory.getLogger(
- ImportInitvalues.class,
OpenmeetingsVariables.webAppRootKey);
+ private static final Logger log =
Red5LoggerFactory.getLogger(ImportInitvalues.class, webAppRootKey);
@Autowired
private ConfigurationDao configurationDao;
@@ -107,15 +105,21 @@ public class ImportInitvalues {
private PollManager pollManager;
@Autowired
private SipDao sipDao;
+ private int progress = 0;
- public void loadMainMenu() {
-
+ public int getProgress() {
+ return progress;
+ }
+
+ public void loadUserLevels() {
userManager.addUserLevel("User", 1);
userManager.addUserLevel("Moderator", 2);
userManager.addUserLevel("Admin", 3);
userManager.addUserLevel("Web-Service (only access via SOAP)",
4);
log.debug("UserLevels ADDED");
-
+ }
+
+ public void loadMainMenu() {
/*
* ######################## Dashboard Menu Points
*/
@@ -215,14 +219,15 @@ public class ImportInitvalues {
navimanagement.addMainStructure("adminModuleServers", null, 22,
1498,
true, false, 3, "Administration of Servers", 6,
false, 1499L);
log.debug("MainMenu ADDED");
-
+ }
+
+ public void loadErrorTypes() {
errorManagement.addErrorType(new Long(1), new Long(322));
errorManagement.addErrorType(new Long(2), new Long(323));
log.debug("Error types ADDED");
}
public void loadErrorMappingsFromXML() throws Exception {
-
SAXReader reader = new SAXReader();
Document document = reader.read(new File(
OmFileHelper.getLanguagesDir(),
OmFileHelper.nameOfErrorFile));
@@ -500,7 +505,7 @@ public class ImportInitvalues {
"Area to be shown to the user
after login. Possible values are: "
+
"dashboard.rooms, dashboard.chat, calendar, rooms.public, rooms.private,
rooms.user");
- log.debug("Configuration ADDED");
+ log.debug("Configurations ADDED");
}
public void loadRoomTypes() {
@@ -680,38 +685,30 @@ public class ImportInitvalues {
}
}
- public void loadInitUserAndOrganisation(String username, String
userpass,
- String email, String defaultOrganisationName, String
ical_timeZone,
- String configdefaultLang) {
- // Add user
- try {
-
- Long default_lang_id =
Long.parseLong(configdefaultLang);
- if (default_lang_id == null)
- default_lang_id = 1L;
-
- // Add default group
- Long organisation_id =
organisationManager.addOrganisation(
- defaultOrganisationName, 1);
-
- // BaseUrl as param is empty as we do not send an EMAIL
here
- Long user_id = userManager.registerUserInit(new
Long(3), 3, 1,
- 1, username, userpass, "lastname",
"firstname", email,
- new java.util.Date(), "street", "no",
"fax", "zip", 1,
- "town", default_lang_id, false,
- Arrays.asList(organisation_id),
"phone", false, "", false,
-
omTimeZoneDaoImpl.getOmTimeZoneByIcal(ical_timeZone),
- false, "", "", false, true);
-
- log.debug("Installation - User Added user-Id " +
user_id);
-
- if (user_id < 0) {
- throw new Exception(
- "Could not add user user
returns a negative error message: "
- + user_id);
- }
- } catch (Exception e) {
- log.error("[loadInitUserAndOrganisation] ", e);
+ public void loadInitUserAndOrganisation(InstallationConfig cfg) throws
Exception {
+ Long default_lang_id = Long.parseLong(cfg.defaultLangId);
+ if (default_lang_id == null) {
+ default_lang_id = 1L;
+ }
+
+ // Add default group
+ Long organisation_id =
organisationManager.addOrganisation(cfg.group, 1);
+
+ // BaseUrl as param is empty as we do not send an EMAIL here
+ Long user_id = userManager.registerUserInit(new Long(3), 3, 1,
+ 1, cfg.username, cfg.password, "lastname",
"firstname", cfg.email,
+ new java.util.Date(), "street", "no", "fax",
"zip", 1,
+ "town", default_lang_id, false,
+ Arrays.asList(organisation_id), "phone", false,
"", false,
+
omTimeZoneDaoImpl.getOmTimeZoneByIcal(cfg.ical_timeZone),
+ false, "", "", false, true);
+
+ log.debug("Installation - User Added user-Id " + user_id);
+
+ if (user_id < 0) {
+ throw new Exception(
+ "Could not add user user returns a
negative error message: "
+ + user_id);
}
}
@@ -762,7 +759,7 @@ public class ImportInitvalues {
log.debug("TimeZones ADDED");
}
- public List<OmTimeZone> getTimeZones() throws Exception {
+ public static List<OmTimeZone> getTimeZones() throws Exception {
log.debug(":: getTimeZones ::");
List<OmTimeZone> omTimeZones = new LinkedList<OmTimeZone>();
@@ -802,7 +799,7 @@ public class ImportInitvalues {
* @return
* @throws Exception
*/
- public LinkedHashMap<Integer, LinkedHashMap<String, Object>>
getLanguageFiles()
+ public static LinkedHashMap<Integer, LinkedHashMap<String, Object>>
getLanguageFiles()
throws Exception {
LinkedHashMap<Integer, LinkedHashMap<String, Object>> languages
= new LinkedHashMap<Integer, LinkedHashMap<String, Object>>();
@@ -843,14 +840,8 @@ public class ImportInitvalues {
public void loadInitAppointmentCategories() {
log.debug("ImportInitValues.loadInitAppointmentCategories");
- try {
- appointmentCategoryDaoImpl.addAppointmentCategory(new
Long(-1),
- "default", "default");
- } catch (Exception e) {
- log.error("Could not create AppointMentcategories");
- return;
- }
-
+ appointmentCategoryDaoImpl.addAppointmentCategory(new Long(-1),
+ "default", "default");
}
//
------------------------------------------------------------------------------
@@ -860,21 +851,14 @@ public class ImportInitvalues {
*/
//
------------------------------------------------------------------------------
public void loadInitAppointmentReminderTypes() {
-
log.debug("ImportInitValues.loadInitAppointmentReminderTypes");
- try {
-
appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
- "do not send notification");
-
appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
- "simple email");
-
appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
- "iCal email");
-
- } catch (Exception e) {
- log.error("Could not create ReminderType");
- return;
- }
+ appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
+ "do not send notification");
+ appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
+ "simple email");
+ appointmentReminderTypDaoImpl.addAppointmentReminderTyps(-1L,
+ "iCal email");
}
public void loadLanguagesFile(int langId) throws Exception {
@@ -987,18 +971,6 @@ public class ImportInitvalues {
* Loading initial Language from xml Files into database
*/
//
------------------------------------------------------------------------------
- public void loadInitLanguages() throws Exception {
- loadCountriesFiles();
- loadTimeZoneFiles();
- loadLanguagesFiles();
- }
-
- //
------------------------------------------------------------------------------
-
- /**
- * Loading initial Language from xml Files into database
- */
- //
------------------------------------------------------------------------------
public void loadPollTypes() {
pollManager.addPollType(26L, false);
pollManager.addPollType(27L, true);
@@ -1006,40 +978,56 @@ public class ImportInitvalues {
//
------------------------------------------------------------------------------
- public void loadSystem(InstallationConfig cfg, boolean force)
- throws Exception {
+ public void loadSystem(InstallationConfig cfg, boolean force) throws
Exception {
// FIXME dummy check if installation was performed before
- if (!force && usersDao.getAllUsers().size() > 0) {
+ if (!force && usersDao.count() > 0) {
log.debug("System contains users, no need to install
data one more time.");
}
sipDao.delete();
+ progress = 6;
+ loadUserLevels();
+ progress = 13;
loadMainMenu();
+ progress = 19;
+ loadErrorTypes();
+ progress = 25;
loadErrorMappingsFromXML();
- loadInitLanguages();
+ progress = 31;
+ loadCountriesFiles();
+ progress = 38;
+ loadTimeZoneFiles();
+ progress = 44;
+ loadLanguagesFiles();
+ progress = 50;
loadSalutations();
+ progress = 56;
// AppointMent Categories
loadInitAppointmentCategories();
+ progress = 63;
// Appointment Reminder types
loadInitAppointmentReminderTypes();
+ progress = 69;
// Appointment poll types
loadPollTypes();
+ progress = 75;
loadRoomTypes();
+ progress = 81;
loadConfiguration(cfg);
+ progress = 88;
}
- public void loadAll(InstallationConfig cfg, String username,
- String userpass, String useremail, String groupame,
- String timeZone, boolean force) throws Exception {
+ public void loadAll(InstallationConfig cfg, boolean force) throws
Exception {
// FIXME dummy check if installation was performed before
- if (!force && usersDao.getAllUsers().size() > 0) {
+ if (!force && usersDao.count() > 0) {
log.debug("System contains users, no need to install
data one more time.");
return;
}
loadSystem(cfg, force);
- loadInitUserAndOrganisation(username, userpass, useremail,
groupame,
- timeZone, cfg.defaultLangId);
+ loadInitUserAndOrganisation(cfg);
+ progress = 94;
loadDefaultRooms("1".equals(cfg.createDefaultRooms));
+ progress = 100;
}
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/AbstractOpenmeetingsSpringTest.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/AbstractOpenmeetingsSpringTest.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/AbstractOpenmeetingsSpringTest.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/test/AbstractOpenmeetingsSpringTest.java
Wed May 22 17:40:44 2013
@@ -135,7 +135,12 @@ public abstract class AbstractOpenmeetin
}
private void makeDefaultScheme() throws Exception {
- importInitvalues.loadAll(new InstallationConfig(), username,
userpass,
- useremail, orgname, timeZone, false);
+ InstallationConfig cfg = new InstallationConfig();
+ cfg.username = username;
+ cfg.password = userpass;
+ cfg.email = useremail;
+ cfg.group = orgname;
+ cfg.ical_timeZone = timeZone;
+ importInitvalues.loadAll(cfg, false);
}
}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/users/UserForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/users/UserForm.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/users/UserForm.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/admin/users/UserForm.java
Wed May 22 17:40:44 2013
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.admi
import static org.apache.openmeetings.utils.UserHelper.getMinLoginLength;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static
org.apache.wicket.validation.validator.StringValidator.minimumLength;
import java.util.Arrays;
@@ -43,7 +44,6 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.util.time.Duration;
-import org.apache.wicket.validation.validator.StringValidator;
/**
* CRUD operations in form for {@link User}
@@ -132,7 +132,7 @@ public class UserForm extends AdminBaseF
ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
login = new RequiredTextField<String>("login");
// login.setLabel(new Model<String>("testname"));
-
add(login.add(StringValidator.minimumLength(getMinLoginLength(cfgDao))));
+ add(login.add(minimumLength(getMinLoginLength(cfgDao))));
add(generalForm = new GeneralUserForm("general", getModel(),
true));
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/app/Application.java
Wed May 22 17:40:44 2013
@@ -148,15 +148,18 @@ public class Application extends Authent
return get().dashboardContext;
}
- private static <T> T _getBean(Class<T> clazz) {
- return
getWebApplicationContext(get().getServletContext()).getBean(clazz);
+ //TODO need more safe way FIXME
+ public <T> T _getBean(Class<T> clazz) {
+ return
getWebApplicationContext(getServletContext()).getBean(clazz);
}
public static boolean isInstalled() {
boolean result = isInstalled;
if (!isInstalled) {
if (ScopeApplicationAdapter.initComplete) {
- result = _getBean(UsersDao.class).count() > 0
&& _getBean(FieldLanguagesValuesDao.class).count() > 0;
+ //TODO can also check crypt class here
+ result = get()._getBean(UsersDao.class).count()
> 0
+ &&
get()._getBean(FieldLanguagesValuesDao.class).count() > 0;
}
}
return result;
@@ -167,7 +170,7 @@ public class Application extends Authent
if (!isInstalled()) {
throw new
RestartResponseException(InstallWizardPage.class);
}
- return _getBean(clazz);
+ return get()._getBean(clazz);
} else {
throw new RestartResponseException(NotInitedPage.class);
}
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.html?rev=1485305&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.html
(added)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.html
Wed May 22 17:40:44 2013
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you 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.
+
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+ <div class="message error">
+ <h3 wicket:id="msg"></h3>
+ <pre wicket:id="err"></pre>
+ </div>
+</wicket:panel>
+</html>
Added:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.java?rev=1485305&view=auto
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.java
(added)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/ErrorMessagePanel.java
Wed May 22 17:40:44 2013
@@ -0,0 +1,44 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.openmeetings.web.common;
+
+import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
+
+import java.io.PrintWriter;
+
+import org.apache.commons.io.output.StringBuilderWriter;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+
+public class ErrorMessagePanel extends Panel {
+ private static final Logger log =
Red5LoggerFactory.getLogger(ErrorMessagePanel.class, webAppRootKey);
+ private static final long serialVersionUID = 1L;
+
+ public ErrorMessagePanel(String id, String msg, Throwable err) {
+ super(id);
+
+ log.error(msg, err);
+ add(new Label("msg", msg));
+ StringBuilderWriter sw = new StringBuilderWriter();
+ err.printStackTrace(new PrintWriter(sw));
+ add(new Label("err", sw.toString()));
+ }
+}
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/GeneralUserForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/GeneralUserForm.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/GeneralUserForm.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/common/GeneralUserForm.java
Wed May 22 17:40:44 2013
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.comm
import static org.apache.openmeetings.utils.UserHelper.getMinPasswdLength;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
+import static
org.apache.wicket.validation.validator.StringValidator.minimumLength;
import java.util.ArrayList;
import java.util.List;
@@ -59,7 +60,6 @@ import org.apache.wicket.markup.html.pan
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.validation.validator.StringValidator;
public class GeneralUserForm extends Form<User> {
private static final long serialVersionUID = 5360667099083510234L;
@@ -74,7 +74,7 @@ public class GeneralUserForm extends For
//TODO should throw exception if non admin User edit somebody
else (or make all fields read-only)
add(passwordField = new PasswordTextField("password", new
Model<String>()));
ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
-
passwordField.setRequired(false).add(StringValidator.minimumLength(getMinPasswdLength(cfgDao)));
+
passwordField.setRequired(false).add(minimumLength(getMinPasswdLength(cfgDao)));
SalutationDao salutDao = getBean(SalutationDao.class);
FieldLanguageDao langDao = getBean(FieldLanguageDao.class);
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.html?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/BasePage.html
Wed May 22 17:40:44 2013
@@ -23,6 +23,7 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
<link rel="shortcut icon" href="favicon.ico"
type="image/x-icon"/>
<title wicket:id="pageTitle">[title]</title>
+ <link media="screen" type="text/css" rel="stylesheet"
href="css/jquery-ui-1.10.2.custom.min.css"/>
<link rel="stylesheet" type="text/css"
href="css/openmeetings-forms.css"/>
<link media="screen" type="text/css" rel="stylesheet"
href="css/theme.css"/>
</head>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.html?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/MainPage.html
Wed May 22 17:40:44 2013
@@ -20,7 +20,6 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:head>
- <link media="screen" type="text/css" rel="stylesheet"
href="css/jquery-ui-1.10.2.custom.min.css"/>
<script type="text/javascript">
function showBusyIndicator() {
$('#busy_indicator').show();
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/NotInitedPage.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/NotInitedPage.html?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/NotInitedPage.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/NotInitedPage.html
Wed May 22 17:40:44 2013
@@ -21,10 +21,12 @@
<html xmlns:wicket="http://wicket.apache.org">
<wicket:extend>
<!-- FIXME localized versions of this file need to be created -->
- <b>OpenMeetings - Loading ...</b><br />
- The server is not yet completely initialized. Please try again in a
couple of seconds.<br/>
- If this message persists for several minutes contact your
Sys-Administration.<br/>
- If that message stays forever you should check the logs located in
- <pre>openmeetings_install_dir/log</pre> folder, probably your database
user/pwd/host is wrong!
+ <div class="message">
+ <b>OpenMeetings - Loading ...</b><br />
+ The server is not yet completely initialized. Please try again
in a couple of seconds.<br/>
+ If this message persists for several minutes contact your
Sys-Administration.<br/>
+ If that message stays forever you should check the logs located
in
+ <pre>openmeetings_install_dir/log</pre> folder, probably your
database user/pwd/host is wrong!
+ </div>
</wicket:extend>
</html>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/RegisterDialog.java
Wed May 22 17:40:44 2013
@@ -21,6 +21,7 @@ package org.apache.openmeetings.web.page
import static org.apache.openmeetings.utils.UserHelper.getMinLoginLength;
import static org.apache.openmeetings.utils.UserHelper.getMinPasswdLength;
import static org.apache.openmeetings.web.app.Application.getBean;
+import static
org.apache.wicket.validation.validator.StringValidator.minimumLength;
import java.util.Arrays;
import java.util.List;
@@ -49,7 +50,6 @@ import org.apache.wicket.markup.html.pan
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
-import org.apache.wicket.validation.validator.StringValidator;
import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
@@ -131,9 +131,9 @@ public class RegisterDialog extends Abst
add(new RequiredTextField<String>("firstName", new
PropertyModel<String>(RegisterDialog.this, "firstName")));
add(new RequiredTextField<String>("lastName", new
PropertyModel<String>(RegisterDialog.this, "lastName")));
add(loginField = new RequiredTextField<String>("login",
new PropertyModel<String>(RegisterDialog.this, "login")));
-
loginField.add(StringValidator.minimumLength(getMinLoginLength(cfgDao)));
+
loginField.add(minimumLength(getMinLoginLength(cfgDao)));
add(passwordField = new PasswordTextField("password",
new PropertyModel<String>(RegisterDialog.this, "password")));
-
passwordField.setResetPassword(true).add(StringValidator.minimumLength(getMinPasswdLength(cfgDao)));
+
passwordField.setResetPassword(true).add(minimumLength(getMinPasswdLength(cfgDao)));
add(confirmPassword = new
PasswordTextField("confirmPassword", new
Model<String>()).setResetPassword(true));
add(emailField = new RequiredTextField<String>("email",
new PropertyModel<String>(RegisterDialog.this, "email")));
emailField.add(RfcCompliantEmailAddressValidator.getInstance());
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/auth/SignInPage.html
Wed May 22 17:40:44 2013
@@ -20,7 +20,6 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:head>
- <link media="screen" type="text/css" rel="stylesheet"
href="css/jquery-ui-1.10.2.custom.min.css"/>
<style>
input:not([type='checkbox']):not([type='radio']),
select {
width: 170px;
Copied:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java
(from r1485172,
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongradulationsPanel.java)
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java?p2=openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java&p1=openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongradulationsPanel.java&r1=1485172&r2=1485305&rev=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongradulationsPanel.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/CongratulationsPanel.java
Wed May 22 17:40:44 2013
@@ -22,10 +22,10 @@ import org.apache.openmeetings.web.app.A
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.panel.Panel;
-public class CongradulationsPanel extends Panel {
+public class CongratulationsPanel extends Panel {
private static final long serialVersionUID = 1L;
- public CongradulationsPanel(String id) {
+ public CongratulationsPanel(String id) {
super(id);
add(new Link<Void>("url") {
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard$InstallStep.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard%24InstallStep.html?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard$InstallStep.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard$InstallStep.html
Wed May 22 17:40:44 2013
@@ -20,6 +20,10 @@
-->
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
- Install
+ <p wicket:id="desc">Please click "Finish" button to start
installation!</p>
+ <div wicket:id="container" style="margin: 20px;">
+ <div wicket:id="progress"><!-- div><span
wicket:id="value"></span>%</div--></div>
+ <div wicket:id="status"></div>
+ </div>
</wicket:panel>
</html>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizard.java
Wed May 22 17:40:44 2013
@@ -20,8 +20,7 @@ package org.apache.openmeetings.web.page
import static
org.apache.openmeetings.installation.InstallationConfig.USER_LOGIN_MINIMUM_LENGTH;
import static
org.apache.openmeetings.installation.InstallationConfig.USER_PASSWORD_MINIMUM_LENGTH;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.wicket.validation.validator.RangeValidator.minimum;
+import static
org.apache.wicket.validation.validator.StringValidator.minimumLength;
import java.io.Serializable;
import java.util.ArrayList;
@@ -32,7 +31,10 @@ import java.util.List;
import org.apache.openmeetings.installation.ImportInitvalues;
import org.apache.openmeetings.installation.InstallationConfig;
import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ErrorMessagePanel;
import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import
org.apache.wicket.extensions.validation.validator.RfcCompliantEmailAddressValidator;
@@ -41,6 +43,7 @@ import org.apache.wicket.extensions.wiza
import org.apache.wicket.extensions.wizard.dynamic.DynamicWizardModel;
import org.apache.wicket.extensions.wizard.dynamic.DynamicWizardStep;
import org.apache.wicket.extensions.wizard.dynamic.IDynamicWizardStep;
+import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.ChoiceRenderer;
import org.apache.wicket.markup.html.form.DropDownChoice;
@@ -55,6 +58,9 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
+import org.apache.wicket.util.time.Duration;
+
+import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
//TODO maybe JQ wizard should be used
public class InstallWizard extends Wizard {
@@ -68,7 +74,8 @@ public class InstallWizard extends Wizar
private final IDynamicWizardStep paramsStep2;
private final IDynamicWizardStep paramsStep3;
private final IDynamicWizardStep paramsStep4;
- private final IDynamicWizardStep installStep;
+ private final InstallStep installStep;
+ private Throwable th = null;
//onInit, applyState
public InstallWizard(String id) throws Exception {
@@ -92,7 +99,7 @@ public class InstallWizard extends Wizar
@Override
protected Component newButtonBar(String id) {
- Panel bBar = (Panel)super.newButtonBar(id);
+ final Panel bBar = (Panel)super.newButtonBar(id);
AjaxButton finish = new AjaxButton("finish", new
ResourceModel("org.apache.wicket.extensions.wizard.finish")) {
private static final long serialVersionUID = 1L;
@@ -103,27 +110,31 @@ public class InstallWizard extends Wizar
@Override
protected void onSubmit(AjaxRequestTarget target,
Form<?> form) {
- // TODO Auto-generated method stub
- super.onSubmit(target, form);
+ installStep.startInstallation(target);
+ target.add(bBar.setEnabled(false));
}
};
- return bBar.replace(finish);
+ return bBar.replace(finish).setOutputMarkupId(true);
}
- @Override
- public void onFinish() {
- super.onFinish();
+ private abstract class BaseStep extends DynamicWizardStep {
+ private static final long serialVersionUID = 1L;
+
+ public BaseStep(IDynamicWizardStep prev) {
+ super(prev);
+ //TODO localize
+ setTitleModel(Model.of(cfg.appName + " -
Installation"));
+ setSummaryModel(Model.of(""));
+ }
}
- private final class WelcomeStep extends DynamicWizardStep {
+ private final class WelcomeStep extends BaseStep {
private static final long serialVersionUID = 1L;
public WelcomeStep() {
super(null);
//TODO localize
//TODO add check for DB connection
- setTitleModel(Model.of(cfg.appName + " -
Installation"));
- setSummaryModel(Model.of(""));
add(new Label("app", cfg.appName));
}
@@ -136,16 +147,14 @@ public class InstallWizard extends Wizar
}
}
- private final class ParamsStep1 extends DynamicWizardStep {
+ private final class ParamsStep1 extends BaseStep {
private static final long serialVersionUID = 1L;
public ParamsStep1() throws Exception {
super(welcomeStep);
//TODO localize
- setTitleModel(Model.of(cfg.appName + " -
Installation"));
- setSummaryModel(Model.of(""));
- add(new
RequiredTextField<String>("cfg.username").add(minimum(USER_LOGIN_MINIMUM_LENGTH)));
- add(new
PasswordTextField("cfg.password").add(minimum(USER_PASSWORD_MINIMUM_LENGTH)));
+ add(new
RequiredTextField<String>("cfg.username").add(minimumLength(USER_LOGIN_MINIMUM_LENGTH)));
+ add(new
PasswordTextField("cfg.password").add(minimumLength(USER_PASSWORD_MINIMUM_LENGTH)));
add(new
RequiredTextField<String>("cfg.email").add(RfcCompliantEmailAddressValidator.getInstance()));
add(new TzDropDown("ical_timeZone"));
add(new RequiredTextField<String>("cfg.group"));
@@ -170,15 +179,13 @@ public class InstallWizard extends Wizar
}
}
- private final class ParamsStep2 extends DynamicWizardStep {
+ private final class ParamsStep2 extends BaseStep {
private static final long serialVersionUID = 1L;
public ParamsStep2() throws Exception {
super(paramsStep1);
//TODO localize
//TODO validation
- setTitleModel(Model.of(cfg.appName + " -
Installation"));
- setSummaryModel(Model.of(""));
add(new YesNoDropDown("allowFrontendRegister"));
add(new YesNoDropDown("sendEmailAtRegister"));
add(new YesNoDropDown("sendEmailWithVerficationCode"));
@@ -214,7 +221,7 @@ public class InstallWizard extends Wizar
}
}
- private final class ParamsStep3 extends DynamicWizardStep {
+ private final class ParamsStep3 extends BaseStep {
private static final long serialVersionUID = 1L;
public ParamsStep3() {
@@ -249,7 +256,7 @@ public class InstallWizard extends Wizar
}
}
- private final class ParamsStep4 extends DynamicWizardStep {
+ private final class ParamsStep4 extends BaseStep {
private static final long serialVersionUID = 1L;
public ParamsStep4() {
@@ -281,12 +288,73 @@ public class InstallWizard extends Wizar
}
}
- private final class InstallStep extends DynamicWizardStep {
+ private final class InstallStep extends BaseStep {
private static final long serialVersionUID = 1L;
-
+ private final CongratulationsPanel congrat;
+ private WebMarkupContainer container = new
WebMarkupContainer("container");
+ private AbstractAjaxTimerBehavior timer;
+ private ProgressBar progressBar;
+ private WebMarkupContainer desc = new
WebMarkupContainer("desc");
+ private Label value;
+ private boolean started = false;
+
+ public void startInstallation(AjaxRequestTarget target) {
+ started = true;
+ timer.restart(target);
+ new Thread(new
InstallProcess(Application.get()._getBean(ImportInitvalues.class))
+ , "Openmeetings - Installation").start();
//TODO remove hardcoded
+ //progressBar.setVisible(true);
+ target.add(container);
+ }
+
public InstallStep() {
super(paramsStep4);
+ add(desc.setOutputMarkupId(true));
+ // Timer //
+ container.add(timer = new
AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onTimer(AjaxRequestTarget
target) {
+ if (!started) {
+ timer.stop(target);
+ return;
+ }
+ if (th != null) {
+ timer.stop(target);
+ //TODO change text, localize
+ progressBar.setVisible(false);
+
target.add(container.replace(new ErrorMessagePanel("status", "Installation is
failed", th))
+ , desc.setVisible(false)
+ );
+ } else {
+
progressBar.setModelObject(Application.get()._getBean(ImportInitvalues.class).getProgress());
+ progressBar.respond(target);
+ //TODO uncomment later
target.add(value);
+ //TODO add current step result
as info
+ }
+ }
+ });
+ container.add(progressBar = new ProgressBar("progress",
new Model<Integer>(0)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onComplete(AjaxRequestTarget
target) {
+ timer.stop(target);
+ progressBar.setVisible(false);
+ congrat.setVisible(true);
+ target.add(container,
desc.setVisible(false));
+ }
+ });
+ //TODO uncomment later progressBar.add(value = new
Label("value", progressBar.getModel()));
+ //TODO uncomment later value.setOutputMarkupId(true);
+ //progressBar.setVisible(false);
+
+ container.add(congrat = new
CongratulationsPanel("status"));
+ congrat.setVisible(false);
+
+ add(container.setOutputMarkupId(true));
}
public boolean isLastStep() {
@@ -298,6 +366,23 @@ public class InstallWizard extends Wizar
}
}
+ private class InstallProcess implements Runnable {
+ private ImportInitvalues installer;
+
+ public InstallProcess(ImportInitvalues installer) {
+ this.installer = installer;
+ th = null;
+ }
+
+ public void run() {
+ try {
+ installer.loadAll(cfg, true);
+ } catch (Exception e) {
+ th = e;
+ }
+ }
+ }
+
private static class SelectOption implements Serializable {
private static final long serialVersionUID =
2559982745410615390L;
private static SelectOption NO = new SelectOption("0", "No");
@@ -329,7 +414,7 @@ public class InstallWizard extends Wizar
public TzDropDown(String id) throws Exception {
super(id);
- List<OmTimeZone> tzList =
getBean(ImportInitvalues.class).getTimeZones();
+ List<OmTimeZone> tzList = ImportInitvalues.getTimeZones();
setChoices(tzList);
setChoiceRenderer(new IChoiceRenderer<OmTimeZone>() {
private static final long serialVersionUID = 1L;
@@ -391,7 +476,7 @@ public class InstallWizard extends Wizar
public LangDropDown(String id) throws Exception {
super(id);
LinkedHashMap<Integer, LinkedHashMap<String, Object>>
allLanguagesAll
- =
getBean(ImportInitvalues.class).getLanguageFiles();
+ = ImportInitvalues.getLanguageFiles();
List<SelectOption> list = new ArrayList<SelectOption>();
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.html
Wed May 22 17:40:44 2013
@@ -140,7 +140,7 @@
</wicket:head>
<wicket:extend>
<div>
- <span wicket:id="wizard"></span>
+ <div wicket:id="wizard"></div>
</div>
</wicket:extend>
-</html>
\ No newline at end of file
+</html>
Modified:
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
URL:
http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java?rev=1485305&r1=1485304&r2=1485305&view=diff
==============================================================================
---
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
(original)
+++
openmeetings/trunk/singlewebapp/src/org/apache/openmeetings/web/pages/install/InstallWizardPage.java
Wed May 22 17:40:44 2013
@@ -18,17 +18,12 @@
*/
package org.apache.openmeetings.web.pages.install;
-import static org.apache.openmeetings.OpenmeetingsVariables.webAppRootKey;
-
import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ErrorMessagePanel;
import org.apache.openmeetings.web.pages.BaseNotInitedPage;
import org.apache.wicket.RestartResponseException;
-import org.apache.wicket.markup.html.basic.Label;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
public class InstallWizardPage extends BaseNotInitedPage {
- private static final Logger log =
Red5LoggerFactory.getLogger(InstallWizard.class, webAppRootKey);
private static final long serialVersionUID = -438388395397826138L;
public InstallWizardPage() {
@@ -37,10 +32,11 @@ public class InstallWizardPage extends B
}
try {
add(new InstallWizard("wizard"));
+ } catch (RestartResponseException re) {
+ throw re;
} catch (Exception e) {
- //TODO add correct error handling
- log.error("Error while initing wizard, please check
your installation", e);//FIXME
- add(new Label("wizard", "Error while initing wizard,
please check your installation"));//FIXME
+ //TODO localization
+ add(new ErrorMessagePanel("wizard", "Error while
running installer, please check your installation", e));
}
}
}