package name.abuchen.portfolio.model;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.UUID;
import java.util.stream.Stream;
/**
* A set of configurations used to manage charts and column setup
*/
public class ConfigurationSet
{
/**
* A configuration has a UUID, a name given by the user, and a data string.
*/
public static class Configuration
{
private String uuid;
private String name;
private String data;
public Configuration()
{
// used for xml deserialisation
}
public Configuration(String name, String data)
{
this.uuid = UUID.randomUUID().toString();
this.name = name;
this.data = data;
}
public String getUUID()
{
return uuid;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public String getData()
{
return data;
}
public void setData(String data)
{
this.data = data;
}
}
private List<Configuration> configurations = new ArrayList<>();
public Stream<Configuration> getConfigurations()
{
return configurations.stream();
}
/**
* Returns the configuration with the given UUID.
*/
public Optional<Configuration> lookup(String uuid)
{
if (uuid == null)
return Optional.empty();
return configurations.stream().filter(c -> uuid.equals(c.getUUID())).findAny();
}
/**
* Adds a configuration to the set.
*/
public void add(Configuration configuration)
{
configurations.add(configuration);
}
/**
* Removes the given configuration from the set.
*/
public void remove(Configuration configuration)
{
configurations.remove(configuration);
}
}