org.securegraph.Metadata Maven / Gradle / Ivy
The newest version!
package org.securegraph;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class Metadata {
private Map entries = new HashMap();
public static final String KEY_SEPARATOR = "\u001f";
public void add(String key, Object value, Visibility visibility) {
entries.put(toMapKey(key, visibility), new Entry(key, value, visibility));
}
public void remove(String key, Visibility visibility) {
entries.remove(toMapKey(key, visibility));
}
public void remove(String key) {
for (Map.Entry e : new ArrayList>(entries.entrySet())) {
if (e.getValue().getKey().equals(key)) {
entries.remove(e.getKey());
}
}
}
public Collection entrySet() {
return entries.values();
}
public Entry getEntry(String key, Visibility visibility) {
return entries.get(toMapKey(key, visibility));
}
public Entry getEntry(String key) {
Entry entry = null;
for (Map.Entry e : entries.entrySet()) {
if (e.getValue().getKey().equals(key)) {
if (entry != null) {
throw new SecureGraphException("Multiple matching entries for key: " + key);
}
entry = e.getValue();
}
}
return entry;
}
public Object getValue(String key, Visibility visibility) {
Entry entry = getEntry(key, visibility);
if (entry == null) {
return null;
}
return entry.getValue();
}
public Object getValue(String key) {
Entry entry = getEntry(key);
if (entry == null) {
return null;
}
return entry.getValue();
}
public boolean containsKey(String key) {
for (Map.Entry e : entries.entrySet()) {
if (e.getValue().getKey().equals(key)) {
return true;
}
}
return false;
}
public boolean contains(String key, Visibility visibility) {
return getEntry(key, visibility) != null;
}
private String toMapKey(String key, Visibility visibility) {
return key + KEY_SEPARATOR + visibility.getVisibilityString();
}
public static class Entry {
private final String key;
private final Object value;
private final Visibility visibility;
private Entry(String key, Object value, Visibility visibility) {
this.key = key;
this.value = value;
this.visibility = visibility;
}
public String getKey() {
return key;
}
public Object getValue() {
return value;
}
public Visibility getVisibility() {
return visibility;
}
@Override
public String toString() {
return "Entry{" +
"key='" + key + '\'' +
", value=" + value +
", visibility=" + visibility +
'}';
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy