/*
* RapidMiner
*
* Copyright (C) 2001-2014 by RapidMiner and the contributors
*
* Complete list of developers available at our web site:
*
* http://rapidminer.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see http://www.gnu.org/licenses/.
*/
package com.rapidminer.tools.config;
import java.io.File;
import java.util.Collections;
import java.util.Map;
import java.util.logging.Level;
import org.w3c.dom.Document;
import com.rapidminer.io.process.XMLTools;
import com.rapidminer.tools.FileSystemService;
import com.rapidminer.tools.I18N;
import com.rapidminer.tools.LogService;
import com.rapidminer.tools.container.Pair;
/** Stores configurations in files (one file per {@link Configurator}.
*
* @author Simon Fischer
*
*/
public class ClientConfigurationManager extends ConfigurationManager {
@Override
protected Map<Pair<Integer, String>, Map<String, String>> loadAllParameters(Configurator configurator) throws ConfigurationException {
final File file = getConfigFile(configurator);
if (!file.exists()) {
//LogService.getRoot().info("No configuration file found for "+configurator.getName());
LogService.getRoot().log(Level.INFO, "com.rapidminer.tools.config.ClientConfigurationManager.no_configuration_file_found", configurator.getName());
return Collections.emptyMap();
}
try {
return fromXML(XMLTools.parse(file), configurator);
} catch (Exception e) {
throw new ConfigurationException("Failed to read configuration file '"+file.getAbsolutePath()+"' for "+configurator.getName()+": "+e, e);
}
}
// @Override
// public void saveConfiguration() {
// for (String typeId : getAllTypeIds()) {
// Configurator configurator = getConfigurator(typeId);
// try {
// Document xml = getConfigurablesAsXML(configurator);
// File file = getConfigFile(configurator);
// XMLTools.stream(xml, file, null);
// } catch (Exception e) {
// //LogService.getRoot().log(Level.WARNING, "Failed to save configurations for "+configurator.getName()+": "+e, e);
// LogService.getRoot().log(Level.WARNING,
// I18N.getMessage(LogService.getRoot().getResourceBundle(),
// "com.rapidminer.tools.config.ClientConfigurationManager.saving_configurations_error",
// configurator.getName(), e),
// e);
// }
// }
// }
/** Returns the config file in which this data will be saved. */
private File getConfigFile(Configurator configurator) {
return FileSystemService.getUserConfigFile("configurable-"+configurator.getTypeId()+".xml");
}
@Override
public void saveConfiguration(String typeId) throws ConfigurationException {
Configurator configurator = getConfigurator(typeId);
try {
Document xml = getConfigurablesAsXML(configurator, true);
File file = getConfigFile(configurator);
XMLTools.stream(xml, file, null);
} catch (Exception e) {
//LogService.getRoot().log(Level.WARNING, "Failed to save configurations for "+configurator.getName()+": "+e, e);
LogService.getRoot().log(Level.WARNING,
I18N.getMessage(LogService.getRoot().getResourceBundle(),
"com.rapidminer.tools.config.ClientConfigurationManager.saving_configurations_error",
configurator.getName(), e),
e);
throw new ConfigurationException("Failed to save configuration file: "+e, e);
}
}
}