diff options
Diffstat (limited to 'src/main/java/com')
3 files changed, 37 insertions, 4 deletions
diff --git a/src/main/java/com/healthmarketscience/jackcess/Database.java b/src/main/java/com/healthmarketscience/jackcess/Database.java index 7e9dd85..7b93c5e 100644 --- a/src/main/java/com/healthmarketscience/jackcess/Database.java +++ b/src/main/java/com/healthmarketscience/jackcess/Database.java @@ -164,6 +164,8 @@ public interface Database extends Iterable<Table>, Closeable, Flushable V2010(".accdb"), /** A database which was created by MS Access 2016+ */ V2016(".accdb"), + /** A database which was created by MS Access 2019+ (Office 365) */ + V2019(".accdb"), /** A database which was created by MS Money */ MSISAM(".mny"); diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java b/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java index 1ff129e..7af0b87 100644 --- a/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java +++ b/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java @@ -123,6 +123,7 @@ public class DatabaseImpl implements Database, DateTimeContext addFileFormatDetails(FileFormat.V2007, "empty2007", JetFormat.VERSION_12); addFileFormatDetails(FileFormat.V2010, "empty2010", JetFormat.VERSION_14); addFileFormatDetails(FileFormat.V2016, "empty2016", JetFormat.VERSION_16); + addFileFormatDetails(FileFormat.V2019, "empty2019", JetFormat.VERSION_17); addFileFormatDetails(FileFormat.MSISAM, null, JetFormat.VERSION_MSISAM); } @@ -189,7 +190,7 @@ public class DatabaseImpl implements Database, DateTimeContext private static final int DB_PARENT_ID = 0xF000000; /** the maximum size of any of the included "empty db" resources */ - private static final long MAX_EMPTYDB_SIZE = 370000L; + private static final long MAX_EMPTYDB_SIZE = 440000L; /** this object is a "system" object */ static final int SYSTEM_OBJECT_FLAG = 0x80000000; diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/JetFormat.java b/src/main/java/com/healthmarketscience/jackcess/impl/JetFormat.java index 8a3aa64..ff3c00f 100644 --- a/src/main/java/com/healthmarketscience/jackcess/impl/JetFormat.java +++ b/src/main/java/com/healthmarketscience/jackcess/impl/JetFormat.java @@ -59,8 +59,10 @@ public abstract class JetFormat { private static final byte CODE_VERSION_12 = 0x2; /** Version code for Jet version 14.0 */ private static final byte CODE_VERSION_14 = 0x3; - /** Version code for Jet version 16.7 */ + /** Version code for Jet version 16.0 */ private static final byte CODE_VERSION_16 = 0x5; + /** Version code for Jet version 17.0 */ + private static final byte CODE_VERSION_17 = 0x6; /** location of the engine name in the header */ public static final int OFFSET_ENGINE_NAME = 0x4; @@ -127,6 +129,9 @@ public abstract class JetFormat { private static final Map<String,Database.FileFormat> POSSIBLE_VERSION_16 = Collections.singletonMap((String)null, Database.FileFormat.V2016); + private static final Map<String,Database.FileFormat> POSSIBLE_VERSION_17 = + Collections.singletonMap((String)null, Database.FileFormat.V2019); + private static final Map<String,Database.FileFormat> POSSIBLE_VERSION_MSISAM = Collections.singletonMap((String)null, Database.FileFormat.MSISAM); @@ -160,8 +165,10 @@ public abstract class JetFormat { public static final JetFormat VERSION_12 = new Jet12Format(); /** the JetFormat constants for the Jet database version "14.0" */ public static final JetFormat VERSION_14 = new Jet14Format(); - /** the JetFormat constants for the Jet database version "16.7" */ + /** the JetFormat constants for the Jet database version "16.0" */ public static final JetFormat VERSION_16 = new Jet16Format(); + /** the JetFormat constants for the Jet database version "17.0" */ + public static final JetFormat VERSION_17 = new Jet17Format(); //These constants are populated by this class's constructor. They can't be //populated by the subclass's constructor because they are final, and Java @@ -306,6 +313,8 @@ public abstract class JetFormat { return VERSION_14; } else if (version == CODE_VERSION_16) { return VERSION_16; + } else if (version == CODE_VERSION_17) { + return VERSION_17; } throw new IOException("Unsupported " + ((version < CODE_VERSION_3) ? "older" : "newer") + @@ -1093,12 +1102,16 @@ public abstract class JetFormat { } } - private static final class Jet16Format extends Jet14Format { + private static class Jet16Format extends Jet14Format { private Jet16Format() { super("VERSION_16"); } + private Jet16Format(String name) { + super(name); + } + @Override public boolean isSupportedDataType(DataType type) { return true; @@ -1115,4 +1128,21 @@ public abstract class JetFormat { } } + private static final class Jet17Format extends Jet16Format { + + private Jet17Format() { + super("VERSION_17"); + } + + @Override + public boolean isSupportedDataType(DataType type) { + return true; + } + + @Override + protected Map<String,Database.FileFormat> getPossibleFileFormats() { + return PossibleFileFormats.POSSIBLE_VERSION_17; + } + } + } |