javolution.util.internal.table.MappedTableImpl Maven / Gradle / Ivy
/*
* Javolution - Java(TM) Solution for Real-Time and Embedded Systems
* Copyright (C) 2012 - Javolution (http://javolution.org/)
* All rights reserved.
*
* Permission to use, copy, modify, and distribute this software is
* freely granted, provided that this notice is preserved.
*/
package javolution.util.internal.table;
import javolution.util.function.Equalities;
import javolution.util.function.Equality;
import javolution.util.function.Function;
import javolution.util.service.TableService;
/**
* A mapped view over a table.
*/
public class MappedTableImpl extends TableView {
private static final long serialVersionUID = 0x600L; // Version.
protected final Function super E, ? extends R> function;
@SuppressWarnings("unchecked")
public MappedTableImpl(TableService target,
Function super E, ? extends R> function) {
super((TableService) target); // Beware target is of type
this.function = function;
}
@Override
public void add(int index, R element) {
throw new UnsupportedOperationException(
"New elements cannot be added to mapped views");
}
@Override
public boolean add(R element) {
throw new UnsupportedOperationException(
"New elements cannot be added to mapped views");
}
@Override
public void clear() {
target().clear();
}
@Override
public Equality super R> comparator() {
return Equalities.STANDARD;
}
@SuppressWarnings("unchecked")
@Override
public R get(int index) {
return function.apply((E) target().get(index));
}
@SuppressWarnings("unchecked")
@Override
public R remove(int index) {
return function.apply((E) target().remove(index));
}
@Override
public R set(int index, R element) {
throw new UnsupportedOperationException(
"Elements cannot be set to mapped views");
}
@Override
public int size() {
return target().size();
}
}