@Override public PageReference readFirstReference() throws SirixIOException { final PageReference uberPageReference = new PageReference(); // Read primary beacon. final long lastIndex = mChronicle.size() - 1; uberPageReference.setKey(lastIndex); final UberPage page = (UberPage) read(lastIndex, null); uberPageReference.setPage(page); return uberPageReference; }
@Override public long size() { return chronicle.size(); }
@Test public void testMethods() throws IOException { String name = TMP + "/set-methods"; ChronicleTools.deleteOnExit(name); { MapListener stringsListener = createMock("strings", MapListener.class); stringsListener.eventStart(1, "strings"); stringsListener.add("Hello", "hi"); stringsListener.eventEnd(true); stringsListener.eventStart(3, "strings"); stringsListener.add("World", "all"); stringsListener.eventEnd(true); MapListener intListener = createMock("ints", MapListener.class); for (int i = 0; i < 3; i++) { intListener.eventStart(i * 2, "ints"); intListener.add(i, i + 1000); intListener.eventEnd(true); } replay(stringsListener); replay(intListener); Chronicle chronicle = new IndexedChronicle(name); DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER); MapWrapper<String, String> strings = new MapWrapper<String, String>( dataStore, "strings", String.class, String.class, new LinkedHashMap<String, String>(), 16); strings.addListener(stringsListener); MapWrapper<Integer, Integer> ints = new MapWrapper<Integer, Integer>( dataStore, "ints", Integer.class, Integer.class, new LinkedHashMap<Integer, Integer>(), 16); ints.addListener(intListener); dataStore.start(); ints.put(0, 1000); strings.put("Hello", "hi"); ints.put(1, 1001); strings.put("World", "all"); ints.put(2, 1002); verify(stringsListener); verify(intListener); assertEquals("{Hello=hi, World=all}", strings.toString()); assertEquals("{0=1000, 1=1001, 2=1002}", ints.toString()); chronicle.close(); } { MapListener stringsListener = createMock("strings", MapListener.class); stringsListener.eventStart(5, "strings"); stringsListener.add("!", "end"); stringsListener.eventEnd(true); MapListener intListener = createMock("ints", MapListener.class); intListener.eventStart(6, "ints"); intListener.add(3, 1003); intListener.eventEnd(true); replay(stringsListener); replay(intListener); Chronicle chronicle = new IndexedChronicle(name); DataStore dataStore = new DataStore(chronicle, ModelMode.MASTER); MapWrapper<String, String> strings = new MapWrapper<String, String>( dataStore, "strings", String.class, String.class, new LinkedHashMap<String, String>(), 16); strings.addListener(stringsListener); MapWrapper<Integer, Integer> ints = new MapWrapper<Integer, Integer>( dataStore, "ints", Integer.class, Integer.class, new LinkedHashMap<Integer, Integer>(), 16); ints.addListener(intListener); // assume we have all the events written so far dataStore.start(chronicle.size()); strings.put("!", "end"); ints.put(3, 1003); verify(stringsListener); verify(intListener); assertEquals("{Hello=hi, World=all, !=end}", strings.toString()); assertEquals("{0=1000, 1=1001, 2=1002, 3=1003}", ints.toString()); chronicle.close(); } }