Skip to content

Commit

Permalink
use CRTP for AbsctractRow as well
Browse files Browse the repository at this point in the history
  • Loading branch information
kazuho committed Jul 14, 2014
1 parent bdad7e6 commit 35a0d27
Show file tree
Hide file tree
Showing 8 changed files with 14 additions and 14 deletions.
8 changes: 4 additions & 4 deletions net/examp1e/picoorm/AbstractRow.java
Expand Up @@ -3,12 +3,12 @@
import java.sql.Connection;
import java.sql.SQLException;

@SuppressWarnings({"rawtypes", "unchecked"})
public abstract class AbstractRow {
public abstract class AbstractRow<Row extends AbstractRow<Row>> {

@SuppressWarnings("unchecked")
public void insert(Connection conn) throws SQLException {
_getTableDefinition().insert(conn, this);
_getTableDefinition().insert(conn, (Row)this);
}

protected abstract TableDefinition _getTableDefinition();
protected abstract TableDefinition<Row> _getTableDefinition();
}
2 changes: 1 addition & 1 deletion net/examp1e/picoorm/Condition.java
Expand Up @@ -6,7 +6,7 @@

import net.examp1e.picoorm.types.AnyType;

public class Condition<Row extends AbstractRow> {
public class Condition<Row extends AbstractRow<Row>> {

public static abstract class OrderBy {
public abstract String getFieldName();
Expand Down
2 changes: 1 addition & 1 deletion net/examp1e/picoorm/TableDefinition.java
Expand Up @@ -8,7 +8,7 @@

import net.examp1e.picoorm.types.AnyType;

public abstract class TableDefinition<Row extends AbstractRow> {
public abstract class TableDefinition<Row extends AbstractRow<Row>> {

public final String TABLE_NAME;
private ArrayList<AnyType.Predicate<Row>> columnDefinitions = new ArrayList<AnyType.Predicate<Row>>();
Expand Down
2 changes: 1 addition & 1 deletion net/examp1e/picoorm/example/Member.java
Expand Up @@ -4,7 +4,7 @@
import net.examp1e.picoorm.types.*;

// this class definition should be automatically generated from the DDL
public class Member extends AbstractRow {
public class Member extends AbstractRow<Member> {

// serdes
public static final TableDefinition<Member> TABLE_DEFINITION = new TableDefinition<Member>("member") {
Expand Down
8 changes: 4 additions & 4 deletions net/examp1e/picoorm/types/AnyType.java
Expand Up @@ -14,9 +14,9 @@ public abstract class AnyType {

public abstract void unbind(ResultSet rs, int parameterIndex) throws SQLException;

public static abstract class Predicate<Row extends AbstractRow> extends Condition.OrderBy {
public static abstract class Predicate<Row extends AbstractRow<Row>> extends Condition.OrderBy {

private static class OrderPredicate<Row extends AbstractRow> extends Condition.OrderBy {
private static class OrderPredicate<Row extends AbstractRow<Row>> extends Condition.OrderBy {
private Predicate<Row> predicate;
OrderPredicate<Row> init(Predicate<Row> predicate) {
this.predicate = predicate;
Expand All @@ -27,7 +27,7 @@ public String getFieldName() {
return this.predicate.getFieldName();
}
}
private static class DescendingOrderPredicate<Row extends AbstractRow> extends OrderPredicate<Row> implements Condition.OrderByIsDescending {
private static class DescendingOrderPredicate<Row extends AbstractRow<Row>> extends OrderPredicate<Row> implements Condition.OrderByIsDescending {
}

protected TableDefinition<Row> tableDefinition;
Expand Down Expand Up @@ -74,7 +74,7 @@ public void set(ValueType value) {
this.isSet = true;
}

public static abstract class Predicate<ThisType, Row extends AbstractRow, ValueType> extends AnyType.Predicate<Row> {
public static abstract class Predicate<ThisType, Row extends AbstractRow<Row>, ValueType> extends AnyType.Predicate<Row> {
@SuppressWarnings("unchecked")
public ThisType init(TableDefinition<Row> tableDefinition, String fieldName) {
_init(tableDefinition, fieldName);
Expand Down
2 changes: 1 addition & 1 deletion net/examp1e/picoorm/types/IntegerType.java
Expand Up @@ -24,7 +24,7 @@ public void unbind(ResultSet rs, int parameterIndex) throws SQLException {
value = null;
}

public static class Predicate<Row extends AbstractRow> extends AnyTypeImpl.Predicate<Predicate<Row>, Row, Integer> {
public static class Predicate<Row extends AbstractRow<Row>> extends AnyTypeImpl.Predicate<Predicate<Row>, Row, Integer> {
@Override
protected IntegerType createParameter(Integer value) {
return new IntegerType().init(value);
Expand Down
2 changes: 1 addition & 1 deletion net/examp1e/picoorm/types/LongType.java
Expand Up @@ -24,7 +24,7 @@ public void unbind(ResultSet rs, int parameterIndex) throws SQLException {
value = null;
}

public static class Predicate<Row extends AbstractRow> extends AnyTypeImpl.Predicate<Predicate<Row>, Row, Long> {
public static class Predicate<Row extends AbstractRow<Row>> extends AnyTypeImpl.Predicate<Predicate<Row>, Row, Long> {
@Override
protected LongType createParameter(Long value) {
return new LongType().init(value);
Expand Down
2 changes: 1 addition & 1 deletion net/examp1e/picoorm/types/StringType.java
Expand Up @@ -22,7 +22,7 @@ public void unbind(ResultSet rs, int parameterIndex) throws SQLException {
value = rs.getString(parameterIndex);
}

public static class Predicate<Row extends AbstractRow> extends AnyTypeImpl.Predicate<Predicate<Row>, Row, String> {
public static class Predicate<Row extends AbstractRow<Row>> extends AnyTypeImpl.Predicate<Predicate<Row>, Row, String> {
@Override
protected StringType createParameter(String value) {
return new StringType().init(value);
Expand Down

0 comments on commit 35a0d27

Please sign in to comment.