package com.intrbiz.bergamot.config;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import javax.xml.bind.JAXBException;
import javax.xml.bind.annotation.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import com.intrbiz.bergamot.agent.config.Configuration;
@XmlType(name = "bergamot-cli")
@XmlRootElement(name = "bergamot-cli")
public class CLICfg extends Configuration
{
private static final long serialVersionUID = 1L;
private List<CLISiteCfg> sites = new LinkedList<CLISiteCfg>();
public CLICfg()
{
super();
}
@XmlElementRef(type = CLISiteCfg.class)
public List<CLISiteCfg> getSites()
{
return sites;
}
public void setSites(List<CLISiteCfg> sites)
{
this.sites = sites;
}
public CLISiteCfg getSite(String name)
{
return this.sites.stream().filter((s) -> { return name.equals(s.getName()); }).findFirst().get();
}
public void removeSite(String name)
{
this.sites.removeIf((s) -> { return name.equals(s.getName()); });
}
public void addSite(CLISiteCfg site)
{
this.sites.add(site);
}
public void setSite(CLISiteCfg site)
{
this.removeSite(site.getName());
this.addSite(site);
}
@Override
public void applyDefaults()
{
}
public static CLICfg read(File file) throws JAXBException, IOException
{
return Configuration.read(CLICfg.class, new FileInputStream(file));
}
/**
* Load the CLI configuration from the users home dir
*/
public static CLICfg loadConfiguration() throws Exception
{
CLICfg config = null;
// try the config file?
File configFile = new File(System.getProperty("bergamot.config", System.getProperty("user.home") + "/.bergamot-cli.xml"));
if (configFile.exists())
{
try (FileReader reader = new FileReader(configFile))
{
config = Configuration.read(CLICfg.class, reader);
}
}
else
{
config = new CLICfg();
}
config.applyDefaults();
return config;
}
public void saveConfiguration() throws Exception
{
File configFile = new File(System.getProperty("bergamot.config", System.getProperty("user.home") + "/.bergamot-cli.xml"));
try (FileWriter writer = new FileWriter(configFile))
{
Configuration.write(CLICfg.class, this, writer);
}
}
}