Java tutorial
/* * 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.openmeetings.app.installation; import java.io.File; import java.util.Arrays; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.openmeetings.app.OpenmeetingsVariables; import org.openmeetings.app.data.basic.Configurationmanagement; import org.openmeetings.app.data.basic.ErrorManagement; import org.openmeetings.app.data.basic.FieldLanguageDaoImpl; import org.openmeetings.app.data.basic.Fieldmanagment; import org.openmeetings.app.data.basic.Navimanagement; import org.openmeetings.app.data.basic.dao.OmTimeZoneDaoImpl; import org.openmeetings.app.data.calendar.daos.AppointmentCategoryDaoImpl; import org.openmeetings.app.data.calendar.daos.AppointmentReminderTypDaoImpl; import org.openmeetings.app.data.conference.PollManagement; import org.openmeetings.app.data.conference.Roommanagement; import org.openmeetings.app.data.user.Organisationmanagement; import org.openmeetings.app.data.user.Salutationmanagement; import org.openmeetings.app.data.user.Statemanagement; import org.openmeetings.app.data.user.Usermanagement; import org.openmeetings.app.data.user.dao.UsersDaoImpl; import org.openmeetings.app.persistence.beans.basic.OmTimeZone; import org.openmeetings.app.persistence.beans.lang.Fieldvalues; import org.openmeetings.utils.ImportHelper; import org.red5.logging.Red5LoggerFactory; 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); public static final String languageFolderName = "languages/"; private static final String nameOfLanguageFile = "languages.xml"; private static final String nameOfCountriesFile = "countries.xml"; private static final String nameOfTimeZoneFile = "timezones.xml"; private static final String nameOfErrorFile = "errorvalues.xml"; @Autowired private Configurationmanagement cfgManagement; @Autowired private Usermanagement userManagement; @Autowired private UsersDaoImpl usersDao; @Autowired private Fieldmanagment fieldmanagment; @Autowired private FieldLanguageDaoImpl fieldLanguageDaoImpl; @Autowired private Statemanagement statemanagement; @Autowired private OmTimeZoneDaoImpl omTimeZoneDaoImpl; @Autowired private Navimanagement navimanagement; @Autowired private ErrorManagement errorManagement; @Autowired private Salutationmanagement salutationmanagement; @Autowired private Organisationmanagement organisationmanagement; @Autowired private Roommanagement roommanagement; @Autowired private AppointmentCategoryDaoImpl appointmentCategoryDaoImpl; @Autowired private AppointmentReminderTypDaoImpl appointmentReminderTypDaoImpl; @Autowired private PollManagement pollManagement; public void loadMainMenu() { userManagement.addUserLevel("User", 1); userManagement.addUserLevel("Moderator", 2); userManagement.addUserLevel("Admin", 3); userManagement.addUserLevel("Web-Service (only access via SOAP)", 4); log.debug("UserLevels ADDED"); /* * ######################## Dashboard Menu Points */ navimanagement.addGlobalStructure("home", 1, 124, false, true, 1, "home", "false", 582L); navimanagement.addMainStructure("dashboardModuleStartScreen", 1, 290, true, false, 1, "Dashboard Module", 1, "false", 1450L); navimanagement.addMainStructure("dashboardModuleCalendar", 2, 291, true, false, 1, "Module Calendar", 1, "false", 1451L); /* * ######################## Recording Menu Points - disabled by default */ navimanagement.addGlobalStructure("record", 2, 395, false, true, 1, "record", "false", 583L); navimanagement.addMainStructure("recordModule", 1, 395, true, false, 1, "Module Recording Player", 2, "false", 1452L); /* * String action, int naviorder, long fieldvalues_id, boolean isleaf, * boolean isopen, long level_id, String name, long global_id */ /* * ######################## Conference Menu Points */ navimanagement.addGlobalStructure("meetings", 3, 792, false, true, 1, "List of Conference Rooms Global Navi", "false", 793L); navimanagement.addMainStructure("conferenceModuleRoomList", 1, 792, true, false, 1, "List of Conference Rooms Main Navi", 3, "false", 1453L); /* * ######################## Event Menu Points */ navimanagement.addGlobalStructure("events", 4, 3, false, true, 1, "List of Event Rooms Global Navi", "true", 585L); navimanagement.addMainStructure("eventModuleRoomList", 1, 3, true, false, 1, "List of Event Rooms Main Navi", 4, "false", null); /* * ######################## Moderation Menu Points - disabled by default */ navimanagement.addGlobalStructure("moderate", 5, 649L, false, true, 2, "Moderation Menu", "true", 660L); navimanagement.addMainStructure("moderatorModuleUser", 1, 650, true, false, 1, "Moderate Users", 5, "false", null); navimanagement.addMainStructure("moderatorModuleRoom", 1, 651, true, false, 1, "Moderate Rooms", 5, "false", null); /* * ######################## Administration Menu Points */ navimanagement.addGlobalStructure("admin", 6, 6, false, true, 3, "Administration Menu", "false", 586L); navimanagement.addMainStructure("adminModuleUser", 14, 125, true, false, 2, "Administration of Users", 6, "false", 1454L); navimanagement.addMainStructure("adminModuleConnections", 15, 597, true, false, 3, "Aministration of Connections", 6, "false", 1455L); navimanagement.addMainStructure("adminModuleOrg", 16, 127, true, false, 3, "Administration of Organizations", 6, "false", 1456L); navimanagement.addMainStructure("adminModuleRoom", 17, 186, true, false, 3, "Administration of Rooms", 6, "false", 1457L); navimanagement.addMainStructure("adminModuleConfiguration", 18, 263, true, false, 3, "Administration of Configuration", 6, "false", 1458L); navimanagement.addMainStructure("adminModuleLanguages", 19, 348, true, false, 3, "Administration of Languages", 6, "false", 1459L); navimanagement.addMainStructure("adminModuleLDAP", 20, 1103, true, false, 3, "Administration of LDAP Configs", 6, "false", 1460L); navimanagement.addMainStructure("adminModuleBackup", 21, 367, true, false, 3, "Administration of Backups", 6, "false", 1461L); log.debug("MainMenu ADDED"); errorManagement.addErrorType(new Long(1), new Long(322)); errorManagement.addErrorType(new Long(2), new Long(323)); log.debug("Error types ADDED"); } public void loadErrorMappingsFromXML(String filePath) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath, ImportInitvalues.nameOfErrorFile)); Element root = document.getRootElement(); for (@SuppressWarnings("unchecked") Iterator<Element> it = root.elementIterator("row"); it.hasNext();) { Element row = it.next(); Long errorvalues_id = null; Long fieldvalues_id = null; Long errortype_id = null; for (@SuppressWarnings("unchecked") Iterator<Element> itSub = row.elementIterator("field"); itSub.hasNext();) { Element field = itSub.next(); String name = field.attributeValue("name"); String text = field.getText(); // System.out.println("NAME | TEXT "+name+" | "+text); if (name.equals("errorvalues_id")) errorvalues_id = Long.valueOf(text).longValue(); if (name.equals("fieldvalues_id")) fieldvalues_id = Long.valueOf(text).longValue(); if (name.equals("errortype_id")) errortype_id = Long.valueOf(text).longValue(); } errorManagement.addErrorValues(errorvalues_id, errortype_id, fieldvalues_id); } log.debug("ErrorMappings ADDED"); } public void loadSalutations() { salutationmanagement.addUserSalutation("Mr", 261); salutationmanagement.addUserSalutation("Ms", 262); salutationmanagement.addUserSalutation("Mrs", 841); salutationmanagement.addUserSalutation("Dr", 842); salutationmanagement.addUserSalutation("Prof", 1464); log.debug("Salutations ADDED"); } public void loadConfiguration(InstallationConfig cfg) { cfgManagement.addConfByKey(3, "crypt_ClassName", cfg.cryptClassName, null, "This Class is used for Authentification-Crypting. " + "Be carefull what you do here! If you change it while " + "running previous Pass of users will not be workign anymore! " + "for more Information see http://code.google.com/p/openmeetings/wiki/CustomCryptMechanism"); cfgManagement.addConfByKey(3, "screen_viewer", cfg.screenViewer, null, "ScreenViewer Type(0==standard, 1== jrdesktop)"); cfgManagement.addConfByKey(3, "allow_frontend_register", cfg.allowFrontendRegister, null, ""); cfgManagement.addConfByKey(3, "default_group_id", "1", null, ""); // this domain_id is the Organisation of users who register through the // frontend cfgManagement.addConfByKey(3, "default_domain_id", "1", null, ""); // "smtp.xmlcrm.org" cfgManagement.addConfByKey(3, "smtp_server", cfg.smtpServer, null, "this is the smtp server to send messages"); // 25 cfgManagement.addConfByKey(3, "smtp_port", cfg.smtpPort, null, "this is the smtp server port normally 25"); // "openmeetings@xmlcrm.org" cfgManagement.addConfByKey(3, "system_email_addr", cfg.mailReferer, null, "all send EMails by the system will have this address"); // "openmeetings@xmlcrm.org" cfgManagement.addConfByKey(3, "email_username", cfg.mailAuthName, null, "System auth email username"); // cfgManagement.addConfByKey(3, "email_userpass", cfg.mailAuthPass, null, "System auth email password"); cfgManagement.addConfByKey(3, "mail.smtp.starttls.enable", cfg.mailUseTls, null, "Enable TLS 1=true, 0=false"); cfgManagement.addConfByKey(3, "application.name", Configurationmanagement.DEFAULT_APP_NAME, null, "Name of the Browser Title window"); // "1" == "EN" cfgManagement.addConfByKey(3, "default_lang_id", cfg.defaultLangId, null, "Default System Language ID see language.xml"); cfgManagement.addConfByKey(3, "swftools_zoom", cfg.swfZoom, null, "dpi for conversion of PDF to SWF"); cfgManagement.addConfByKey(3, "swftools_jpegquality", cfg.swfJpegQuality, null, "compression quality for conversion of PDF to SWF"); cfgManagement.addConfByKey(3, "swftools_path", cfg.swfPath, null, "Path To SWF-Tools"); cfgManagement.addConfByKey(3, "imagemagick_path", cfg.imageMagicPath, null, "Path to ImageMagick tools"); cfgManagement.addConfByKey(3, "sox_path", cfg.soxPath, null, "Path To SoX-Tools"); cfgManagement.addConfByKey(3, "ffmpeg_path", cfg.ffmpegPath, null, "Path To FFMPEG"); cfgManagement.addConfByKey(3, "office.path", cfg.officePath, null, "The path to OpenOffice/LibreOffice (optional) please set this to the real path in case jodconverter is unable to find OpenOffice/LibreOffice installation automatically"); cfgManagement.addConfByKey(3, "jod.path", cfg.jodPath, null, "The path to JOD library (http://code.google.com/p/jodconverter), configure the path to point to the lib directory of JOD that contains also the jodconverter-core-version.jar"); cfgManagement.addConfByKey(3, "rss_feed1", cfg.urlFeed, null, "Feed URL"); cfgManagement.addConfByKey(3, "rss_feed2", cfg.urlFeed2, null, "Feed URL 2"); cfgManagement.addConfByKey(3, "sendEmailAtRegister", cfg.sendEmailAtRegister, null, "User get a EMail with their Account data. Values: 0(No) or 1(Yes)"); cfgManagement.addConfByKey(3, "sendEmailWithVerficationCode", cfg.sendEmailWithVerficationCode, null, "User must activate their account by clicking on the " + "activation-link in the registering Email. Values: 0(No) or 1(Yes) " + "It makes no sense to make this(sendEmailWithVerficationCode) 1(Yes) while " + "sendEmailAtRegister is 0(No) cause you need" + "to send a EMail."); cfgManagement.addConfByKey(3, "default_export_font", cfg.defaultExportFont, null, "The Name of the Font used for exporting/render Images from Whiteboard" + "The Font has to exist on the Server which runs Red5"); cfgManagement.addConfByKey(3, "default.rpc.userid", "" + 1, null, "The User-Id of the Control User in OpenMeetings"); // *************************************** // *************************************** // red5SIP Integration Coniguration Values // *************************************** cfgManagement.addConfByKey(3, "red5sip.enable", cfg.red5SipEnable, null, "Enable to enable the red5SIP integration "); cfgManagement.addConfByKey(3, "red5sip.room_prefix", cfg.red5SipRoomPrefix, null, "Enable to enable the red5SIP integration "); cfgManagement.addConfByKey(3, "red5sip.exten_context", cfg.red5SipExtenContext, null, "Enable to enable the red5SIP integration "); // *************************************** // *************************************** // SIP Applet Configuration Values // *************************************** cfgManagement.addConfByKey(3, "sip.enable", cfg.sipEnable, null, "Enable to load the SIP Applet in the Client and " + "call the SIP Applet whenever you enter a Room"); cfgManagement.addConfByKey(3, "sip.realm", cfg.sipRealm, null, "So called *Domain of the SIP Provider*"); cfgManagement.addConfByKey(3, "sip.port", cfg.sipPort, null, "SIP Port"); cfgManagement.addConfByKey(3, "sip.proxyname", cfg.sipProxyName, null, "SIP Proxy name (this is the outbound proxy)"); cfgManagement.addConfByKey(3, "sip.tunnel", cfg.sipTunnel, null, "SIP Tunnel IP + Port, format domain:port, for example 10.0.0.0:443"); cfgManagement.addConfByKey(3, "sip.codebase", cfg.sipCodebase, null, "The Base-URL to load the Ringtone from"); cfgManagement.addConfByKey(3, "sip.forcetunnel", cfg.sipForceTunnel, null, "Force usage of the tunnel"); // *************************************** // *************************************** // OpenXG Configuration Values // *************************************** cfgManagement.addConfByKey(3, "sip.openxg.enable", cfg.sipOpenxgEnable, null, "Enable the OpenXG XML-RPC Gateway through the Wrapper URL"); cfgManagement.addConfByKey(3, "openxg.wrapper.url", cfg.openxgWrapperUrl, null, "openxg_wrapper_url, null, OpenXG XML-RPC Wrapper URL, the Wrapper can only " + "be located on 127.0.01 by default, " + "for example http://127.0.0.1:5080/rpc_client/rpc_gateway_wrapper.php"); cfgManagement.addConfByKey(3, "openxg.client.id", cfg.openxgClientId, null, "OpenXG XML-RPC Client ID"); cfgManagement.addConfByKey(3, "openxg.client.secret", cfg.openxgClientSecret, null, "OpenXG XML-RPC Client Secret"); cfgManagement.addConfByKey(3, "openxg.client.domain", cfg.openxgClientDomain, null, "OpenXG Domain"); cfgManagement.addConfByKey(3, "openxg.community.code", cfg.openxgCommunityCode, null, "OpenXG Community Code"); cfgManagement.addConfByKey(3, "openxg.language.code", cfg.openxgLanguageCode, null, "OpenXG Language Code"); cfgManagement.addConfByKey(3, "openxg.adminid", cfg.openxgAdminId, null, "OpenXG Admin ID"); // *************************************** // *************************************** // Phone Range Configuration Values // *************************************** cfgManagement.addConfByKey(3, "sip.language.phonecode", cfg.sipLanguagePhoneCode, null, "For example +358 for Finland"); cfgManagement.addConfByKey(3, "sip.phonerange.start", cfg.sipPhoneRangeStart, null, "The first number in the Range of Phone Numbers in national format"); cfgManagement.addConfByKey(3, "sip.phonerange", cfg.sipPhoneRange, null, "Amount of numbers in the Phone Range available"); cfgManagement.addConfByKey(3, "sip.phonerange.currentindex", "" + 0, null, "Number of used Phone Numbers in the sip.phonerange"); cfgManagement.addConfByKey(3, "sip.phonerange.conference.currentindex", "" + 0, null, "Number of used Phone Numbers in the sip.phonerange for the conferences"); // *************************************** // *************************************** // Timezone settings // *************************************** cfgManagement.addConfByKey(3, "default.timezone", cfg.ical_timeZone, null, "This is the default timezone if nothing is specified"); // *************************************** // *************************************** // additional settings // *************************************** cfgManagement.addConfByKey(3, "show.facebook.login", "" + 0, null, "Show Facebook Login"); cfgManagement.addConfByKey(3, "default.quality.screensharing", "1", null, "Default selection in ScreenSharing Quality:\n 0 - bigger frame rate, no resize\n 1 - no resize\n 2 - size == 1/2 of selected area\n 3 - size == 3/8 of selected area"); cfgManagement.addConfByKey(3, "default.dashboard.tab", "0", null, "Default selection in Dashboard tabs as tab-index-id"); cfgManagement.addConfByKey(3, "dashboard.show.myrooms", "1", null, "Show My Rooms Tab"); cfgManagement.addConfByKey(3, "dashboard.show.chat", "1", null, "Show Chat Tab"); cfgManagement.addConfByKey(3, "dashboard.show.rssfeed", "0", null, "Show RSS Tab"); cfgManagement.addConfByKey(3, "show.whiteboard.draw.status", "0", null, "Display name of the user who draw the current object (User Name auto-disapper after 3 seconds."); cfgManagement.addConfByKey(3, "max_upload_size", new Integer(ImportHelper.DEFAULT_MAX_UPLOAD_SIZE).toString(), null, "Maximum size of upload file (bytes)"); // defaults to 1GB cfgManagement.addConfByKey(3, "number.minutes.reminder.send", "15", null, "The number of minutes before reminder emails are send. Set to 0 to disable reminder emails"); cfgManagement.addConfByKey(3, "user.login.minimum.length", "" + InstallationConfig.USER_LOGIN_MINIMUM_LENGTH, null, "Number of chars needed in a user login"); cfgManagement.addConfByKey(3, "user.pass.minimum.length", "" + InstallationConfig.USER_PASSWORD_MINIMUM_LENGTH, null, "Number of chars needed in a user login"); cfgManagement.addConfByKey(3, "calendar.conference.rooms.default.size", "50", null, "Default number of participants conference room created via calendar"); cfgManagement.addConfByKey(3, "use.old.style.ffmpeg.map.option", "0", null, "specify a 1 if you would like to use old FFMPEG -map option with 0.0 instead of 0:0"); // give exclusive audio key code cfgManagement.addConfByKey(3, "exclusive.audio.keycode", "123", null, "A hot key code for the 'give exclusive audio' functionality. Keycode 123 is F12"); // system-wide ldap params cfgManagement.addConfByKey(3, "ldap_default_id", "0", null, "Ldap domain selected by default in the login screen"); // set inviter's email address as ReplyTo in email invitations cfgManagement.addConfByKey(3, "inviter.email.as.replyto", cfg.replyToOrganizer, null, "Set inviter's email address as ReplyTo in email invitations (1 == set, 0 == NOT set)"); log.debug("Configuration ADDED"); } public void loadRoomTypes() { long conference_Id = roommanagement.addRoomType("conference (1-25 users)", false); log.debug("conference_Id: " + conference_Id); //Audience room type is not in use anymore roommanagement.addRoomType("audience (1-50 users)", true); long restricted_Id = roommanagement.addRoomType("restricted (1-150 users)", false); log.debug("restricted_Id: " + restricted_Id); long interview_Id = roommanagement.addRoomType("interview (1:1 meeting with recording)", false); log.debug("interview_Id: " + interview_Id); //Custom room type is not in use anymore roommanagement.addRoomType("custom (extension point for your plugin)", true); log.debug("RoomTypes ADDED"); } public void loadDefaultRooms(boolean createRooms) { if (createRooms) { //hardcoded IDs (they are not intended to be changed) long conference_Id = 1; long restricted_Id = 3; long interview_Id = 4; roommanagement.addRoom(3, "public Interview Room", interview_Id, "", new Long(16), true, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard false // showMicrophoneStatus ); roommanagement.addRoom(3, "public Conference Room", conference_Id, "", new Long(32), true, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard false // showMicrophoneStatus ); roommanagement.addRoom(3, "public Video Only Room", conference_Id, "", new Long(32), true, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard false // showMicrophoneStatus ); roommanagement.addRoom(3, "public Video And Whiteboard Room", conference_Id, "", new Long(32), true, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard false // showMicrophoneStatus ); roommanagement.addRoom(3, "public Restricted Room", restricted_Id, "", new Long(100), true, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard false // showMicrophoneStatus ); roommanagement.addRoom(3, "restricted room with micro option set", restricted_Id, "", new Long(100), true, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard true // showMicrophoneStatus ); roommanagement.addRoom(3, "conference room with micro option set", conference_Id, "", new Long(32), true, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard true // showMicrophoneStatus ); long room2 = roommanagement.addRoom(3, "private Conference Room", conference_Id, "", new Long(32), false, null, false, false, null, false, null, true, false, false, "", "", "", null, null, null, false, // hideTopBar false, // hideChat false, // hideActivitiesAndActions false, // hideFilesExplorer false, // hideActionsMenu false, // hideScreenSharing false, // hideWhiteboard false // showMicrophoneStatus ); roommanagement.addRoomToOrganisation(3, room2, 1); } } 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 = organisationmanagement.addOrganisation(defaultOrganisationName, 1); // BaseUrl as param is empty as we do not send an EMAIL here Long user_id = userManagement.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); } } /** * import all language Names from the xml file * * @param filePath * @throws Exception */ private void loadCountriesFiles(String filePath) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath, ImportInitvalues.nameOfCountriesFile)); Element root = document.getRootElement(); for (@SuppressWarnings("rawtypes") Iterator it = root.elementIterator("country"); it.hasNext();) { Element item = (Element) it.next(); statemanagement.addState(item.attributeValue("name"), item.attributeValue("short"), Integer.parseInt(item.attributeValue("code"))); } log.debug("Countries ADDED"); } private void loadTimeZoneFiles(String filePath) throws Exception { SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath, ImportInitvalues.nameOfTimeZoneFile)); Element root = document.getRootElement(); for (@SuppressWarnings("rawtypes") Iterator it = root.elementIterator("timezone"); it.hasNext();) { Element item = (Element) it.next(); String timeZoneName = item.attributeValue("name"); String timeZoneLabel = item.attributeValue("label"); String iCal = item.attributeValue("iCal"); Integer orderId = Integer.valueOf(item.attributeValue("orderId")); omTimeZoneDaoImpl.addOmTimeZone(timeZoneName, timeZoneLabel, iCal, orderId); } log.debug("TimeZones ADDED"); } public List<OmTimeZone> getTimeZones(String filePath) throws Exception { log.debug(":: getTimeZones ::"); List<OmTimeZone> omTimeZones = new LinkedList<OmTimeZone>(); SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath, ImportInitvalues.nameOfTimeZoneFile)); Element root = document.getRootElement(); for (@SuppressWarnings("rawtypes") Iterator it = root.elementIterator("timezone"); it.hasNext();) { Element item = (Element) it.next(); String timeZoneName = item.attributeValue("name"); String timeZoneLabel = item.attributeValue("label"); Integer orderId = Integer.valueOf(item.attributeValue("orderId")); String iCal = item.attributeValue("iCal"); OmTimeZone omTimeZone = new OmTimeZone(); omTimeZone.setIcal(iCal); omTimeZone.setJname(timeZoneName); omTimeZone.setLabel(timeZoneLabel); omTimeZone.setOrderId(orderId); omTimeZones.add(omTimeZone); } return omTimeZones; } /** * load all availible languages File names and language name's from the * config file * * @param filePath * @return * @throws Exception */ public LinkedHashMap<Integer, LinkedHashMap<String, Object>> getLanguageFiles(String filePath) throws Exception { LinkedHashMap<Integer, LinkedHashMap<String, Object>> languages = new LinkedHashMap<Integer, LinkedHashMap<String, Object>>(); SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath, ImportInitvalues.nameOfLanguageFile)); Element root = document.getRootElement(); for (@SuppressWarnings("unchecked") Iterator<Element> it = root.elementIterator("lang"); it.hasNext();) { Element item = it.next(); String country = item.getText(); Integer id = Integer.valueOf(item.attribute("id").getValue()).intValue(); String rtl = item.attribute("rightToLeft").getValue(); String code = item.attribute("code").getValue(); LinkedHashMap<String, Object> lang = new LinkedHashMap<String, Object>(); lang.put("id", id); lang.put("name", country); lang.put("rtl", rtl); lang.put("code", code); // log.error("getLanguageFiles "+country); languages.put(id, lang); } log.debug("Languages ADDED "); return languages; } /** * @author o.becherer initial fillment of Appointmentcategories */ // ------------------------------------------------------------------------------ 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; } } // ------------------------------------------------------------------------------ /** * @author o.becherer initial fillment of AppointMentReminderTypes */ // ------------------------------------------------------------------------------ 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; } } // ------------------------------------------------------------------------------ /** * Loading initial Language from xml Files into database */ // ------------------------------------------------------------------------------ public void loadInitLanguages(String filePath) throws Exception { loadCountriesFiles(filePath); loadTimeZoneFiles(filePath); LinkedHashMap<Integer, LinkedHashMap<String, Object>> listlanguages = this.getLanguageFiles(filePath); boolean langFieldIdIsInited = false; /** Read all languages files */ for (Iterator<Integer> itLang = listlanguages.keySet().iterator(); itLang.hasNext();) { Integer langId = itLang.next(); LinkedHashMap<String, Object> lang = listlanguages.get(langId); log.debug("loadInitLanguages lang: " + lang); String langName = (String) lang.get("name"); String rtl = (String) lang.get("rtl"); String code = (String) lang.get("code"); log.debug("loadInitLanguages rtl from xml: " + rtl); Boolean langRtl = false; if (rtl != null && rtl.equals("true")) langRtl = true; Long languages_id = fieldLanguageDaoImpl.addLanguage(langName, langRtl, code); SAXReader reader = new SAXReader(); Document document = reader.read(new File(filePath, langName + ".xml")); Element root = document.getRootElement(); for (@SuppressWarnings("rawtypes") Iterator it = root.elementIterator("string"); it.hasNext();) { Element item = (Element) it.next(); // log.error(item.getName()); Long id = Long.valueOf(item.attributeValue("id")).longValue(); String name = item.attributeValue("name"); String value = ""; for (@SuppressWarnings("rawtypes") Iterator t2 = item.elementIterator("value"); t2.hasNext();) { Element val = (Element) t2.next(); value = val.getText(); } // log.error("result: "+langFieldIdIsInited+" "+id+" "+name+" "+value); Fieldvalues fv = null; // Only do that for the first field-set if (!langFieldIdIsInited) { fv = fieldmanagment.addFieldById(name, id); } else { fv = fieldmanagment.getFieldvaluesById(id); } fieldmanagment.addFieldValueByFieldAndLanguage(fv, languages_id, value); } log.debug("Lang ADDED: " + lang); if (!langFieldIdIsInited) langFieldIdIsInited = true; } } // ------------------------------------------------------------------------------ /** * Loading initial Language from xml Files into database */ // ------------------------------------------------------------------------------ public void loadPollTypes() { pollManagement.addPollType(26L, false); pollManagement.addPollType(27L, true); } // ------------------------------------------------------------------------------ public void loadSystem(String filePath, InstallationConfig cfg, boolean force) throws Exception { //FIXME dummy check if installation was performed before if (!force && usersDao.getAllUsers().size() > 0) { log.debug("System contains users, no need to install data one more time."); return; } loadMainMenu(); loadErrorMappingsFromXML(filePath); loadInitLanguages(filePath); loadSalutations(); // AppointMent Categories loadInitAppointmentCategories(); // Appointment Reminder types loadInitAppointmentReminderTypes(); // Appointment poll types loadPollTypes(); loadRoomTypes(); loadConfiguration(cfg); } public void loadAll(String filePath, InstallationConfig cfg, String username, String userpass, String useremail, String groupame, String timeZone, boolean force) throws Exception { //FIXME dummy check if installation was performed before if (!force && usersDao.getAllUsers().size() > 0) { log.debug("System contains users, no need to install data one more time."); return; } loadSystem(filePath, cfg, force); loadInitUserAndOrganisation(username, userpass, useremail, groupame, timeZone, cfg.defaultLangId); loadDefaultRooms("1".equals(cfg.createDefaultRooms)); } }