Lens.java
- package net.zer0bandwidth.android.lib.database.sqlitehouse.refractor;
- import net.zer0bandwidth.android.lib.database.sqlitehouse.SQLightable;
- import java.lang.reflect.Field;
- import static net.zer0bandwidth.android.lib.database.SQLiteSyntax.SQLITE_NULL;
- /**
- * Provides canonical implementations of various methods of {@link Refractor}.
- * Custom implementations of {@code Refractor} may choose to extend this class
- * or not; all internal code within the library refers to the interface, not the
- * abstract class.
- * @since zer0bandwidth-net/android 0.1.4 (#26)
- */
- public abstract class Lens<T>
- implements Refractor<T>
- {
- /** @return {@code null} */
- @Override
- public T getSQLiteDefaultValue()
- { return null ; }
- @Override
- public String toSQLiteString( T o )
- { return ( o == null ? SQLITE_NULL : o.toString() ) ; }
- /**
- * This is the simplest and canonical implementation of the method specified
- * by {@link Refractor}.
- */
- @Override
- public String getSQLiteDefaultString()
- { return this.toSQLiteString( this.getSQLiteDefaultValue() ) ; }
- /**
- * This implementation simply uses {@link Field#get} and tries to cast it to
- * the lens's template parameter type. Actual implementation classes should
- * override this method if the data type is a primitive.
- */
- @SuppressWarnings("unchecked")
- @Override
- public T getValueFrom( SQLightable o, Field fld )
- throws IllegalAccessException
- { return ((T)(fld.get(o))) ; }
- }