package nl.ipo.cds.validation.gml.codelists;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class StaticCodeListFactory extends CachingCodeListFactory {
private final Map<String, CodeList> codeLists;
public StaticCodeListFactory (final Map<String, CodeList> codeLists) {
this.codeLists = new HashMap<String, CodeList> (codeLists);
}
@Override
protected CodeList doGetCodeList (final String codeSpace) throws CodeListException {
if (codeLists.containsKey (codeSpace)) {
return codeLists.get (codeSpace);
}
throw new CodeListException (codeSpace, codeSpace, String.format ("Code list not found: %s", codeSpace));
}
public static class StaticCodeList implements CodeList {
public final String codeSpace;
public final Set<String> codes;
public StaticCodeList (final String codeSpace, final Set<String> codes) {
assert codeSpace != null;
assert codes != null;
this.codeSpace = codeSpace;
this.codes = new HashSet<> (codes);
}
@Override
public String getCodeSpace () {
return codeSpace;
}
@Override
public Set<String> getCodes () {
return Collections.unmodifiableSet (codes);
}
@Override
public boolean hasCode (final String code) {
return codes.contains (code);
}
}
}