]> source.dussan.org Git - jackcess.git/commitdiff
add method to grab default sort order
authorJames Ahlborn <jtahlborn@yahoo.com>
Thu, 31 Mar 2011 03:58:26 +0000 (03:58 +0000)
committerJames Ahlborn <jtahlborn@yahoo.com>
Thu, 31 Mar 2011 03:58:26 +0000 (03:58 +0000)
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@541 f203690c-595d-4dc9-a70b-905162fa7fd2

src/java/com/healthmarketscience/jackcess/Database.java
src/java/com/healthmarketscience/jackcess/JetFormat.java
test/src/java/com/healthmarketscience/jackcess/DatabaseTest.java

index 5915d2c197db5b73b79dd4e0b0be30cfd7e9484e..9fd6b3bc736cae7c3e42db13b156e073f516dc9b 100644 (file)
@@ -398,6 +398,8 @@ public class Database
   private Charset _charset;
   /** timezone to use when handling dates */
   private TimeZone _timeZone;
+  /** language sort order to be used for textual columns */
+  private Short _defaultSortOrder;
   /** the ordering used for table columns */
   private Table.ColumnOrder _columnOrder;
   /** cache of in-use tables */
@@ -887,6 +889,19 @@ public class Database
     return _fileFormat;
   }
 
+  /**
+   * @return the currently configured database default language sort order for
+   *         textual columns
+   */
+  public short getDefaultSortOrder() throws IOException {
+
+    if(_defaultSortOrder == null) {
+      _pageChannel.readPage(_buffer, 0);
+      _defaultSortOrder = _buffer.getShort(_format.OFFSET_SORT_ORDER);
+    }
+    return _defaultSortOrder;
+  }
+  
   /**
    * @return a PropertyMaps instance decoded from the given bytes (always
    *         returns non-{@code null} result).
index dbe3e47b9d669047caf9654b37eed5f911429190..f319b24b902148d396455e69961dc01a63549985 100644 (file)
@@ -175,6 +175,7 @@ public abstract class JetFormat {
   public final int OFFSET_HEADER_DATE;
   public final int OFFSET_PASSWORD;
   public final int SIZE_PASSWORD;
+  public final int OFFSET_SORT_ORDER;
   public final int OFFSET_ENCODING_KEY;
   public final int OFFSET_NEXT_TABLE_DEF_PAGE;
   public final int OFFSET_NUM_ROWS;
@@ -300,6 +301,7 @@ public abstract class JetFormat {
     OFFSET_HEADER_DATE = defineOffsetHeaderDate();
     OFFSET_PASSWORD = defineOffsetPassword();
     SIZE_PASSWORD = defineSizePassword();
+    OFFSET_SORT_ORDER = defineOffsetSortOrder();
     OFFSET_ENCODING_KEY = defineOffsetEncodingKey();
     OFFSET_NEXT_TABLE_DEF_PAGE = defineOffsetNextTableDefPage();
     OFFSET_NUM_ROWS = defineOffsetNumRows();
@@ -393,6 +395,7 @@ public abstract class JetFormat {
   protected abstract int defineOffsetHeaderDate();
   protected abstract int defineOffsetPassword();
   protected abstract int defineSizePassword();
+  protected abstract int defineOffsetSortOrder();
   protected abstract int defineOffsetEncodingKey();
   protected abstract int defineOffsetNextTableDefPage();
   protected abstract int defineOffsetNumRows();
@@ -520,6 +523,8 @@ public abstract class JetFormat {
     @Override
     protected int defineSizePassword() { return 20; }
     @Override
+    protected int defineOffsetSortOrder() { return 58; }
+    @Override
     protected int defineOffsetEncodingKey() { return 62; }
     @Override
     protected int defineOffsetNextTableDefPage() { return 4; }
@@ -715,6 +720,8 @@ public abstract class JetFormat {
     @Override
     protected int defineSizePassword() { return 40; }
     @Override
+    protected int defineOffsetSortOrder() { return 110; }
+    @Override
     protected int defineOffsetEncodingKey() { return 62; }
     @Override
     protected int defineOffsetNextTableDefPage() { return 4; }
index 367d66935d528a4e60c838ac7dcd47e25a13c03d..7c1dbe3bbc651375c2effbbf8a1a7b632efae82d 100644 (file)
@@ -1130,6 +1130,16 @@ public class DatabaseTest extends TestCase {
       db.close();
     }
   }
+
+  public void testDbSortOrder() throws Exception {
+
+    for (final TestDB testDB : SUPPORTED_DBS_TEST_FOR_READ) {
+
+      Database db = open(testDB);
+      assertEquals(Column.GENERAL_SORT_ORDER, db.getDefaultSortOrder());
+      db.close();
+    }
+  }
     
   static Object[] createTestRow(String col1Val) {
     return new Object[] {col1Val, "R", "McCune", 1234, (byte) 0xad, 555.66d,