package org.ovirt.engine.core.utils.kerberos;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class DomainsConfigurationEntry {
protected Map<String, String> valuePerDomain = new HashMap<String, String>();
protected String domainSeperator;
protected String valueSeperator;
public DomainsConfigurationEntry(String entry, String domainSeperator, String valueSeperator) {
this.domainSeperator = domainSeperator;
this.valueSeperator = valueSeperator;
if (entry != null && !entry.isEmpty()) {
String[] domainValuePairs = entry.split(domainSeperator);
for (String domainValuePair : domainValuePairs) {
if (valueSeperator != null && !valueSeperator.isEmpty()) {
String[] pairParts = domainValuePair.split(valueSeperator);
valuePerDomain.put(pairParts[0].trim().toLowerCase(), pairParts[1]);
} else {
valuePerDomain.put(domainValuePair.trim(), null);
}
}
}
}
public String getDomainsConfigurationEntry() {
String configurationEntry = "";
boolean firstEntry = true;
for ( Entry<String,String> currEntry: valuePerDomain.entrySet() ) {
if (!firstEntry) {
configurationEntry += domainSeperator;
} else {
firstEntry = false;
}
configurationEntry += currEntry.getKey();
if (currEntry.getValue() != null) {
configurationEntry += valueSeperator + currEntry.getValue();
}
}
return configurationEntry;
}
// This method returns the entry for logging purposes
public String getDomainsLoggingEntry() {
return getDomainsConfigurationEntry();
}
public void setValueForDomainIfExistent(String domain, String value) {
if (doesDomainExist(domain)) {
valuePerDomain.put(domain, value);
}
}
public void setValueForDomain(String domain, String value) {
valuePerDomain.put(domain, value);
}
public void removeValueForDomain(String domain) {
valuePerDomain.remove(domain);
}
public boolean doesDomainExist(String domain) {
return valuePerDomain.containsKey(domain);
}
public boolean isEntryEmpty() {
return valuePerDomain.isEmpty();
}
public String getValueForDomain(String domain) {
return valuePerDomain.get(domain);
}
public Set<Entry<String, String>> getValues() {
return valuePerDomain.entrySet();
}
}