package org.ripple.power.database.secrecy;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class SecureTable<T extends TableEntry> implements Table<T> {
private static final long serialVersionUID = 1L;
private final Map<Long, T> tableEntryMap;
private final String name;
public SecureTable(String name) {
this.tableEntryMap = new ConcurrentHashMap<>();
this.name = name;
}
@Override
public T getEntry(Long id) {
if (this.tableEntryMap.containsKey(id)) {
return this.tableEntryMap.get(id);
}
return null;
}
@Override
public synchronized void putEntry(T entry) {
Long id = entry.getId();
if (id == null || id == 0L) {
id = this.tableEntryMap.size() + 1L;
entry.setId(id);
}
this.tableEntryMap.put(id, entry);
}
@Override
public List<T> getAll() {
return new ArrayList<>(this.tableEntryMap.values());
}
@Override
public String getName() {
return this.name;
}
}