@Override public DataAccess createDataAccess(String name) { return new RAMDataAccess(name, directory, true, defaultOrder).setSegmentSize(128); } }
@Override public DataAccess find(String name, DAType type) { if (!name.equals(toLowerCase(name))) throw new IllegalArgumentException("Since 0.7 DataAccess objects does no longer accept upper case names"); DataAccess da = map.get(name); if (da != null) { if (!type.equals(da.getType())) throw new IllegalStateException("Found existing DataAccess object '" + name + "' but types did not match. Requested:" + type + ", was:" + da.getType()); return da; } if (type.isInMemory()) { if (type.isInteg()) { if (type.isStoring()) da = new RAMIntDataAccess(name, location, true, byteOrder); else da = new RAMIntDataAccess(name, location, false, byteOrder); } else if (type.isStoring()) da = new RAMDataAccess(name, location, true, byteOrder); else da = new RAMDataAccess(name, location, false, byteOrder); } else if (type.isMMap()) { da = new MMapDataAccess(name, location, byteOrder, type.isAllowWrites()); } else { da = new UnsafeDataAccess(name, location, byteOrder); } map.put(name, da); return da; }
@Test public void textMixRAM2MMAP() { DataAccess da = new RAMDataAccess(name, directory, true, defaultOrder); assertFalse(da.loadExisting()); da.create(100); da.setInt(7 * 4, 123); da.flush(); da.close(); da = createDataAccess(name); assertTrue(da.loadExisting()); assertEquals(123, da.getInt(7 * 4)); da.close(); }
@Test public void textMixMMAP2RAM() { DataAccess da = createDataAccess(name); assertFalse(da.loadExisting()); da.create(100); da.setInt(7 * 4, 123); // TODO "memory mapped flush" is expensive and not required. only writing the header is required. da.flush(); da.close(); da = new RAMDataAccess(name, directory, true, defaultOrder); assertTrue(da.loadExisting()); assertEquals(123, da.getInt(7 * 4)); da.close(); } }
da = new RAMIntDataAccess(name, location, false, byteOrder); } else if (type.isStoring()) da = new RAMDataAccess(name, location, true, byteOrder); else da = new RAMDataAccess(name, location, false, byteOrder); } else if (type.isMMap()) { da = new MMapDataAccess(name, location, byteOrder, type.isAllowWrites());
@Override public DataAccess find(String name, DAType type) { if (!name.equals(toLowerCase(name))) throw new IllegalArgumentException("Since 0.7 DataAccess objects does no longer accept upper case names"); DataAccess da = map.get(name); if (da != null) { if (!type.equals(da.getType())) throw new IllegalStateException("Found existing DataAccess object '" + name + "' but types did not match. Requested:" + type + ", was:" + da.getType()); return da; } if (type.isInMemory()) { if (type.isInteg()) { if (type.isStoring()) da = new RAMIntDataAccess(name, location, true, byteOrder); else da = new RAMIntDataAccess(name, location, false, byteOrder); } else if (type.isStoring()) da = new RAMDataAccess(name, location, true, byteOrder); else da = new RAMDataAccess(name, location, false, byteOrder); } else if (type.isMMap()) { da = new MMapDataAccess(name, location, byteOrder, type.isAllowWrites()); } else { da = new UnsafeDataAccess(name, location, byteOrder); } map.put(name, da); return da; }
da = new RAMIntDataAccess(name, location, false, byteOrder); } else if (type.isStoring()) da = new RAMDataAccess(name, location, true, byteOrder); else da = new RAMDataAccess(name, location, false, byteOrder); } else if (type.isMMap())