/*
* Copyright 2004-2014 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package org.h2.test.store;
import java.util.AbstractSet;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import org.h2.mvstore.MVMap;
import org.h2.mvstore.MVStore;
/**
* A custom map returning the keys and values values 1 .. 10.
*/
public class SequenceMap extends MVMap<Long, Long> {
/**
* The minimum value.
*/
int min = 1;
/**
* The maximum value.
*/
int max = 10;
public SequenceMap() {
super(null, null);
}
@Override
public void init(MVStore store, HashMap<String, Object> config) {
super.init(store, config);
}
@Override
public Set<Long> keySet() {
return new AbstractSet<Long>() {
@Override
public Iterator<Long> iterator() {
return new Iterator<Long>() {
long x = min;
@Override
public boolean hasNext() {
return x <= max;
}
@Override
public Long next() {
return Long.valueOf(x++);
}
@Override
public void remove() {
throw new UnsupportedOperationException();
}
};
}
@Override
public int size() {
return max - min + 1;
}
};
}
/**
* A builder for this class.
*/
public static class Builder implements MapBuilder<SequenceMap, Long, Long> {
/**
* Create a new builder.
*/
public Builder() {
// ignore
}
@Override
public SequenceMap create() {
return new SequenceMap();
}
}
}