package com.atlassian.labs.speakeasy.manager;
import com.atlassian.labs.speakeasy.data.SpeakeasyData;
import com.atlassian.labs.speakeasy.model.Settings;
import com.atlassian.labs.speakeasy.util.JsonObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.io.IOException;
/**
*
*/
@Component
public class SettingsManager
{
private final SpeakeasyData data;
private volatile Settings settings;
@Autowired
public SettingsManager(SpeakeasyData data)
{
this.data = data;
setSettings(loadSettings());
}
public Settings getSettings()
{
return settings;
}
public Settings setSettings(Settings settings)
{
String value = null;
try
{
value = JsonObjectMapper.write(settings);
this.settings = JsonObjectMapper.read(Settings.class, data.saveSettings(value));
return getSettings();
}
catch (IOException e)
{
throw new RuntimeException("Cannot save settings due to error", e);
}
}
private Settings loadSettings()
{
String value = data.getSettings();
try
{
return JsonObjectMapper.read(Settings.class, value);
}
catch (IOException e)
{
throw new RuntimeException("Cannot get settings", e);
}
}
}