All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.v5analytics.simpleorm.InMemorySimpleOrmSession Maven / Gradle / Ivy

There is a newer version: 1.3.1
Show newest version
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