Java Code Examples for com.healthmarketscience.jackcess.Database#close()

The following examples show how to use com.healthmarketscience.jackcess.Database#close() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: AutoNumberTest.java    From jackcess with Apache License 2.0 7 votes vote down vote up
public void testInsertLongAutoNumberPK() throws Exception
{
  for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) {
    Database db = createMem(fileFormat);

    Table table = new TableBuilder("test")
      .addColumn(new ColumnBuilder("a", DataType.LONG)
                .setAutoNumber(true))
      .addColumn(new ColumnBuilder("b", DataType.TEXT))
      .setPrimaryKey("a")
      .toTable(db);

    doTestInsertLongAutoNumber(table);

    db.close();
  }    
}
 
Example 2
Source File: AutoNumberTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
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)
                .setAutoNumber(true))
      .addColumn(new ColumnBuilder("b", DataType.TEXT))
      .toTable(db);

    doTestAutoNumber(table);

    db.close();
  }
}
 
Example 3
Source File: FKEnforcerTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
public void testNoEnforceForeignKeys() throws Exception {
  for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX)) {

    Database db = openCopy(testDB);
    db.setEnforceForeignKeys(false);
    Table t1 = db.getTable("Table1");
    Table t2 = db.getTable("Table2");
    Table t3 = db.getTable("Table3");

    t1.addRow(20, 0, 20, "some data", 20);

    Cursor c = CursorBuilder.createCursor(t2);
    c.moveToNextRow();
    c.updateCurrentRow(30, "foo30");

    c = CursorBuilder.createCursor(t3);
    c.moveToNextRow();
    c.deleteCurrentRow();

    db.close();
  }
  
}
 
Example 4
Source File: LongValueTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
public void testLongValueAsMiddleColumn() throws Exception
{
  for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) {
    Database db = createMem(fileFormat);
    Table newTable = new TableBuilder("NewTable")
      .addColumn(new ColumnBuilder("a").setSQLType(Types.INTEGER))
      .addColumn(new ColumnBuilder("b").setSQLType(Types.LONGVARCHAR))
      .addColumn(new ColumnBuilder("c").setSQLType(Types.VARCHAR))
      .toTable(db);

    String lval = createString(2000); // "--2000 chars long text--";
    String tval = createString(40); // "--40chars long text--";
    newTable.addRow(new Integer(1), lval, tval);

    newTable = db.getTable("NewTable");
    Map<String, Object> readRow = newTable.getNextRow();
    assertEquals(new Integer(1), readRow.get("a"));
    assertEquals(lval, readRow.get("b"));
    assertEquals(tval, readRow.get("c"));

    db.close();
  }
}
 
Example 5
Source File: LongValueTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
public void testReadLongValue() throws Exception {

    for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.TEST2, true)) {
      Database db = openMem(testDB);
      Table table = db.getTable("MSP_PROJECTS");
      Row row = table.getNextRow();
      assertEquals("Jon Iles this is a a vawesrasoih aksdkl fas dlkjflkasjd flkjaslkdjflkajlksj dfl lkasjdf lkjaskldfj lkas dlk lkjsjdfkl; aslkdf lkasjkldjf lka skldf lka sdkjfl;kasjd falksjdfljaslkdjf laskjdfk jalskjd flkj aslkdjflkjkjasljdflkjas jf;lkasjd fjkas dasdf asd fasdf asdf asdmhf lksaiyudfoi jasodfj902384jsdf9 aw90se fisajldkfj lkasj dlkfslkd jflksjadf as", row.get("PROJ_PROP_AUTHOR"));
      assertEquals("T", row.get("PROJ_PROP_COMPANY"));
      assertEquals("Standard", row.get("PROJ_INFO_CAL_NAME"));
      assertEquals("Project1", row.get("PROJ_PROP_TITLE"));
      byte[] foundBinaryData = row.getBytes("RESERVED_BINARY_DATA");
      byte[] expectedBinaryData =
        toByteArray(new File("src/test/data/test2BinData.dat"));
      assertTrue(Arrays.equals(expectedBinaryData, foundBinaryData));

      db.close();
    }
  }
 
Example 6
Source File: IndexCodesTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
public void x_testReadIsoMdb() throws Exception
  {
//     Database db = open(new File("/tmp/test_ind.mdb"));
//     Database db = open(new File("/tmp/test_ind2.mdb"));
    Database db = open(Database.FileFormat.V2000, new File("/tmp/test_ind3.mdb"));
//     Database db = open(new File("/tmp/test_ind4.mdb"));

    Table t = db.getTable("Table1");
    Index index = t.getIndex("B");
    ((IndexImpl)index).initialize();
    System.out.println("Ind " + index);

    Cursor cursor = CursorBuilder.createCursor(index);
    while(cursor.moveToNextRow()) {
      System.out.println("=======");
      System.out.println("Savepoint: " + cursor.getSavepoint());
      System.out.println("Value: " + cursor.getCurrentRow());
    }

    db.close();
  }
 
Example 7
Source File: IndexCodesTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
public void x_testReadAllCodesMdb() throws Exception
  {
//     Database db = openCopy(new File("/data2/jackcess_test/testAllIndexCodes.mdb"));
//     Database db = openCopy(new File("/data2/jackcess_test/testAllIndexCodes_orig.mdb"));
//     Database db = openCopy(new File("/data2/jackcess_test/testSomeMoreCodes.mdb"));
    Database db = openCopy(Database.FileFormat.V2000, new File("/data2/jackcess_test/testStillMoreCodes.mdb"));
    Table t = db.getTable("Table5");

    Index ind = t.getIndexes().iterator().next();
    ((IndexImpl)ind).initialize();

    System.out.println("Ind " + ind);

    Cursor cursor = CursorBuilder.createCursor(ind);
    while(cursor.moveToNextRow()) {
      System.out.println("=======");
      String entryStr =
        entryToString(cursor.getSavepoint().getCurrentPosition());
      System.out.println("Entry Bytes: " + entryStr);
      System.out.println("Value: " + cursor.getCurrentRow() + "; " +
                         toUnicodeStr(cursor.getCurrentRow().get("data")));
    }

    db.close();
  }
 
Example 8
Source File: IndexCodesTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
public void x_testCreateIsoFile() throws Exception
{
  Database db = create(Database.FileFormat.V2000, true);

  Table t = new TableBuilder("test")
    .addColumn(new ColumnBuilder("row", DataType.TEXT))
    .addColumn(new ColumnBuilder("data", DataType.TEXT))
    .toTable(db);

  for(int i = 0; i < 256; ++i) {
    String str = "AA" + ((char)i) + "AA";
    t.addRow("row" + i, str);
  }

  db.close();
}
 
Example 9
Source File: AutoNumberTest.java    From jackcess with Apache License 2.0 6 votes vote down vote up
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)
                .setAutoNumber(true))
      .addColumn(new ColumnBuilder("b", DataType.TEXT))
      .toTable(db);

    doTestInsertLongAutoNumber(table);

    db.close();
  }    
}
 
Example 10
Source File: IndexCodesTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
public void testIndexCodes() throws Exception
{
  for (final TestDB testDB : TestDB.getSupportedForBasename(Basename.INDEX_CODES, true)) {
    Database db = openMem(testDB);

    for(Table t : db) {
      for(Index index : t.getIndexes()) {
//         System.out.println("Checking " + t.getName() + "." + index.getName());
        checkIndexEntries(testDB, t, index);
      }
    }

    db.close();
  }
}
 
Example 11
Source File: JetFormatTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
public static List<TestDB> getSupportedForBasename(Basename basename,
                                                   boolean readOnly) {

  List<TestDB> supportedTestDBs = new ArrayList<TestDB>();
  for (FileFormat fileFormat :
         (readOnly ? SUPPORTED_FILEFORMATS_FOR_READ :
          SUPPORTED_FILEFORMATS)) {
    File testFile = getFileForBasename(basename, fileFormat);
    if(!testFile.exists()) {
      continue;
    }

    // verify that the db is the file format expected
    try {
      Database db = new DatabaseBuilder(testFile).setReadOnly(true).open();
      FileFormat dbFileFormat = db.getFileFormat();
      db.close();
      if(dbFileFormat != fileFormat) {
        throw new IllegalStateException("Expected " + fileFormat +
                                        " was " + dbFileFormat);
      }
    } catch(Exception e) {
      throw new RuntimeException(e);
    }

    Charset charset = null;
    if(fileFormat == FileFormat.V1997) {
      charset = A97_CHARSET;
    }

    supportedTestDBs.add(new TestDB(testFile, fileFormat, charset));
  }
  return supportedTestDBs;
}
 
Example 12
Source File: JetFormatTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
public void testReadOnlyFormat() throws Exception {

    for (final TestDB testDB : SUPPORTED_DBS_TEST_FOR_READ) {

      Database db = null;
      Exception failure = null;
      try {
        db = openCopy(testDB);

        if(testDB.getExpectedFormat().READ_ONLY) {
          PropertyMap props = db.getUserDefinedProperties();
          props.put("foo", "bar");
          props.save();
        }

      } catch(Exception e) {
        failure = e;
      } finally {
        if(db != null) {
          db.close();
        }
      }

      if(!testDB.getExpectedFormat().READ_ONLY) {
        assertNull(failure);
      } else {
        assertTrue(failure instanceof NonWritableChannelException);
      }

    }
  }
 
Example 13
Source File: DatabaseReadWriteTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
public void testWriteAndReadInMem() throws Exception {
  for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) {
    Database db = createMem(fileFormat);
    doTestWriteAndRead(db);
    db.close();
  }
}
 
Example 14
Source File: UsageMapTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
public void testGobalReferenceUsageMap() throws Exception
{
  Database db = openCopy(
      Database.FileFormat.V2000, 
      new File("src/test/data/V2000/testRefGlobalV2000.mdb"));

  Table t = new TableBuilder("Test2")
    .addColumn(new ColumnBuilder("id", DataType.LONG))
    .addColumn(new ColumnBuilder("data1", DataType.TEXT))
    .addColumn(new ColumnBuilder("data2", DataType.TEXT))
    .toTable(db);


  ((DatabaseImpl)db).getPageChannel().startWrite();
  try {
    List<Object[]> rows = new ArrayList<Object[]>();
    for(int i = 0; i < 300000; ++i) {
      String s1 = "r" + i + "-" + createString(100);
      String s2 = "r" + i + "-" + createString(200);

      rows.add(new Object[]{i, s1, s2});

      if((i % 2000) == 0) {
        t.addRows(rows);
        rows.clear();
      }
    }
  } finally {
    ((DatabaseImpl)db).getPageChannel().finishWrite();
  }

  db.close();
}
 
Example 15
Source File: CodecHandlerTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
private static void doTestCodecHandler(boolean simple) throws Exception
{
  for(Database.FileFormat ff : SUPPORTED_FILEFORMATS) {
    Database db = TestUtil.createFile(ff);
    int pageSize = ((DatabaseImpl)db).getFormat().PAGE_SIZE;
    File dbFile = db.getFile();
    db.close();

    // apply encoding to file
    encodeFile(dbFile, pageSize, simple);

    db = new DatabaseBuilder(dbFile)
      .setCodecProvider(simple ? SIMPLE_PROVIDER : FULL_PROVIDER)
      .open();

    Table t1 = new TableBuilder("test1")
      .addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true))
      .addColumn(new ColumnBuilder("data", DataType.TEXT).setLength(250))
      .setPrimaryKey("id")
      .addIndex(new IndexBuilder("data_idx").addColumns("data"))
      .toTable(db);

    Table t2 = new TableBuilder("test2")
      .addColumn(new ColumnBuilder("id", DataType.LONG).setAutoNumber(true))
      .addColumn(new ColumnBuilder("data", DataType.TEXT).setLength(250))
      .setPrimaryKey("id")
      .addIndex(new IndexBuilder("data_idx").addColumns("data"))
      .toTable(db);

    int autonum = 1;
    for(int i = 1; i < 2; ++i) {
      writeData(t1, t2, autonum, autonum + 100);
      autonum += 100;
    }

    db.close();
  }
}
 
Example 16
Source File: AutoNumberTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
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)
                .setAutoNumber(true))
      .addColumn(new ColumnBuilder("b", DataType.TEXT))
      .toTable(db);

    Object[] row = {null, "row1"};
    assertSame(row, table.addRow(row));
    assertTrue(ColumnImpl.isGUIDValue(row[0]));
    row = table.addRow(13, "row2");
    assertTrue(ColumnImpl.isGUIDValue(row[0]));
    row = table.addRow("flubber", "row3");
    assertTrue(ColumnImpl.isGUIDValue(row[0]));

    Object[] smallRow = {Column.AUTO_NUMBER};
    row = table.addRow(smallRow);
    assertNotSame(row, smallRow);
    assertTrue(ColumnImpl.isGUIDValue(row[0]));

    db.close();
  }
}
 
Example 17
Source File: DatabaseReadWriteTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
public void testWriteAndRead() throws Exception {
  for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) {
    Database db = create(fileFormat);
    doTestWriteAndRead(db);
    db.close();
  }
}
 
Example 18
Source File: DatabaseReadWriteTest.java    From jackcess with Apache License 2.0 5 votes vote down vote up
public void testWriteAndReadInBatch() throws Exception {
  for (final FileFormat fileFormat : SUPPORTED_FILEFORMATS) {
    Database db = createMem(fileFormat);
    createTestTable(db);
    int count = 1000;
    List<Object[]> rows = new ArrayList<Object[]>(count);
    Object[] row = createTestRow();
    for (int i = 0; i < count; i++) {
      rows.add(row);
    }
    Table table = db.getTable("Test");
    table.addRows(rows);
    for (int i = 0; i < count; i++) {
      Map<String, Object> readRow = table.getNextRow();
      assertEquals(row[0], readRow.get("A"));
      assertEquals(row[1], readRow.get("B"));
      assertEquals(row[2], readRow.get("C"));
      assertEquals(row[3], readRow.get("D"));
      assertEquals(row[4], readRow.get("E"));
      assertEquals(row[5], readRow.get("F"));
      assertEquals(row[6], readRow.get("G"));
      assertEquals(row[7], readRow.get("H"));
    }

    db.close();
  }
}
 
Example 19
Source File: DatabaseImpl.java    From jackcess with Apache License 2.0 5 votes vote down vote up
@Override
public void close() throws IOException {
  if(_linkedDbs != null) {
    for(Database linkedDb : _linkedDbs.values()) {
      linkedDb.close();
    }
  }
  _pageChannel.close();
}
 
Example 20
Source File: IndexCodesTest.java    From jackcess with Apache License 2.0 4 votes vote down vote up
public void x_testWriteAllCodesMdb() throws Exception
  {
    Database db = create(Database.FileFormat.V2000, true);

//     Table t = new TableBuilder("Table1")
//       .addColumn(new ColumnBuilder("key", DataType.TEXT))
//       .addColumn(new ColumnBuilder("data", DataType.TEXT))
//       .toTable(db);

//     for(int i = 0; i <= 0xFFFF; ++i) {
//       // skip non-char chars
//       char c = (char)i;
//       if(Character.isHighSurrogate(c) || Character.isLowSurrogate(c)) {
//         continue;
//       }
//       String key = toUnicodeStr(c);
//       String str = "AA" + c + "AA";
//       t.addRow(key, str);
//     }

    Table t = new TableBuilder("Table5")
      .addColumn(new ColumnBuilder("name", DataType.TEXT))
      .addColumn(new ColumnBuilder("data", DataType.TEXT))
      .toTable(db);

    char c = (char)0x3041;   // crazy 7F 02 ... A0
    char c2 = (char)0x30A2;  // crazy 7F 02 ...
    char c3 = (char)0x2045;  // inat 27 ... 1C
    char c4 = (char)0x3043;  // crazy 7F 03 ... A0
    char c5 = (char)0x3046;  // crazy 7F 04 ...
    char c6 = (char)0x30F6;  // crazy 7F 0D ... A0
    char c7 = (char)0x3099;  // unprint 03
    char c8 = (char)0x0041;  // A
    char c9 = (char)0x002D;  // - (unprint)
    char c10 = (char)0x20E1; // unprint F2
    char c11 = (char)0x309A; // unprint 04
    char c12 = (char)0x01C4; // (long extra)
    char c13 = (char)0x005F; // _ (long inline)
    char c14 = (char)0xFFFE; // removed

    char[] cs = new char[]{c7, c8, c3, c12, c13, c14, c, c2, c9};
    addCombos(t, 0, "", cs, 5);

//     t = new TableBuilder("Table2")
//       .addColumn(new ColumnBuilder("data", DataType.TEXT))
//       .toTable(db);

//     writeChars(0x0000, t);

//     t = new TableBuilder("Table3")
//       .addColumn(new ColumnBuilder("data", DataType.TEXT))
//       .toTable(db);

//     writeChars(0x0400, t);


    db.close();
  }