package codeine.jsons.project;
import java.util.List;
import java.util.Map;
import codeine.api.NodeInfo;
import codeine.configuration.NodeMonitor;
import codeine.jsons.collectors.CollectorInfo;
import codeine.jsons.command.CommandInfo;
import codeine.jsons.nodes.NodeDiscoveryStrategy;
import codeine.permissions.UserProjectPermissions;
import codeine.utils.os.OperatingSystem;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
public class ProjectJson
{
private String name;
private String description;
private List<NodeMonitor> monitors = Lists.newArrayList();
private List<CollectorInfo> collectors = Lists.newArrayList();
private List<MailPolicyJson> mail = Lists.newArrayList();
private NodeDiscoveryStrategy node_discovery_startegy = NodeDiscoveryStrategy.Configuration;
private List<CommandInfo> commands = Lists.newArrayList();
private List<UserProjectPermissions> permissions = Lists.newArrayList();
private String nodes_discovery_script;
private String tags_discovery_script;
private String version_detection_script;
private List<NodeInfo> nodes_info = Lists.newArrayList();
private OperatingSystem operating_system = OperatingSystem.Linux;
private DiscardOldCommandsJson discard_old_commands = new DiscardOldCommandsJson(1000, null);
private List<EnvironmentVariable> environment_variables = Lists.newArrayList();
private List<String> include_project_commands = Lists.newArrayList();
public ProjectJson(String name) {
this.name = name;
}
public ProjectJson() {
}
public NodeMonitor getMonitor(String name)
{
for (NodeMonitor c : monitors)
{
if (c.name().equals(name))
{
return c;
}
}
return null;
}
@Override
public String toString() {
return "ProjectJson [" + (name != null ? "name=" + name + ", " : "")
+ (description != null ? "description=" + description : "") + "]";
}
public List<NodeMonitor> monitors() {
return monitors;
}
public List<MailPolicyJson> mail() {
return mail;
}
public NodeDiscoveryStrategy node_discovery_startegy() {
return node_discovery_startegy;
}
public void node_discovery_startegy(NodeDiscoveryStrategy newStrategy)
{
node_discovery_startegy = newStrategy;
}
public String name() {
return name;
}
public List<CommandInfo> commands() {
return commands;
}
public CommandInfo getCommand(String command) {
for (CommandInfo commandJson2 : commands()) {
if (commandJson2.name().equals(command)){
return commandJson2;
}
}
if (command.equals("switch-version")){
return new CommandInfo();
}
throw new IllegalArgumentException("command " + command + " not found in project " + name());
}
public void nodes_discovery_script(String content) {
this.nodes_discovery_script = content;
}
public void version_detection_script(String content) {
this.version_detection_script = content;
}
public String version_detection_script() {
return version_detection_script;
}
public void nodes_info(List<NodeInfo> nodes) {
this.nodes_info = nodes;
}
public void name(String name) {
this.name = name;
}
public String nodes_discovery_script() {
return nodes_discovery_script;
}
public List<NodeInfo> nodes_info() {
return nodes_info;
}
public String tags_discovery_script() {
return tags_discovery_script;
}
public List<UserProjectPermissions> permissions() {
return permissions;
}
public DiscardOldCommandsJson discard_old_commands() {
return discard_old_commands;
}
public OperatingSystem operating_system() {
return operating_system == null ? OperatingSystem.Linux : operating_system;
}
public Map<String, String> environmentVariables() {
Map<String, String> $ = Maps.newLinkedHashMap();
for (EnvironmentVariable environmentVariable : environment_variables) {
$.put(environmentVariable.key(), environmentVariable.value());
}
return $;
}
public List<CollectorInfo> collectors() {
return collectors;
}
public List<String> include_project_commands() {
return include_project_commands;
}
public String description() {
return description;
}
}