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.servlet.outputhandler; import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.util.LinkedHashMap; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.velocity.Template; import org.apache.velocity.context.Context; import org.apache.velocity.tools.view.VelocityViewServlet; import org.openmeetings.app.OpenmeetingsVariables; import org.openmeetings.app.data.basic.Configurationmanagement; import org.openmeetings.app.documents.InstallationDocumentHandler; import org.openmeetings.app.installation.ImportInitvalues; import org.openmeetings.app.installation.InstallationConfig; import org.openmeetings.app.persistence.beans.basic.OmTimeZone; import org.openmeetings.app.remote.red5.ScopeApplicationAdapter; import org.openmeetings.utils.ImportHelper; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class Install extends VelocityViewServlet { private static final long serialVersionUID = 3684381243236013771L; private Configurationmanagement getConfigurationmanagement() { try { if (!ScopeApplicationAdapter.initComplete) { return null; } ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext()); return (Configurationmanagement) context.getBean("cfgManagement"); } catch (Exception err) { log.error("[getConfigurationmanagement]", err); } return null; } private ImportInitvalues getImportInitvalues() { try { if (!ScopeApplicationAdapter.initComplete) { return null; } ApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(getServletContext()); return (ImportInitvalues) context.getBean("importInitvalues"); } catch (Exception err) { log.error("[getImportInitvalues]", err); } return null; } private static final Logger log = Red5LoggerFactory.getLogger(Install.class, OpenmeetingsVariables.webAppRootKey); private Template getStep2Template(HttpServletRequest httpServletRequest, Context ctx, String lang) throws Exception { String header = httpServletRequest.getHeader("Accept-Language"); String[] headerList = header != null ? header.split(",") : new String[0]; String headCode = headerList.length > 0 ? headerList[0] : "en"; String filePath = getServletContext().getRealPath("/") + ImportInitvalues.languageFolderName; LinkedHashMap<Integer, LinkedHashMap<String, Object>> allLanguagesAll = getImportInitvalues() .getLanguageFiles(filePath); LinkedHashMap<Integer, String> allLanguages = new LinkedHashMap<Integer, String>(); //first iteration for preferred language Integer prefKey = -1; String prefName = null; for (Integer key : allLanguagesAll.keySet()) { String langName = (String) allLanguagesAll.get(key).get("name"); String langCode = (String) allLanguagesAll.get(key).get("code"); if (langCode != null) { if (headCode.equals(langCode)) { prefKey = key; prefName = langName; break; } else if (headCode.startsWith(langCode)) { prefKey = key; prefName = langName; } } } allLanguages.put(prefKey, prefName); for (Integer key : allLanguagesAll.keySet()) { String langName = (String) allLanguagesAll.get(key).get("name"); if (key != prefKey) { allLanguages.put(key, langName); } } LinkedHashMap<String, String> allFonts = new LinkedHashMap<String, String>(); allFonts.put("TimesNewRoman", "TimesNewRoman"); allFonts.put("Verdana", "Verdana"); allFonts.put("Arial", "Arial"); List<OmTimeZone> omTimeZoneList = getImportInitvalues().getTimeZones(filePath); Template tpl = super.getTemplate("install_step1_" + lang + ".vm"); ctx.put("allLanguages", allLanguages); ctx.put("allFonts", allFonts); ctx.put("allTimeZones", ImportHelper.getAllTimeZones(omTimeZoneList)); StringWriter writer = new StringWriter(); tpl.merge(ctx, writer); return tpl; } /* * (non-Javadoc) * * @see * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest * , javax.servlet.http.HttpServletResponse) */ @Override public Template handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Context ctx) { try { ctx.put("APP_ROOT", OpenmeetingsVariables.webAppRootKey); if (getImportInitvalues() == null || getConfigurationmanagement() == null) { return getVelocityView().getVelocityEngine().getTemplate("booting_install.vm"); } ctx.put("APP_NAME", getConfigurationmanagement().getAppName()); String command = httpServletRequest.getParameter("command"); String lang = httpServletRequest.getParameter("lang"); if (lang == null) lang = "EN"; String working_dir = getServletContext().getRealPath("/") + ScopeApplicationAdapter.configDirName + File.separatorChar; File installerFile = new File(working_dir, InstallationDocumentHandler.installFileName); if (command == null || !installerFile.exists()) { log.debug("command equals null"); if (!installerFile.exists()) { File installerdir = new File(working_dir); log.debug("bb " + installerFile); boolean b = installerdir.canWrite(); if (!b) { // File could not be created so throw an error ctx.put("error", "Could not Create File, Permission set? "); ctx.put("path", working_dir); return getVelocityView().getVelocityEngine().getTemplate("install_error_" + lang + ".vm"); } else { InstallationDocumentHandler.getInstance() .createDocument(working_dir + InstallationDocumentHandler.installFileName, 0); // File has been created so follow first step of // Installation return getVelocityView().getVelocityEngine().getTemplate("install_welcome_" + lang + ".vm"); } } else { int i = InstallationDocumentHandler.getInstance().getCurrentStepNumber(working_dir); if (i == 0) { return getStep2Template(httpServletRequest, ctx, lang); } else { return getVelocityView().getVelocityEngine().getTemplate("install_step2_" + lang + ".vm"); } } } else if (command.equals("step1")) { int i = InstallationDocumentHandler.getInstance().getCurrentStepNumber(working_dir); if (i == 0) { return getStep2Template(httpServletRequest, ctx, lang); } else { ctx.put("error", "This Step of the installation has already been done. continue with step 2 <A HREF='?command=step2'>continue with step 2</A>"); return getVelocityView().getVelocityEngine().getTemplate("install_exception_" + lang + ".vm"); } } else if (command.equals("step2")) { int i = InstallationDocumentHandler.getInstance().getCurrentStepNumber(working_dir); if (i == 0) { log.debug("do init installation"); String username = httpServletRequest.getParameter("username"); String userpass = httpServletRequest.getParameter("userpass"); String useremail = httpServletRequest.getParameter("useremail"); String orgname = httpServletRequest.getParameter("orgname"); InstallationConfig cfg = new InstallationConfig(); cfg.allowFrontendRegister = httpServletRequest.getParameter("configdefault"); cfg.mailReferer = httpServletRequest.getParameter("configreferer"); cfg.smtpServer = httpServletRequest.getParameter("configsmtp"); cfg.smtpPort = httpServletRequest.getParameter("configsmtpport"); cfg.mailAuthName = httpServletRequest.getParameter("configmailuser"); cfg.mailAuthPass = httpServletRequest.getParameter("configmailpass"); cfg.mailUseTls = httpServletRequest.getParameter("mailusetls"); cfg.replyToOrganizer = httpServletRequest.getParameter("replyToOrganizer"); cfg.defaultLangId = httpServletRequest.getParameter("configdefaultLang"); cfg.swfZoom = httpServletRequest.getParameter("swftools_zoom"); cfg.swfJpegQuality = httpServletRequest.getParameter("swftools_jpegquality"); cfg.swfPath = httpServletRequest.getParameter("swftools_path"); cfg.imageMagicPath = httpServletRequest.getParameter("imagemagick_path"); cfg.sendEmailAtRegister = httpServletRequest.getParameter("sendEmailAtRegister"); cfg.sendEmailWithVerficationCode = httpServletRequest .getParameter("sendEmailWithVerficationCode"); cfg.createDefaultRooms = httpServletRequest.getParameter("createDefaultRooms"); cfg.defaultExportFont = httpServletRequest.getParameter("default_export_font"); cfg.cryptClassName = httpServletRequest.getParameter("crypt_ClassName"); cfg.ffmpegPath = httpServletRequest.getParameter("ffmpeg_path"); cfg.soxPath = httpServletRequest.getParameter("sox_path"); cfg.screenViewer = httpServletRequest.getParameter("screen_viewer"); // red5sip integration config cfg.red5SipEnable = httpServletRequest.getParameter("red5sip_enable"); cfg.red5SipRoomPrefix = httpServletRequest.getParameter("red5sip_room_prefix"); cfg.red5SipExtenContext = httpServletRequest.getParameter("red5sip_exten_context"); // SIP Applet Configuration cfg.sipEnable = httpServletRequest.getParameter("sip_enable"); cfg.sipRealm = httpServletRequest.getParameter("sip_realm"); cfg.sipPort = httpServletRequest.getParameter("sip_port"); cfg.sipProxyName = httpServletRequest.getParameter("sip_proxyname"); cfg.sipTunnel = httpServletRequest.getParameter("sip_tunnel"); cfg.sipCodebase = httpServletRequest.getParameter("sip_codebase"); cfg.sipForceTunnel = httpServletRequest.getParameter("sip_forcetunnel"); // OpenXG / OpenSIPg Configuration cfg.sipOpenxgEnable = httpServletRequest.getParameter("sip_openxg_enable"); cfg.openxgWrapperUrl = httpServletRequest.getParameter("openxg_wrapper_url"); cfg.openxgClientId = httpServletRequest.getParameter("openxg_client_id"); cfg.openxgClientSecret = httpServletRequest.getParameter("openxg_client_secret"); cfg.openxgClientDomain = httpServletRequest.getParameter("openxg_client_domain"); cfg.openxgCommunityCode = httpServletRequest.getParameter("openxg_community_code"); cfg.openxgLanguageCode = httpServletRequest.getParameter("openxg_language_code"); cfg.openxgAdminId = httpServletRequest.getParameter("openxg_adminid"); // SIP Phone Range Configuration cfg.sipLanguagePhoneCode = httpServletRequest.getParameter("sip_language_phonecode"); cfg.sipPhoneRangeStart = httpServletRequest.getParameter("sip_phonerange_start"); cfg.sipPhoneRange = httpServletRequest.getParameter("sip_phonerange"); String timeZone = httpServletRequest.getParameter("timeZone"); cfg.ical_timeZone = timeZone; cfg.jodPath = httpServletRequest.getParameter("jod_path"); log.debug("step 0+ start init with values. " + username + " ***** " + useremail + " " + orgname + " " + cfg); String filePath = getServletContext().getRealPath("/") + ImportInitvalues.languageFolderName; cfg.urlFeed = getServletContext().getInitParameter("url_feed"); cfg.urlFeed2 = getServletContext().getInitParameter("url_feed2"); getImportInitvalues().loadAll(filePath, cfg, username, userpass, useremail, orgname, timeZone, false); // update to next step log.debug("add level to install file"); InstallationDocumentHandler.getInstance() .createDocument(working_dir + InstallationDocumentHandler.installFileName, 1); // return // getVelocityEngine().getTemplate("install_complete_"+lang+".vm"); return getVelocityView().getVelocityEngine().getTemplate("install_step2_" + lang + ".vm"); } else { ctx.put("error", "This Step of the installation has already been done. continue with step 2 <A HREF='?command=step2'>continue with step 2</A>"); return getVelocityView().getVelocityEngine().getTemplate("install_exception_" + lang + ".vm"); } } else if (command.equals("step")) { int i = InstallationDocumentHandler.getInstance().getCurrentStepNumber(working_dir); if (i == 0) { } } } catch (IOException err) { log.error("Install: ", err); } catch (Exception err2) { log.error("Install: ", err2); } return null; } }