/* ==================================================================
* SettingsImporter.java - Feb 19, 2015 2:38:16 PM
*
* Copyright 2007-2015 SolarNetwork.net Dev Team
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 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
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
* 02111-1307 USA
* ==================================================================
*/
package net.solarnetwork.node.setup.auto;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import net.solarnetwork.node.settings.SettingsImportOptions;
import net.solarnetwork.node.settings.SettingsService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource;
/**
* Look for a settings export to automatically load then the application starts.
*
* The {@link SettingsService#importSettingsCSV(java.io.Reader)} method is used
* to import a previously-exported settings CSV resource.
*
* @author matt
* @version 1.0
*/
public class SettingsImporter {
private Resource settingsResource = new FileSystemResource("conf/auto-settings.csv");
private SettingsService settingsService;
private final Logger log = LoggerFactory.getLogger(getClass());
/**
* Attempt to load the {@code settingsResource}. Does not throw any
* exceptions if the resource is not available or cannot be read.
*/
public void loadSettings() {
if ( settingsResource == null ) {
return;
}
Reader in = null;
try {
in = new InputStreamReader(settingsResource.getInputStream(), "UTF-8");
log.info("Auto-importing settings from {}", settingsResource);
SettingsImportOptions options = new SettingsImportOptions();
options.setAddOnly(true);
if ( settingsService != null ) {
settingsService.importSettingsCSV(in, options);
}
} catch ( Exception e ) {
log.warn("Error importing settings resource {}: {}", settingsResource, e.getMessage());
} finally {
if ( in != null ) {
try {
in.close();
} catch ( IOException e ) {
// ignore this
}
}
}
}
public void setSettingsService(SettingsService settingsService) {
this.settingsService = settingsService;
}
public void setSettingsResource(Resource settingsResource) {
this.settingsResource = settingsResource;
}
}