package com.sequenceiq.cloudbreak.orchestrator.salt.client.target; import java.util.Collection; import java.util.Collections; import java.util.stream.Collectors; public class Compound implements Target<String> { private final Collection<String> targets; private final CompoundType type; public Compound(String nodeIP) { this(Collections.singletonList(nodeIP), CompoundType.IP); } public Compound(Collection<String> targets) { this(targets, CompoundType.IP); } public Compound(Collection<String> targets, CompoundType type) { this.targets = targets; this.type = type; } @Override public String getTarget() { return type.delimiter + targets.stream().collect(Collectors.joining(" or " + type.delimiter)); } @Override public String getType() { return "compound"; } public enum CompoundType { IP("S@"), HOST("L@"), GRAINS("G@"), PILLAR("I@"); private String delimiter; CompoundType(String delimiter) { this.delimiter = delimiter; } public String delimiter() { return delimiter; } } }