001/* 002 * (C) Copyright 2011-2015 Nuxeo SA (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl-2.1.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * tdelprat, jcarsique 016 * 017 */ 018 019package org.nuxeo.wizard.context; 020 021import java.util.ArrayList; 022import java.util.Arrays; 023import java.util.Enumeration; 024import java.util.HashMap; 025import java.util.List; 026import java.util.Map; 027 028import javax.servlet.http.HttpServletRequest; 029 030import org.nuxeo.launcher.config.ConfigurationGenerator; 031 032/** 033 * Manages all the parameters entered by User to configure his Nuxeo server 034 * 035 * @author Tiry (tdelprat@nuxeo.com) 036 * @since 5.4.2 037 */ 038public class ParamCollector { 039 040 public static final String Key = "collector"; 041 042 private static final String SKIP_SECTIONS_KEY = "nuxeo.wizard.skippedsections"; 043 044 private List<String> sectionsToSkip; 045 046 private ConfigurationGenerator configurationGenerator; 047 048 public ConfigurationGenerator getConfigurationGenerator() { 049 return configurationGenerator; 050 } 051 052 protected Map<String, String> configurationParams = new HashMap<>(); 053 054 protected Map<String, String> connectParams = new HashMap<>(); 055 056 public ParamCollector() { 057 configurationGenerator = new ConfigurationGenerator(); 058 configurationGenerator.init(); 059 String skipSections = configurationGenerator.getUserConfig().getProperty(SKIP_SECTIONS_KEY, ""); 060 sectionsToSkip = Arrays.asList(skipSections.split(",")); 061 } 062 063 public boolean isSectionSkipped(String section) { 064 return sectionsToSkip.contains(section); 065 } 066 067 public void addConfigurationParam(String name, String value) { 068 if (value == null) { 069 configurationParams.remove(name); 070 } else { 071 configurationParams.put(name, value); 072 } 073 } 074 075 public void addConnectParam(String name, String value) { 076 configurationParams.put(name, value); 077 } 078 079 public Map<String, String> getConfigurationParams() { 080 return configurationParams; 081 } 082 083 public Map<String, String> getChangedParameters() { 084 return configurationGenerator.getChangedParameters(configurationParams); 085 } 086 087 public String getConfigurationParam(String name) { 088 String param = configurationParams.get(name); 089 if (param == null) { 090 param = configurationGenerator.getUserConfig().getProperty(name, ""); 091 } 092 return param; 093 } 094 095 public String getConfigurationParamValue(String name) { 096 return configurationParams.get(name); 097 } 098 099 public Map<String, String> getConnectParams() { 100 return connectParams; 101 } 102 103 public void collectConfigurationParams(HttpServletRequest req) { 104 Enumeration<String> names = req.getParameterNames(); 105 while (names.hasMoreElements()) { 106 String name = names.nextElement(); 107 if (name.startsWith("org.nuxeo.") || name.startsWith("nuxeo.") || name.startsWith("mail.")) { 108 String value = req.getParameter(name); 109 if (!value.isEmpty() || (value.isEmpty() && configurationParams.containsKey(name))) { 110 addConfigurationParam(name, value); 111 } 112 } 113 } 114 } 115 116 /** 117 * @see ConfigurationGenerator#changeDBTemplate(String) 118 * @param templateName database template to use 119 */ 120 public void changeDBTemplate(String templateName) { 121 List<String> keys = new ArrayList<>(); 122 configurationGenerator.changeDBTemplate(templateName); 123 for (String key : configurationParams.keySet()) { 124 if (key.startsWith("nuxeo.db")) { 125 keys.add(key); 126 } 127 } 128 for (String key : keys) { 129 configurationParams.remove(key); 130 } 131 } 132 133}