
com.v5analytics.simpleorm.InMemorySimpleOrmSession Maven / Gradle / Ivy
package com.v5analytics.simpleorm;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class InMemorySimpleOrmSession extends SimpleOrmSession {
private Map tables = new HashMap<>();
@Override
public SimpleOrmContext createContext(String... authorizations) {
return new InMemorySimpleOrmContext(authorizations);
}
@Override
public String getTablePrefix() {
return "";
}
@Override
public Iterable getTableList(SimpleOrmContext simpleOrmContext) {
List tableList = new ArrayList<>();
for (InMemoryTable table : tables.values()) {
tableList.add(table.getName());
}
return tableList;
}
@Override
public void deleteTable(String tableName, SimpleOrmContext simpleOrmContext) {
for (Map.Entry tableEntry : tables.entrySet()) {
if (tableEntry.getValue().getName().equals(tableName)) {
tables.remove(tableEntry.getKey());
}
}
}
@Override
public void clearTable(String table, SimpleOrmContext simpleOrmContext) {
deleteTable(table, simpleOrmContext);
}
@Override
public Iterable findAll(Class rowClass, SimpleOrmContext context) {
InMemoryTable table = getTable(rowClass);
return table.findAll(context);
}
@Override
public T findById(Class rowClass, String id, SimpleOrmContext context) {
InMemoryTable table = getTable(rowClass);
return table.findById(id, context);
}
@Override
public Iterable findByIdStartsWith(Class rowClass, String idPrefix, SimpleOrmContext context) {
InMemoryTable table = getTable(rowClass);
return table.findByIdStartsWith(idPrefix, context);
}
@Override
public void save(T obj, String visibility, SimpleOrmContext context) {
//noinspection unchecked
InMemoryTable table = (InMemoryTable) getTable(obj.getClass());
table.save(obj, visibility, context);
}
@Override
public void delete(Class rowClass, String id, SimpleOrmContext context) {
InMemoryTable table = getTable(rowClass);
table.delete(id, context);
}
@Override
public void alterVisibility(T obj, String currentVisibility, String newVisibility, SimpleOrmContext context) {
InMemoryTable table = getTable(obj.getClass());
table.alterVisibility(obj, currentVisibility, newVisibility, context);
}
protected InMemoryTable getTable(Class rowClass) {
//noinspection unchecked
InMemoryTable table = tables.get(rowClass);
if (table == null) {
Class c = rowClass.getSuperclass();
while (c != null && table == null) {
//noinspection unchecked
table = tables.get(c);
c = c.getSuperclass();
}
}
if (table != null) {
return table;
}
table = new InMemoryTable<>(rowClass);
tables.put(table.getEntityRowClass(), table);
return table;
}
@Override
public void close() {
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy