package utils.puppet.manifest;
import utils.puppet.PuppetConfigurationException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Created by ricardolorenzo on 03/08/2014.
*/
public class PuppetClass {
private String name;
private Map<String, PuppetModule> modules;
public PuppetClass(String name) {
this.name = name;
modules = new HashMap<>();
}
private static String getModuleKey(final String type, final String name) {
StringBuilder sb = new StringBuilder();
sb.append(type);
sb.append("@");
sb.append(name);
return sb.toString();
}
public List<PuppetModule> getModules() {
return new ArrayList<>(this.modules.values());
}
public void setModule(PuppetModule puppetModule) throws PuppetConfigurationException {
String key = getModuleKey(puppetModule.getType(), puppetModule.getName());
if(this.modules.containsKey(key)) {
throw new PuppetConfigurationException("module name already exists for the type");
}
this.modules.put(key, puppetModule);
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("class ");
sb.append(this.name);
sb.append(" {\n");
for(PuppetModule m: modules.values()) {
sb.append(m.toString());
}
sb.append("}\n");
return sb.toString();
}
}