package com.ldbc.driver.util;
import com.google.common.base.Function;
import java.util.Map;
public abstract class TypeChangeFun<F, T> implements Function<F,T>
{
public static final TypeChangeFun IDENTITY = new Identify();
private static class Identify<T> extends TypeChangeFun<T,T>
{
@Override
public T apply( T thing )
{
return thing;
}
}
public static final TypeChangeFun TO_STRING = new IntToString();
private static class IntToString<T> extends TypeChangeFun<T,String>
{
@Override
public String apply( T thing )
{
return thing.toString();
}
}
public static final <F, T> TypeChangeFun mapped( Map<F,T> mapping )
{
return new Mapped( mapping );
}
private static class Mapped<F, T> extends TypeChangeFun<F,T>
{
private final Map<F,T> mapping;
private Mapped( Map<F,T> mapping )
{
this.mapping = mapping;
}
@Override
public T apply( F thing )
{
return mapping.get( thing );
}
}
}