git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@1337 f203690c-595d-4dc9-a70b-905162fa7fd2tags/jackcess-3.5.1
@@ -4,6 +4,12 @@ | |||
<author email="javajedi@users.sf.net">Tim McCune</author> | |||
</properties> | |||
<body> | |||
<release version="3.5.1" date="TBD"> | |||
<action dev="jahlborn" type="update"> | |||
Add more static utility methods to DatabaseBuilder to enable more | |||
succinct object construction code using static imports. | |||
</action> | |||
</release> | |||
<release version="3.5.0" date="2020-07-31"> | |||
<action dev="jahlborn" type="update"> | |||
Add support for Access 97 general collation order, enabling indexes to |
@@ -360,6 +360,87 @@ public class DatabaseBuilder | |||
return cal; | |||
} | |||
/** | |||
* Convenience method for constructing a DatabaseBuilder. | |||
*/ | |||
public static DatabaseBuilder newDatabase() { | |||
return new DatabaseBuilder(); | |||
} | |||
/** | |||
* Convenience method for constructing a DatabaseBuilder. | |||
*/ | |||
public static DatabaseBuilder newDatabase(Path path) { | |||
return new DatabaseBuilder(path); | |||
} | |||
/** | |||
* Convenience method for constructing a DatabaseBuilder. | |||
*/ | |||
public static DatabaseBuilder newDatabase(File file) { | |||
return new DatabaseBuilder(file); | |||
} | |||
/** | |||
* Convenience method for constructing a TableBuilder. | |||
*/ | |||
public static TableBuilder newTable(String name) { | |||
return new TableBuilder(name); | |||
} | |||
/** | |||
* Convenience method for constructing a TableBuilder. | |||
*/ | |||
public static TableBuilder newTable(String name, boolean escapeIdentifiers) { | |||
return new TableBuilder(name, escapeIdentifiers); | |||
} | |||
/** | |||
* Convenience method for constructing a ColumnBuilder. | |||
*/ | |||
public static ColumnBuilder newColumn(String name) { | |||
return new ColumnBuilder(name); | |||
} | |||
/** | |||
* Convenience method for constructing a TableBuilder. | |||
*/ | |||
public static ColumnBuilder newColumn(String name, DataType type) { | |||
return new ColumnBuilder(name, type); | |||
} | |||
/** | |||
* Convenience method for constructing an IndexBuilder. | |||
*/ | |||
public static IndexBuilder newIndex(String name) { | |||
return new IndexBuilder(name); | |||
} | |||
/** | |||
* Convenience method for constructing a primary key IndexBuilder. | |||
*/ | |||
public static IndexBuilder newPrimaryKey(String... colNames) { | |||
return new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME) | |||
.addColumns(colNames) | |||
.setPrimaryKey(); | |||
} | |||
/** | |||
* Convenience method for constructing a RelationshipBuilder. | |||
*/ | |||
public static RelationshipBuilder newRelationship( | |||
String fromTable, String toTable) { | |||
return new RelationshipBuilder(fromTable, toTable); | |||
} | |||
/** | |||
* Convenience method for constructing a RelationshipBuilder. | |||
*/ | |||
public static RelationshipBuilder newRelationship( | |||
Table fromTable, Table toTable) { | |||
return new RelationshipBuilder(fromTable, toTable); | |||
} | |||
private static Path toPath(File file) { | |||
return ((file != null) ? file.toPath() : null); | |||
} |
@@ -24,6 +24,7 @@ import java.util.stream.Stream; | |||
import java.util.stream.StreamSupport; | |||
import com.healthmarketscience.jackcess.util.ErrorHandler; | |||
import com.healthmarketscience.jackcess.util.OleBlob; | |||
/** | |||
* A single database table. A Table instance is retrieved from a {@link | |||
@@ -324,4 +325,12 @@ public interface Table extends Iterable<Row> | |||
* Convenience method for constructing a new CursorBuilder for this Table. | |||
*/ | |||
public CursorBuilder newCursor(); | |||
/** | |||
* Convenience method for constructing a new OleBlob.Builder. | |||
*/ | |||
default public OleBlob.Builder newBlob() { | |||
return new OleBlob.Builder(); | |||
} | |||
} |
@@ -35,14 +35,14 @@ public class CursorBuilderTest extends TestCase { | |||
{ | |||
assertSame(expected.getTable(), found.getTable()); | |||
if(expected instanceof IndexCursor) { | |||
assertSame(((IndexCursor)expected).getIndex(), | |||
assertSame(((IndexCursor)expected).getIndex(), | |||
((IndexCursor)found).getIndex()); | |||
} | |||
assertEquals(expected.getSavepoint().getCurrentPosition(), | |||
found.getSavepoint().getCurrentPosition()); | |||
} | |||
public void test() throws Exception | |||
{ | |||
for (final TestDB indexCursorDB : CursorTest.INDEX_CURSOR_DBS) { | |||
@@ -53,23 +53,21 @@ public class CursorBuilderTest extends TestCase { | |||
Cursor expected = CursorBuilder.createCursor(table); | |||
Cursor found = new CursorBuilder(table).toCursor(); | |||
Cursor found = table.newCursor().toCursor(); | |||
assertCursor(expected, found); | |||
expected = CursorBuilder.createCursor(idx); | |||
found = new CursorBuilder(table) | |||
.setIndex(idx) | |||
.toCursor(); | |||
found = idx.newCursor().toCursor(); | |||
assertCursor(expected, found); | |||
expected = CursorBuilder.createCursor(idx); | |||
found = new CursorBuilder(table) | |||
found = table.newCursor() | |||
.setIndexByName("id") | |||
.toCursor(); | |||
assertCursor(expected, found); | |||
try { | |||
new CursorBuilder(table) | |||
table.newCursor() | |||
.setIndexByName("foo"); | |||
fail("IllegalArgumentException should have been thrown"); | |||
} catch(IllegalArgumentException ignored) { | |||
@@ -77,13 +75,13 @@ public class CursorBuilderTest extends TestCase { | |||
} | |||
expected = CursorBuilder.createCursor(idx); | |||
found = new CursorBuilder(table) | |||
found = table.newCursor() | |||
.setIndexByColumns(table.getColumn("id")) | |||
.toCursor(); | |||
assertCursor(expected, found); | |||
try { | |||
new CursorBuilder(table) | |||
table.newCursor() | |||
.setIndexByColumns(table.getColumn("value")); | |||
fail("IllegalArgumentException should have been thrown"); | |||
} catch(IllegalArgumentException ignored) { | |||
@@ -91,7 +89,7 @@ public class CursorBuilderTest extends TestCase { | |||
} | |||
try { | |||
new CursorBuilder(table) | |||
table.newCursor() | |||
.setIndexByColumns(table.getColumn("id"), table.getColumn("value")); | |||
fail("IllegalArgumentException should have been thrown"); | |||
} catch(IllegalArgumentException ignored) { | |||
@@ -100,14 +98,14 @@ public class CursorBuilderTest extends TestCase { | |||
expected = CursorBuilder.createCursor(table); | |||
expected.beforeFirst(); | |||
found = new CursorBuilder(table) | |||
found = table.newCursor() | |||
.beforeFirst() | |||
.toCursor(); | |||
assertCursor(expected, found); | |||
expected = CursorBuilder.createCursor(table); | |||
expected.afterLast(); | |||
found = new CursorBuilder(table) | |||
found = table.newCursor() | |||
.afterLast() | |||
.toCursor(); | |||
assertCursor(expected, found); | |||
@@ -115,7 +113,7 @@ public class CursorBuilderTest extends TestCase { | |||
expected = CursorBuilder.createCursor(table); | |||
expected.moveNextRows(2); | |||
Cursor.Savepoint sp = expected.getSavepoint(); | |||
found = new CursorBuilder(table) | |||
found = table.newCursor() | |||
.afterLast() | |||
.restoreSavepoint(sp) | |||
.toCursor(); | |||
@@ -124,8 +122,7 @@ public class CursorBuilderTest extends TestCase { | |||
expected = CursorBuilder.createCursor(idx); | |||
expected.moveNextRows(2); | |||
sp = expected.getSavepoint(); | |||
found = new CursorBuilder(table) | |||
.setIndex(idx) | |||
found = idx.newCursor() | |||
.beforeFirst() | |||
.restoreSavepoint(sp) | |||
.toCursor(); | |||
@@ -134,8 +131,7 @@ public class CursorBuilderTest extends TestCase { | |||
expected = CursorBuilder.createCursor(idx, | |||
idx.constructIndexRowFromEntry(3), | |||
null); | |||
found = new CursorBuilder(table) | |||
.setIndex(idx) | |||
found = idx.newCursor() | |||
.setStartEntry(3) | |||
.toCursor(); | |||
assertCursor(expected, found); | |||
@@ -145,8 +141,7 @@ public class CursorBuilderTest extends TestCase { | |||
false, | |||
idx.constructIndexRowFromEntry(7), | |||
false); | |||
found = new CursorBuilder(table) | |||
.setIndex(idx) | |||
found = idx.newCursor() | |||
.setStartEntry(3) | |||
.setStartRowInclusive(false) | |||
.setEndEntry(7) | |||
@@ -159,5 +154,5 @@ public class CursorBuilderTest extends TestCase { | |||
db.close(); | |||
} | |||
} | |||
} |
@@ -38,6 +38,7 @@ import com.healthmarketscience.jackcess.util.RowFilterTest; | |||
import com.healthmarketscience.jackcess.util.SimpleColumnMatcher; | |||
import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
* @author James Ahlborn | |||
@@ -89,9 +90,9 @@ public class CursorTest extends TestCase { | |||
{ | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("value", DataType.TEXT)) | |||
.toTable(db); | |||
for(Map<String,Object> row : createTestTableData()) { | |||
@@ -147,9 +148,9 @@ public class CursorTest extends TestCase { | |||
{ | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("value", DataType.TEXT)) | |||
.toTable(db); | |||
for(Map<String,Object> row : createDupeTestTableData()) { | |||
@@ -1279,11 +1280,11 @@ public class CursorTest extends TestCase { | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("memo", DataType.MEMO)) | |||
.addIndex(new IndexBuilder("value_idx") | |||
Table table = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("value", DataType.TEXT)) | |||
.addColumn(newColumn("memo", DataType.MEMO)) | |||
.addIndex(newIndex("value_idx") | |||
.addColumns("value")) | |||
.toTable(db); | |||
@@ -1337,13 +1338,13 @@ public class CursorTest extends TestCase { | |||
Database db = createMem(fileFormat); | |||
TableImpl t = (TableImpl)new TableBuilder("Test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("data1", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("num2", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("key3", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT)) | |||
.addIndex(new IndexBuilder("idx3").addColumns("data1", "num2", "key3")) | |||
TableImpl t = (TableImpl)newTable("Test") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("data1", DataType.TEXT)) | |||
.addColumn(newColumn("num2", DataType.LONG)) | |||
.addColumn(newColumn("key3", DataType.TEXT)) | |||
.addColumn(newColumn("value", DataType.TEXT)) | |||
.addIndex(newIndex("idx3").addColumns("data1", "num2", "key3")) | |||
.toTable(db); | |||
Index idx = t.findIndexForColumns(Arrays.asList("data1"), | |||
@@ -1366,7 +1367,7 @@ public class CursorTest extends TestCase { | |||
TableImpl.IndexFeature.EXACT_MATCH)); | |||
new IndexBuilder("idx2") | |||
newIndex("idx2") | |||
.addColumns("data1", "num2") | |||
.addToTable(t); | |||
@@ -1390,7 +1391,7 @@ public class CursorTest extends TestCase { | |||
TableImpl.IndexFeature.EXACT_MATCH)); | |||
new IndexBuilder("idx1") | |||
newIndex("idx1") | |||
.addColumns("data1") | |||
.addToTable(t); | |||
@@ -1421,13 +1422,13 @@ public class CursorTest extends TestCase { | |||
Database db = createMem(fileFormat); | |||
TableImpl t = (TableImpl)new TableBuilder("Test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("data1", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("num2", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("key3", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT)) | |||
.addIndex(new IndexBuilder("idx3") | |||
TableImpl t = (TableImpl)newTable("Test") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("data1", DataType.TEXT)) | |||
.addColumn(newColumn("num2", DataType.LONG)) | |||
.addColumn(newColumn("key3", DataType.TEXT)) | |||
.addColumn(newColumn("value", DataType.TEXT)) | |||
.addIndex(newIndex("idx3") | |||
.addColumns(true, "data1") | |||
.addColumns(false, "num2") | |||
.addColumns(true, "key3") | |||
@@ -1448,13 +1449,13 @@ public class CursorTest extends TestCase { | |||
Index idx = t.getIndex("idx3"); | |||
doPartialIndexLookup(idx); | |||
idx = new IndexBuilder("idx2") | |||
idx = newIndex("idx2") | |||
.addColumns(true, "data1") | |||
.addColumns(false, "num2") | |||
.addToTable(t); | |||
doPartialIndexLookup(idx); | |||
idx = new IndexBuilder("idx1") | |||
idx = newIndex("idx1") | |||
.addColumns(true, "data1") | |||
.addToTable(t); | |||
doPartialIndexLookup(idx); | |||
@@ -1466,7 +1467,7 @@ public class CursorTest extends TestCase { | |||
private static void doPartialIndexLookup(Index idx) throws Exception | |||
{ | |||
int colCount = idx.getColumnCount(); | |||
IndexCursor c = new CursorBuilder(idx.getTable()).setIndex(idx).toIndexCursor(); | |||
IndexCursor c = idx.newCursor().toIndexCursor(); | |||
doFindFirstByEntry(c, 21, "C"); | |||
doFindFirstByEntry(c, null, "Z"); |
@@ -48,6 +48,7 @@ import com.healthmarketscience.jackcess.util.LinkResolver; | |||
import com.healthmarketscience.jackcess.util.RowFilterTest; | |||
import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
@@ -65,16 +66,16 @@ public class DatabaseTest extends TestCase | |||
Database db = create(fileFormat); | |||
try { | |||
new TableBuilder("test").toTable(db); | |||
newTable("test").toTable(db); | |||
fail("created table with no columns?"); | |||
} catch(IllegalArgumentException e) { | |||
// success | |||
} | |||
try { | |||
new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("A", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("a", DataType.MEMO)) | |||
newTable("test") | |||
.addColumn(newColumn("A", DataType.TEXT)) | |||
.addColumn(newColumn("a", DataType.MEMO)) | |||
.toTable(db); | |||
fail("created table with duplicate column names?"); | |||
} catch(IllegalArgumentException e) { | |||
@@ -82,8 +83,8 @@ public class DatabaseTest extends TestCase | |||
} | |||
try { | |||
new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("A", DataType.TEXT) | |||
newTable("test") | |||
.addColumn(newColumn("A", DataType.TEXT) | |||
.setLengthInUnits(352)) | |||
.toTable(db); | |||
fail("created table with invalid column length?"); | |||
@@ -92,22 +93,22 @@ public class DatabaseTest extends TestCase | |||
} | |||
try { | |||
new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("A_" + createString(70), DataType.TEXT)) | |||
newTable("test") | |||
.addColumn(newColumn("A_" + createString(70), DataType.TEXT)) | |||
.toTable(db); | |||
fail("created table with too long column name?"); | |||
} catch(IllegalArgumentException e) { | |||
// success | |||
} | |||
new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("A", DataType.TEXT)) | |||
newTable("test") | |||
.addColumn(newColumn("A", DataType.TEXT)) | |||
.toTable(db); | |||
try { | |||
new TableBuilder("Test") | |||
.addColumn(new ColumnBuilder("A", DataType.TEXT)) | |||
newTable("Test") | |||
.addColumn(newColumn("A", DataType.TEXT)) | |||
.toTable(db); | |||
fail("create duplicate tables?"); | |||
} catch(IllegalArgumentException e) { | |||
@@ -295,7 +296,7 @@ public class DatabaseTest extends TestCase | |||
File bogusFile = new File("fooby-dooby.mdb"); | |||
assertTrue(!bogusFile.exists()); | |||
try { | |||
new DatabaseBuilder(bogusFile).setReadOnly(true). | |||
newDatabase(bogusFile).setReadOnly(true). | |||
setAutoSync(getTestAutoSync()).open(); | |||
fail("FileNotFoundException should have been thrown"); | |||
} catch(FileNotFoundException e) { | |||
@@ -340,8 +341,8 @@ public class DatabaseTest extends TestCase | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("A", DataType.MONEY)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("A", DataType.MONEY)) | |||
.toTable(db); | |||
table.addRow(new BigDecimal("-2341234.03450")); | |||
@@ -378,8 +379,8 @@ public class DatabaseTest extends TestCase | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("A", DataType.GUID)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("A", DataType.GUID)) | |||
.toTable(db); | |||
table.addRow("{32A59F01-AA34-3E29-453F-4523453CD2E6}"); | |||
@@ -420,13 +421,13 @@ public class DatabaseTest extends TestCase | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
ColumnBuilder col = new ColumnBuilder("A", DataType.NUMERIC) | |||
ColumnBuilder col = newColumn("A", DataType.NUMERIC) | |||
.setScale(4).setPrecision(8).toColumn(); | |||
assertTrue(col.getType().isVariableLength()); | |||
Table table = new TableBuilder("test") | |||
Table table = newTable("test") | |||
.addColumn(col) | |||
.addColumn(new ColumnBuilder("B", DataType.NUMERIC) | |||
.addColumn(newColumn("B", DataType.NUMERIC) | |||
.setScale(8).setPrecision(28)) | |||
.toTable(db); | |||
@@ -598,10 +599,10 @@ public class DatabaseTest extends TestCase | |||
for(int i = 0; i < numColumns; ++i) { | |||
String colName = "MyColumnName" + i; | |||
colNames.add(colName); | |||
columns.add(new ColumnBuilder(colName, DataType.TEXT).toColumn()); | |||
columns.add(newColumn(colName, DataType.TEXT).toColumn()); | |||
} | |||
Table t = new TableBuilder("test") | |||
Table t = newTable("test") | |||
.addColumns(columns) | |||
.toTable(db); | |||
@@ -627,9 +628,9 @@ public class DatabaseTest extends TestCase | |||
Database db = createMem(fileFormat); | |||
db.setDateTimeType(DateTimeType.DATE); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("name", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("date", DataType.SHORT_DATE_TIME)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("name", DataType.TEXT)) | |||
.addColumn(newColumn("date", DataType.SHORT_DATE_TIME)) | |||
.toTable(db); | |||
// since jackcess does not really store millis, shave them off before | |||
@@ -699,9 +700,9 @@ public class DatabaseTest extends TestCase | |||
db.setDateTimeType(DateTimeType.DATE); | |||
db.setTimeZone(tz); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("name", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("date", DataType.SHORT_DATE_TIME)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("name", DataType.TEXT)) | |||
.addColumn(newColumn("date", DataType.SHORT_DATE_TIME)) | |||
.toTable(db); | |||
for(String dateStr : dates) { |
@@ -35,6 +35,7 @@ import com.healthmarketscience.jackcess.impl.RowIdImpl; | |||
import com.healthmarketscience.jackcess.impl.TableImpl; | |||
import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
* @author James Ahlborn | |||
@@ -430,11 +431,10 @@ public class IndexTest extends TestCase { | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table t = new TableBuilder("TestTable") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("data", DataType.TEXT)) | |||
.addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME) | |||
.addColumns("id").setPrimaryKey()) | |||
Table t = newTable("TestTable") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("data", DataType.TEXT)) | |||
.setPrimaryKey("id") | |||
.toTable(db); | |||
assertEquals(1, t.getIndexes().size()); | |||
@@ -470,14 +470,13 @@ public class IndexTest extends TestCase { | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table t = new TableBuilder("TestTable") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("data", DataType.TEXT)) | |||
.addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME) | |||
.addColumns("id").setPrimaryKey()) | |||
.addIndex(new IndexBuilder("Index1").addColumns("id")) | |||
.addIndex(new IndexBuilder("Index2").addColumns("id")) | |||
.addIndex(new IndexBuilder("Index3").addColumns(false, "id")) | |||
Table t = newTable("TestTable") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("data", DataType.TEXT)) | |||
.setPrimaryKey("id") | |||
.addIndex(newIndex("Index1").addColumns("id")) | |||
.addIndex(newIndex("Index2").addColumns("id")) | |||
.addIndex(newIndex("Index3").addColumns(false, "id")) | |||
.toTable(db); | |||
assertEquals(4, t.getIndexes().size()); | |||
@@ -554,12 +553,11 @@ public class IndexTest extends TestCase { | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table t = new TableBuilder("TestTable") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("data", DataType.TEXT)) | |||
.addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME) | |||
.addColumns("id").setPrimaryKey()) | |||
.addIndex(new IndexBuilder("data_ind") | |||
Table t = newTable("TestTable") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.addColumn(newColumn("data", DataType.TEXT)) | |||
.setPrimaryKey("id") | |||
.addIndex(newIndex("data_ind") | |||
.addColumns("data").setUnique()) | |||
.toTable(db); | |||
@@ -651,12 +649,11 @@ public class IndexTest extends TestCase { | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table t = new TableBuilder("TestTable") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("data", DataType.TEXT)) | |||
.addIndex(new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME) | |||
.addColumns("id").setPrimaryKey()) | |||
.addIndex(new IndexBuilder("data_ind") | |||
Table t = newTable("TestTable") | |||
.addColumn(newColumn("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(newColumn("data", DataType.TEXT)) | |||
.setPrimaryKey("id") | |||
.addIndex(newIndex("data_ind") | |||
.addColumns("data").setUnique()) | |||
.toTable(db); | |||
@@ -37,6 +37,7 @@ import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; | |||
import static com.healthmarketscience.jackcess.Database.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
* | |||
@@ -54,9 +55,9 @@ public class LocalDateTimeTest extends TestCase | |||
db.setDateTimeType(DateTimeType.LOCAL_DATE_TIME); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("name", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("date", DataType.SHORT_DATE_TIME)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("name", DataType.TEXT)) | |||
.addColumn(newColumn("date", DataType.SHORT_DATE_TIME)) | |||
.toTable(db); | |||
// since jackcess does not really store millis, shave them off before | |||
@@ -125,9 +126,9 @@ public class LocalDateTimeTest extends TestCase | |||
db.setZoneId(zoneId); | |||
db.setDateTimeType(DateTimeType.LOCAL_DATE_TIME); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("name", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("date", DataType.SHORT_DATE_TIME)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("name", DataType.TEXT)) | |||
.addColumn(newColumn("date", DataType.SHORT_DATE_TIME)) | |||
.toTable(db); | |||
for(String dateStr : dates) { | |||
@@ -218,9 +219,9 @@ public class LocalDateTimeTest extends TestCase | |||
db.setZoneId(zoneId); | |||
db.setDateTimeType(DateTimeType.LOCAL_DATE_TIME); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("name", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("date", DataType.SHORT_DATE_TIME)) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("name", DataType.TEXT)) | |||
.addColumn(newColumn("date", DataType.SHORT_DATE_TIME)) | |||
.toTable(db); | |||
// since jackcess does not really store millis, shave them off before |
@@ -33,6 +33,7 @@ import com.healthmarketscience.jackcess.impl.PropertyMaps; | |||
import com.healthmarketscience.jackcess.impl.TableImpl; | |||
import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
* @author James Ahlborn | |||
@@ -279,7 +280,7 @@ public class PropertiesTest extends TestCase | |||
// modify but do not save | |||
db = new DatabaseBuilder(dbFile).open(); | |||
db = open(dbFile); | |||
t = db.getTable("Table1"); | |||
@@ -299,7 +300,7 @@ public class PropertiesTest extends TestCase | |||
// modify and save | |||
db = new DatabaseBuilder(dbFile).open(); | |||
db = open(dbFile); | |||
t = db.getTable("Table1"); | |||
@@ -326,7 +327,7 @@ public class PropertiesTest extends TestCase | |||
// reload saved props | |||
db = new DatabaseBuilder(dbFile).open(); | |||
db = open(dbFile); | |||
t = db.getTable("Table1"); | |||
@@ -360,20 +361,20 @@ public class PropertiesTest extends TestCase | |||
} | |||
File file = TestUtil.createTempFile(false); | |||
Database db = new DatabaseBuilder(file) | |||
Database db = newDatabase(file) | |||
.setFileFormat(ff) | |||
.putUserDefinedProperty("testing", "123") | |||
.create(); | |||
UUID u1 = UUID.randomUUID(); | |||
UUID u2 = UUID.randomUUID(); | |||
Table t = new TableBuilder("Test") | |||
Table t = newTable("Test") | |||
.putProperty("awesome_table", true) | |||
.addColumn(new ColumnBuilder("id", DataType.LONG) | |||
.addColumn(newColumn("id", DataType.LONG) | |||
.setAutoNumber(true) | |||
.putProperty(PropertyMap.REQUIRED_PROP, true) | |||
.putProperty(PropertyMap.GUID_PROP, u1)) | |||
.addColumn(new ColumnBuilder("data", DataType.TEXT) | |||
.addColumn(newColumn("data", DataType.TEXT) | |||
.putProperty(PropertyMap.ALLOW_ZERO_LEN_PROP, false) | |||
.putProperty(PropertyMap.GUID_PROP, u2)) | |||
.toTable(db); | |||
@@ -382,7 +383,7 @@ public class PropertiesTest extends TestCase | |||
db.close(); | |||
db = new DatabaseBuilder(file).open(); | |||
db = open(file); | |||
assertEquals("123", db.getUserDefinedProperties().getValue("testing")); | |||
@@ -411,11 +412,11 @@ public class PropertiesTest extends TestCase | |||
for(final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table t = new TableBuilder("testReq") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG) | |||
Table t = newTable("testReq") | |||
.addColumn(newColumn("id", DataType.LONG) | |||
.setAutoNumber(true) | |||
.putProperty(PropertyMap.REQUIRED_PROP, true)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT) | |||
.addColumn(newColumn("value", DataType.TEXT) | |||
.putProperty(PropertyMap.REQUIRED_PROP, true)) | |||
.toTable(db); | |||
@@ -441,11 +442,11 @@ public class PropertiesTest extends TestCase | |||
assertTable(expectedRows, t); | |||
t = new TableBuilder("testNz") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG) | |||
t = newTable("testNz") | |||
.addColumn(newColumn("id", DataType.LONG) | |||
.setAutoNumber(true) | |||
.putProperty(PropertyMap.REQUIRED_PROP, true)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT) | |||
.addColumn(newColumn("value", DataType.TEXT) | |||
.putProperty(PropertyMap.ALLOW_ZERO_LEN_PROP, false)) | |||
.toTable(db); | |||
@@ -471,11 +472,11 @@ public class PropertiesTest extends TestCase | |||
assertTable(expectedRows, t); | |||
t = new TableBuilder("testReqNz") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG) | |||
t = newTable("testReqNz") | |||
.addColumn(newColumn("id", DataType.LONG) | |||
.setAutoNumber(true) | |||
.putProperty(PropertyMap.REQUIRED_PROP, true)) | |||
.addColumn(new ColumnBuilder("value", DataType.TEXT)) | |||
.addColumn(newColumn("value", DataType.TEXT)) | |||
.toTable(db); | |||
Column col = t.getColumn("value"); |
@@ -36,6 +36,7 @@ import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.Database.*; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
* | |||
@@ -54,12 +55,12 @@ public class PropertyExpressionTest extends TestCase | |||
Database db = create(fileFormat); | |||
db.setEvaluateExpressions(true); | |||
Table t = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("data1", DataType.TEXT) | |||
Table t = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(newColumn("data1", DataType.TEXT) | |||
.putProperty(PropertyMap.DEFAULT_VALUE_PROP, | |||
"=\"FOO \" & \"BAR\"")) | |||
.addColumn(new ColumnBuilder("data2", DataType.LONG) | |||
.addColumn(newColumn("data2", DataType.LONG) | |||
.putProperty(PropertyMap.DEFAULT_VALUE_PROP, | |||
"37")) | |||
.toTable(db); | |||
@@ -118,15 +119,15 @@ public class PropertyExpressionTest extends TestCase | |||
Database db = create(FileFormat.V2016); | |||
db.setEvaluateExpressions(true); | |||
Table t = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("c1", DataType.LONG) | |||
Table t = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(newColumn("c1", DataType.LONG) | |||
.setCalculatedInfo("[c2]+[c3]")) | |||
.addColumn(new ColumnBuilder("c2", DataType.LONG) | |||
.addColumn(newColumn("c2", DataType.LONG) | |||
.setCalculatedInfo("[c3]*5")) | |||
.addColumn(new ColumnBuilder("c3", DataType.LONG) | |||
.addColumn(newColumn("c3", DataType.LONG) | |||
.setCalculatedInfo("[c4]-6")) | |||
.addColumn(new ColumnBuilder("c4", DataType.LONG)) | |||
.addColumn(newColumn("c4", DataType.LONG)) | |||
.toTable(db); | |||
t.addRow(Column.AUTO_NUMBER, null, null, null, 16); | |||
@@ -163,12 +164,12 @@ public class PropertyExpressionTest extends TestCase | |||
Database db = create(fileFormat); | |||
db.setEvaluateExpressions(true); | |||
Table t = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("data1", DataType.LONG) | |||
Table t = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(newColumn("data1", DataType.LONG) | |||
.putProperty(PropertyMap.VALIDATION_RULE_PROP, | |||
">37")) | |||
.addColumn(new ColumnBuilder("data2", DataType.LONG) | |||
.addColumn(newColumn("data2", DataType.LONG) | |||
.putProperty(PropertyMap.VALIDATION_RULE_PROP, | |||
"between 7 and 10") | |||
.putProperty(PropertyMap.VALIDATION_TEXT_PROP, | |||
@@ -236,10 +237,10 @@ public class PropertyExpressionTest extends TestCase | |||
Database db = create(fileFormat); | |||
db.setEvaluateExpressions(true); | |||
Table t = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("data1", DataType.LONG)) | |||
.addColumn(new ColumnBuilder("data2", DataType.LONG)) | |||
Table t = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(newColumn("data1", DataType.LONG)) | |||
.addColumn(newColumn("data2", DataType.LONG)) | |||
.putProperty(PropertyMap.VALIDATION_RULE_PROP, | |||
"([data1] > 10) and ([data2] < 100)") | |||
.putProperty(PropertyMap.VALIDATION_TEXT_PROP, | |||
@@ -322,15 +323,15 @@ public class PropertyExpressionTest extends TestCase | |||
db.setEvaluateExpressions(true); | |||
Table t = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("data1", DataType.TEXT) | |||
Table t = newTable("test") | |||
.addColumn(newColumn("id", DataType.LONG).setAutoNumber(true)) | |||
.addColumn(newColumn("data1", DataType.TEXT) | |||
.putProperty(PropertyMap.DEFAULT_VALUE_PROP, | |||
"=FooFunc()")) | |||
.addColumn(new ColumnBuilder("data2", DataType.TEXT) | |||
.addColumn(newColumn("data2", DataType.TEXT) | |||
.putProperty(PropertyMap.DEFAULT_VALUE_PROP, | |||
"=Date()")) | |||
.addColumn(new ColumnBuilder("data3", DataType.TEXT) | |||
.addColumn(newColumn("data3", DataType.TEXT) | |||
.putProperty(PropertyMap.DEFAULT_VALUE_PROP, | |||
"=Time()")) | |||
.toTable(db); |
@@ -28,6 +28,7 @@ import com.healthmarketscience.jackcess.impl.DatabaseImpl; | |||
import com.healthmarketscience.jackcess.impl.TableImpl; | |||
import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
* | |||
@@ -45,9 +46,9 @@ public class TableUpdaterTest extends TestCase | |||
Database db = create(fileFormat); | |||
doTestUpdating(db, false, true, null); | |||
db.close(); | |||
} | |||
} | |||
} | |||
public void testTableUpdatingOneToOne() throws Exception { | |||
@@ -55,9 +56,9 @@ public class TableUpdaterTest extends TestCase | |||
Database db = create(fileFormat); | |||
doTestUpdating(db, true, true, null); | |||
db.close(); | |||
} | |||
} | |||
} | |||
public void testTableUpdatingNoEnforce() throws Exception { | |||
@@ -65,9 +66,9 @@ public class TableUpdaterTest extends TestCase | |||
Database db = create(fileFormat); | |||
doTestUpdating(db, false, false, null); | |||
db.close(); | |||
} | |||
} | |||
} | |||
public void testTableUpdatingNamedRelationship() throws Exception { | |||
@@ -75,53 +76,51 @@ public class TableUpdaterTest extends TestCase | |||
Database db = create(fileFormat); | |||
doTestUpdating(db, false, true, "FKnun3jvv47l9kyl74h85y8a0if"); | |||
db.close(); | |||
} | |||
} | |||
} | |||
private void doTestUpdating(Database db, boolean oneToOne, boolean enforce, String relationshipName) | |||
private void doTestUpdating(Database db, boolean oneToOne, boolean enforce, String relationshipName) | |||
throws Exception | |||
{ | |||
Table t1 = new TableBuilder("TestTable") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
Table t1 = newTable("TestTable") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.toTable(db); | |||
Table t2 = new TableBuilder("TestTable2") | |||
.addColumn(new ColumnBuilder("id2", DataType.LONG)) | |||
Table t2 = newTable("TestTable2") | |||
.addColumn(newColumn("id2", DataType.LONG)) | |||
.toTable(db); | |||
int t1idxs = 1; | |||
new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME) | |||
.addColumns("id").setPrimaryKey() | |||
newPrimaryKey("id") | |||
.addToTable(t1); | |||
new ColumnBuilder("data", DataType.TEXT) | |||
newColumn("data", DataType.TEXT) | |||
.addToTable(t1); | |||
new ColumnBuilder("bigdata", DataType.MEMO) | |||
newColumn("bigdata", DataType.MEMO) | |||
.addToTable(t1); | |||
new ColumnBuilder("data2", DataType.TEXT) | |||
newColumn("data2", DataType.TEXT) | |||
.addToTable(t2); | |||
new ColumnBuilder("bigdata2", DataType.MEMO) | |||
newColumn("bigdata2", DataType.MEMO) | |||
.addToTable(t2); | |||
int t2idxs = 0; | |||
if(oneToOne) { | |||
++t2idxs; | |||
new IndexBuilder(IndexBuilder.PRIMARY_KEY_NAME) | |||
.addColumns("id2").setPrimaryKey() | |||
newPrimaryKey("id2") | |||
.addToTable(t2); | |||
} | |||
RelationshipBuilder rb = new RelationshipBuilder("TestTable", "TestTable2") | |||
RelationshipBuilder rb = newRelationship("TestTable", "TestTable2") | |||
.addColumns("id", "id2"); | |||
if(enforce) { | |||
++t1idxs; | |||
++t2idxs; | |||
++t2idxs; | |||
rb.setReferentialIntegrity() | |||
.setCascadeDeletes(); | |||
} | |||
if (relationshipName != null) { | |||
rb.setName(relationshipName); | |||
} | |||
@@ -168,7 +167,7 @@ public class TableUpdaterTest extends TestCase | |||
t2.addRow(10, "row10", "row-data10"); | |||
if(enforce) { | |||
fail("ConstraintViolationException should have been thrown"); | |||
} | |||
} | |||
} catch(ConstraintViolationException cv) { | |||
// success | |||
if(!enforce) { throw cv; } | |||
@@ -176,7 +175,7 @@ public class TableUpdaterTest extends TestCase | |||
Row r1 = CursorBuilder.findRowByPrimaryKey(t1, 5); | |||
t1.deleteRow(r1); | |||
int id = 0; | |||
for(Row r : t1) { | |||
assertEquals(id, r.get("id")); | |||
@@ -185,7 +184,7 @@ public class TableUpdaterTest extends TestCase | |||
++id; | |||
} | |||
} | |||
id = 0; | |||
for(Row r : t2) { | |||
assertEquals(id, r.get("id2")); | |||
@@ -201,24 +200,24 @@ public class TableUpdaterTest extends TestCase | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = create(fileFormat); | |||
Table t1 = new TableBuilder("TestTable") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG)) | |||
Table t1 = newTable("TestTable") | |||
.addColumn(newColumn("id", DataType.LONG)) | |||
.toTable(db); | |||
try { | |||
new ColumnBuilder("ID", DataType.TEXT) | |||
newColumn("ID", DataType.TEXT) | |||
.addToTable(t1); | |||
fail("created table with no columns?"); | |||
} catch(IllegalArgumentException e) { | |||
// success | |||
} | |||
Table t2 = new TableBuilder("TestTable2") | |||
.addColumn(new ColumnBuilder("id2", DataType.LONG)) | |||
Table t2 = newTable("TestTable2") | |||
.addColumn(newColumn("id2", DataType.LONG)) | |||
.toTable(db); | |||
try { | |||
new RelationshipBuilder(t1, t2) | |||
newRelationship(t1, t2) | |||
.toRelationship(db); | |||
fail("created rel with no columns?"); | |||
} catch(IllegalArgumentException e) { | |||
@@ -226,16 +225,16 @@ public class TableUpdaterTest extends TestCase | |||
} | |||
try { | |||
new RelationshipBuilder("TestTable", "TestTable2") | |||
newRelationship("TestTable", "TestTable2") | |||
.addColumns("id", "id") | |||
.toRelationship(db); | |||
fail("created rel with wrong columns?"); | |||
} catch(IllegalArgumentException e) { | |||
// success | |||
} | |||
db.close(); | |||
} | |||
} | |||
} | |||
public void testUpdateLargeTableDef() throws Exception | |||
@@ -245,8 +244,8 @@ public class TableUpdaterTest extends TestCase | |||
final int numColumns = 89; | |||
Table t = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("first", DataType.TEXT)) | |||
Table t = newTable("test") | |||
.addColumn(newColumn("first", DataType.TEXT)) | |||
.toTable(db); | |||
List<String> colNames = new ArrayList<String>(); | |||
@@ -255,7 +254,7 @@ public class TableUpdaterTest extends TestCase | |||
String colName = "MyColumnName" + i; | |||
colNames.add(colName); | |||
DataType type = (((i % 3) == 0) ? DataType.MEMO : DataType.TEXT); | |||
new ColumnBuilder(colName, type) | |||
newColumn(colName, type) | |||
.addToTable(t); | |||
} | |||
@@ -274,5 +273,5 @@ public class TableUpdaterTest extends TestCase | |||
db.close(); | |||
} | |||
} | |||
} | |||
} |
@@ -23,14 +23,13 @@ import java.util.Map; | |||
import java.util.UUID; | |||
import com.healthmarketscience.jackcess.Column; | |||
import com.healthmarketscience.jackcess.ColumnBuilder; | |||
import com.healthmarketscience.jackcess.CursorBuilder; | |||
import com.healthmarketscience.jackcess.DataType; | |||
import com.healthmarketscience.jackcess.Database; | |||
import static com.healthmarketscience.jackcess.Database.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
import com.healthmarketscience.jackcess.Row; | |||
import com.healthmarketscience.jackcess.Table; | |||
import com.healthmarketscience.jackcess.TableBuilder; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import com.healthmarketscience.jackcess.complex.ComplexValueForeignKey; | |||
import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; | |||
@@ -48,24 +47,24 @@ public class AutoNumberTest extends TestCase | |||
} | |||
public void testAutoNumber() throws Exception | |||
public void testAutoNumber() throws Exception | |||
{ | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("a", DataType.LONG) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("a", DataType.LONG) | |||
.setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("b", DataType.TEXT)) | |||
.addColumn(newColumn("b", DataType.TEXT)) | |||
.toTable(db); | |||
doTestAutoNumber(table); | |||
db.close(); | |||
} | |||
} | |||
} | |||
public void testAutoNumberPK() throws Exception | |||
public void testAutoNumberPK() throws Exception | |||
{ | |||
for (final TestDB testDB : SUPPORTED_DBS_TEST) { | |||
Database db = openMem(testDB); | |||
@@ -76,7 +75,7 @@ public class AutoNumberTest extends TestCase | |||
db.close(); | |||
} | |||
} | |||
} | |||
private static void doTestAutoNumber(Table table) throws Exception | |||
{ | |||
@@ -98,7 +97,7 @@ public class AutoNumberTest extends TestCase | |||
Object[] smallRow = {Column.AUTO_NUMBER}; | |||
row = table.addRow(smallRow); | |||
assertNotSame(row, smallRow); | |||
assertEquals(6, ((Integer)row[0]).intValue()); | |||
assertEquals(6, ((Integer)row[0]).intValue()); | |||
table.reset(); | |||
@@ -123,18 +122,18 @@ public class AutoNumberTest extends TestCase | |||
"a", 6, | |||
"b", null)); | |||
assertTable(expectedRows, table); | |||
assertTable(expectedRows, table); | |||
} | |||
public void testAutoNumberGuid() throws Exception | |||
public void testAutoNumberGuid() throws Exception | |||
{ | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("a", DataType.GUID) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("a", DataType.GUID) | |||
.setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("b", DataType.TEXT)) | |||
.addColumn(newColumn("b", DataType.TEXT)) | |||
.toTable(db); | |||
Object[] row = {null, "row1"}; | |||
@@ -152,23 +151,23 @@ public class AutoNumberTest extends TestCase | |||
db.close(); | |||
} | |||
} | |||
} | |||
public void testInsertLongAutoNumber() throws Exception | |||
{ | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("a", DataType.LONG) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("a", DataType.LONG) | |||
.setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("b", DataType.TEXT)) | |||
.addColumn(newColumn("b", DataType.TEXT)) | |||
.toTable(db); | |||
doTestInsertLongAutoNumber(table); | |||
db.close(); | |||
} | |||
} | |||
} | |||
public void testInsertLongAutoNumberPK() throws Exception | |||
@@ -176,17 +175,17 @@ public class AutoNumberTest extends TestCase | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("a", DataType.LONG) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("a", DataType.LONG) | |||
.setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("b", DataType.TEXT)) | |||
.addColumn(newColumn("b", DataType.TEXT)) | |||
.setPrimaryKey("a") | |||
.toTable(db); | |||
doTestInsertLongAutoNumber(table); | |||
db.close(); | |||
} | |||
} | |||
} | |||
private static void doTestInsertLongAutoNumber(Table table) throws Exception | |||
@@ -232,7 +231,7 @@ public class AutoNumberTest extends TestCase | |||
assertEquals(13, ((Integer)row[0]).intValue()); | |||
assertEquals(13, ((TableImpl)table).getLastLongAutoNumber()); | |||
try { | |||
table.addRow("not a number", "nope"); | |||
fail("NumberFormatException should have been thrown"); | |||
@@ -265,19 +264,19 @@ public class AutoNumberTest extends TestCase | |||
row13.put("a", 55); | |||
// reset to db-level policy (which in this case is "false") | |||
table.setAllowAutoNumberInsert(null); | |||
table.setAllowAutoNumberInsert(null); | |||
row13 = table.updateRow(row13); // no change, as confirmed by... | |||
assertEquals(-1, row13.get("a")); | |||
assertEquals(45, ((TableImpl)table).getLastLongAutoNumber()); | |||
} | |||
public void testInsertComplexAutoNumber() throws Exception | |||
{ | |||
for(final TestDB testDB : TestDB.getSupportedForBasename(Basename.COMPLEX)) { | |||
Database db = openMem(testDB); | |||
Table t1 = db.getTable("Table1"); | |||
@@ -301,7 +300,7 @@ public class AutoNumberTest extends TestCase | |||
checkAllComplexAutoNums(lastAutoNum, row); | |||
assertEquals(lastAutoNum, ((TableImpl)t1).getLastComplexTypeAutoNumber()); | |||
row = t1.addRow("row5", 5, null, null, 5, 5); | |||
checkAllComplexAutoNums(5, row); | |||
@@ -341,7 +340,7 @@ public class AutoNumberTest extends TestCase | |||
checkAllComplexAutoNums(14, row); | |||
assertEquals(14, ((TableImpl)t1).getLastComplexTypeAutoNumber()); | |||
Row row13 = CursorBuilder.findRow( | |||
t1, Collections.singletonMap("id", "row13")); | |||
@@ -352,7 +351,7 @@ public class AutoNumberTest extends TestCase | |||
checkAllComplexAutoNums(45, row13); | |||
assertEquals(45, ((TableImpl)t1).getLastComplexTypeAutoNumber()); | |||
row13.put("attach-data", -1); | |||
try { | |||
@@ -403,15 +402,15 @@ public class AutoNumberTest extends TestCase | |||
assertEquals(expected, ((Number)row.get("attach-data")).intValue()); | |||
} | |||
public void testInsertGuidAutoNumber() throws Exception | |||
public void testInsertGuidAutoNumber() throws Exception | |||
{ | |||
for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) { | |||
Database db = createMem(fileFormat); | |||
Table table = new TableBuilder("test") | |||
.addColumn(new ColumnBuilder("a", DataType.GUID) | |||
Table table = newTable("test") | |||
.addColumn(newColumn("a", DataType.GUID) | |||
.setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("b", DataType.TEXT)) | |||
.addColumn(newColumn("b", DataType.TEXT)) | |||
.toTable(db); | |||
db.setAllowAutoNumberInsert(true); | |||
@@ -433,11 +432,11 @@ public class AutoNumberTest extends TestCase | |||
table.setAllowAutoNumberInsert(null); | |||
assertTrue(table.isAllowAutoNumberInsert()); | |||
Row row2 = CursorBuilder.findRow( | |||
table, Collections.singletonMap("b", "row2")); | |||
assertEquals("row2", row2.getString("b")); | |||
String row2Guid = row2.getString("a"); | |||
table.deleteRow(row2); | |||
@@ -484,6 +483,6 @@ public class AutoNumberTest extends TestCase | |||
db.close(); | |||
} | |||
} | |||
} | |||
} |
@@ -23,17 +23,14 @@ import java.util.List; | |||
import java.util.Map; | |||
import com.healthmarketscience.jackcess.Column; | |||
import com.healthmarketscience.jackcess.ColumnBuilder; | |||
import com.healthmarketscience.jackcess.Cursor; | |||
import com.healthmarketscience.jackcess.CursorBuilder; | |||
import com.healthmarketscience.jackcess.DataType; | |||
import com.healthmarketscience.jackcess.Database; | |||
import com.healthmarketscience.jackcess.IndexBuilder; | |||
import com.healthmarketscience.jackcess.Table; | |||
import com.healthmarketscience.jackcess.TableBuilder; | |||
import junit.framework.TestCase; | |||
import static com.healthmarketscience.jackcess.TestUtil.*; | |||
import static com.healthmarketscience.jackcess.impl.JetFormatTest.*; | |||
import static com.healthmarketscience.jackcess.DatabaseBuilder.*; | |||
/** | |||
* | |||
@@ -58,18 +55,18 @@ public class BigIntTest extends TestCase | |||
Database db = create(fileFormat); | |||
Table t = new TableBuilder("Test") | |||
.addColumn(new ColumnBuilder("id", DataType.LONG) | |||
Table t = newTable("Test") | |||
.addColumn(newColumn("id", DataType.LONG) | |||
.setAutoNumber(true)) | |||
.addColumn(new ColumnBuilder("data1", DataType.TEXT)) | |||
.addColumn(new ColumnBuilder("num1", DataType.BIG_INT)) | |||
.addIndex(new IndexBuilder("idx").addColumns("num1")) | |||
.addColumn(newColumn("data1", DataType.TEXT)) | |||
.addColumn(newColumn("num1", DataType.BIG_INT)) | |||
.addIndex(newIndex("idx").addColumns("num1")) | |||
.toTable(db); | |||
long[] vals = new long[] { | |||
0L, -10L, 3844L, -45309590834L, 50392084913L, 65000L, -6489273L}; | |||
List<Map<String, Object>> expectedTable = | |||
List<Map<String, Object>> expectedTable = | |||
new ArrayList<Map<String, Object>>(); | |||
int idx = 1; | |||
@@ -83,7 +80,7 @@ public class BigIntTest extends TestCase | |||
} | |||
Collections.sort(expectedTable, new Comparator<Map<String, Object>>() { | |||
public int compare( | |||
@Override public int compare( | |||
Map<String, Object> r1, | |||
Map<String, Object> r2) { | |||
Long l1 = (Long)r1.get("num1"); | |||
@@ -91,8 +88,8 @@ public class BigIntTest extends TestCase | |||
return l1.compareTo(l2); | |||
} | |||
}); | |||
Cursor c = new CursorBuilder(t).setIndexByName("idx").toIndexCursor(); | |||
Cursor c = t.newCursor().setIndexByName("idx").toIndexCursor(); | |||
assertCursor(expectedTable, c); | |||
@@ -66,7 +66,7 @@ public class OleBlobTest extends TestCase | |||
OleBlob blob = null; | |||
try { | |||
blob = new OleBlob.Builder() | |||
blob = t.newBlob() | |||
.setSimplePackage(sampleFile) | |||
.toBlob(); | |||
t.addRow(1, blob); | |||
@@ -75,7 +75,7 @@ public class OleBlobTest extends TestCase | |||
} | |||
try { | |||
blob = new OleBlob.Builder() | |||
blob = t.newBlob() | |||
.setLink(sampleFile) | |||
.toBlob(); | |||
t.addRow(2, blob); | |||
@@ -84,7 +84,7 @@ public class OleBlobTest extends TestCase | |||
} | |||
try { | |||
blob = new OleBlob.Builder() | |||
blob = t.newBlob() | |||
.setPackagePrettyName("Text File") | |||
.setPackageClassName("Text.File") | |||
.setPackageTypeName("TextFile") |