Skip to content

Commit

Permalink
Introduced query-only columns for all column types (issue #11).
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed May 3, 2012
1 parent 2b66f6d commit cc81b89
Show file tree
Hide file tree
Showing 16 changed files with 187 additions and 56 deletions.
11 changes: 6 additions & 5 deletions src/main/java/com/tightdb/example/Example.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,28 @@

public class Example {

//@NestedTable
// @NestedTable
class phone {
String type;
String number;
}

//@Table
// @Table
class person {
String firstName;
String lastName;
int salary;
phone phones;
}

public static void main(String[] args) {
PersonTable persons = new PersonTable();

Person john = persons.add("John", "Doe", 23000, true, new byte[] {1,2,3}, new Date(), "extra");
Person john = persons.add("John", "Doe", 23000, true, new byte[] { 1, 2, 3 }, new Date(), "extra");
john.phones.get().add("home", "123456");
john.phones.get().add("mobile", "333444");

persons.insert(0, "Nikolche", "Mihajlovski", 28000, false, new byte[] {4,5}, new Date(), 1234.56);
persons.insert(0, "Nikolche", "Mihajlovski", 28000, false, new byte[] { 4, 5 }, new Date(), 1234.56);

// 2 ways to get the value
String name1 = persons.at(0).firstName.get();
Expand Down Expand Up @@ -96,6 +96,7 @@ public static void main(String[] args) {
persons.firstName.is("d").salary.sum(); // no problem without OR
persons.firstName.is("X").or().salary.set(1234); // problem - incorrect
// options

persons.firstName.is("X").or().salary.is(23).salary.sum(); // correct,
// shorter
// (query-based)
Expand Down
20 changes: 14 additions & 6 deletions src/main/java/com/tightdb/lib/AbstractColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

import com.tightdb.TableBase;


public abstract class AbstractColumn<Type, Cursor, Query> {

protected final TableBase table;
Expand All @@ -26,8 +25,13 @@ public AbstractColumn(TableBase table, int index, String name) {
this.name = name;
}

public abstract Type get();
public abstract void set(Type value);
protected Type get() {
throw new UnsupportedOperationException("Cannot get the column's value!");
}

protected void set(Type value) {
throw new UnsupportedOperationException("Cannot set the column's value!");
}

public List<Type> all() {
return null;
Expand All @@ -49,9 +53,13 @@ public String toString() {
public String getName() {
return name;
}

public String getReadable() {
return String.valueOf(get());
try {
return String.valueOf(get());
} catch (Exception e) {
return "ERROR!";
}
}

}
2 changes: 1 addition & 1 deletion src/main/java/com/tightdb/lib/BinaryColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.tightdb.TableBase;

public class BinaryColumn<Cursor, Query> extends AbstractColumn<byte[], Cursor, Query> {
public class BinaryColumn<Cursor, Query> extends BinaryQueryColumn<Cursor, Query> {

public BinaryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/com/tightdb/lib/BinaryQueryColumn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.tightdb.lib;

import com.tightdb.TableBase;

public class BinaryQueryColumn<Cursor, Query> extends AbstractColumn<byte[], Cursor, Query> {

public BinaryQueryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
}

public BinaryQueryColumn(TableBase table, int index, String name) {
super(table, index, name);
}

}
2 changes: 1 addition & 1 deletion src/main/java/com/tightdb/lib/BooleanColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import com.tightdb.TableBase;

public class BooleanColumn<Cursor, Query> extends AbstractColumn<Boolean, Cursor, Query> {
public class BooleanColumn<Cursor, Query> extends BooleanQueryColumn<Cursor, Query> {

public BooleanColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/com/tightdb/lib/BooleanQueryColumn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.tightdb.lib;

import com.tightdb.TableBase;

public class BooleanQueryColumn<Cursor, Query> extends AbstractColumn<Boolean, Cursor, Query> {

public BooleanQueryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
}

public BooleanQueryColumn(TableBase table, int index, String name) {
super(table, index, name);
}

}
3 changes: 1 addition & 2 deletions src/main/java/com/tightdb/lib/DateColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@

import com.tightdb.TableBase;


public class DateColumn<Cursor, Query> extends AbstractColumn<Date, Cursor, Query> {
public class DateColumn<Cursor, Query> extends DateQueryColumn<Cursor, Query> {

private static final DateFormat FORMATTER = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);

Expand Down
17 changes: 17 additions & 0 deletions src/main/java/com/tightdb/lib/DateQueryColumn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.tightdb.lib;

import java.util.Date;

import com.tightdb.TableBase;

public class DateQueryColumn<Cursor, Query> extends AbstractColumn<Date, Cursor, Query> {

public DateQueryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
}

public DateQueryColumn(TableBase table, int index, String name) {
super(table, index, name);
}

}
19 changes: 1 addition & 18 deletions src/main/java/com/tightdb/lib/LongColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import com.tightdb.TableBase;


public class LongColumn<Cursor, Query> extends AbstractColumn<Long, Cursor, Query> {
public class LongColumn<Cursor, Query> extends LongQueryColumn<Cursor, Query> {

public LongColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
Expand All @@ -13,18 +12,6 @@ public LongColumn(TableBase table, int index, String name) {
super(table, index, name);
}

public Query greaterThan(int value) {
return null;
}

public Query lessThan(int value) {
return null;
}

public Query between(int from, int to) {
return null;
}

public int sum() {
return 0;
}
Expand Down Expand Up @@ -55,10 +42,6 @@ public void set(Long value) {
table.setLong(columnIndex, (int) cursor.getPosition(), value);
}

public Query is(long value) {
return null;
}

public void set(long value) {
set(Long.valueOf(value));
}
Expand Down
31 changes: 31 additions & 0 deletions src/main/java/com/tightdb/lib/LongQueryColumn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.tightdb.lib;

import com.tightdb.TableBase;

public class LongQueryColumn<Cursor, Query> extends AbstractColumn<Long, Cursor, Query> {

public LongQueryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
}

public LongQueryColumn(TableBase table, int index, String name) {
super(table, index, name);
}

public Query greaterThan(int value) {
return null;
}

public Query lessThan(int value) {
return null;
}

public Query between(int from, int to) {
return null;
}

public Query is(long value) {
return null;
}

}
2 changes: 1 addition & 1 deletion src/main/java/com/tightdb/lib/MixedColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import com.tightdb.TableBase;

public class MixedColumn<Cursor, Query> extends AbstractColumn<Serializable, Cursor, Query> {
public class MixedColumn<Cursor, Query> extends MixedQueryColumn<Cursor, Query> {

public MixedColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
Expand Down
17 changes: 17 additions & 0 deletions src/main/java/com/tightdb/lib/MixedQueryColumn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.tightdb.lib;

import java.io.Serializable;

import com.tightdb.TableBase;

public class MixedQueryColumn<Cursor, Query> extends AbstractColumn<Serializable, Cursor, Query> {

public MixedQueryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
}

public MixedQueryColumn(TableBase table, int index, String name) {
super(table, index, name);
}

}
3 changes: 1 addition & 2 deletions src/main/java/com/tightdb/lib/StringColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import com.tightdb.TableBase;


public class StringColumn<Cursor, Query> extends AbstractColumn<String, Cursor, Query> {
public class StringColumn<Cursor, Query> extends StringQueryColumn<Cursor, Query> {

public StringColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
Expand Down
31 changes: 31 additions & 0 deletions src/main/java/com/tightdb/lib/StringQueryColumn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.tightdb.lib;

import com.tightdb.TableBase;

public class StringQueryColumn<Cursor, Query> extends AbstractColumn<String, Cursor, Query> {

public StringQueryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name) {
super(table, cursor, index, name);
}

public StringQueryColumn(TableBase table, int index, String name) {
super(table, index, name);
}

public Query startsWith(String value) {
return null;
}

public Query endWith(String value) {
return null;
}

public Query contains(String value) {
return null;
}

public Query matches(String regex) {
return null;
}

}
23 changes: 3 additions & 20 deletions src/main/java/com/tightdb/lib/TableColumn.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,14 @@

import com.tightdb.TableBase;

public class TableColumn<Cursor, Query, Subtable> extends AbstractColumn<Subtable, Cursor, Query> {

private Subtable subtable;
public class TableColumn<Cursor, Query, Subtable> extends TableQueryColumn<Cursor, Query, Subtable> {

public TableColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name, Class<Subtable> subtableClass) {
super(table, cursor, index, name);
try {
subtable = subtableClass.newInstance();
} catch (Exception e) {
throw new RuntimeException("Cannot create subtable instance!", e);
}
super(table, cursor, index, name, subtableClass);
}

public TableColumn(TableBase table, int index, String name, Class<Subtable> subtableClass) {
super(table, index, name);
try {
subtable = subtableClass.newInstance();
} catch (Exception e) {
throw new RuntimeException("Cannot create subtable instance!", e);
}
super(table, index, name, subtableClass);
}

@Override
Expand All @@ -34,9 +22,4 @@ public void set(Subtable value) {
throw new UnsupportedOperationException(); // FIXME: implement this
}

@Override
public String getReadable() {
return "subtable";
}

}
32 changes: 32 additions & 0 deletions src/main/java/com/tightdb/lib/TableQueryColumn.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.tightdb.lib;

import com.tightdb.TableBase;

public class TableQueryColumn<Cursor, Query, Subtable> extends AbstractColumn<Subtable, Cursor, Query> {

protected Subtable subtable;

public TableQueryColumn(TableBase table, AbstractCursor<Cursor> cursor, int index, String name, Class<Subtable> subtableClass) {
super(table, cursor, index, name);
try {
subtable = subtableClass.newInstance();
} catch (Exception e) {
throw new RuntimeException("Cannot create subtable instance!", e);
}
}

public TableQueryColumn(TableBase table, int index, String name, Class<Subtable> subtableClass) {
super(table, index, name);
try {
subtable = subtableClass.newInstance();
} catch (Exception e) {
throw new RuntimeException("Cannot create subtable instance!", e);
}
}

@Override
public String getReadable() {
return "subtable";
}

}

0 comments on commit cc81b89

Please sign in to comment.