diff options
Diffstat (limited to 'src/main')
4 files changed, 51 insertions, 1 deletions
diff --git a/src/main/java/com/healthmarketscience/jackcess/Table.java b/src/main/java/com/healthmarketscience/jackcess/Table.java index 9eb2b15..5462e80 100644 --- a/src/main/java/com/healthmarketscience/jackcess/Table.java +++ b/src/main/java/com/healthmarketscience/jackcess/Table.java @@ -17,6 +17,7 @@ limitations under the License. package com.healthmarketscience.jackcess; import java.io.IOException; +import java.time.LocalDateTime; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -134,6 +135,21 @@ public interface Table extends Iterable<Row> public PropertyMap getProperties() throws IOException; /** + * @return the created date for this table if available + * @usage _general_method_ + */ + public LocalDateTime getCreatedDate() throws IOException; + + /** + * Note: jackcess <i>does not automatically update the modified date of a + * Table</i>. + * + * @return the last updated date for this table if available + * @usage _general_method_ + */ + public LocalDateTime getUpdatedDate() throws IOException; + + /** * @return All of the Indexes on this table (unmodifiable List) * @usage _intermediate_method_ */ diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/ColumnImpl.java b/src/main/java/com/healthmarketscience/jackcess/impl/ColumnImpl.java index 8387258..8eec0ea 100644 --- a/src/main/java/com/healthmarketscience/jackcess/impl/ColumnImpl.java +++ b/src/main/java/com/healthmarketscience/jackcess/impl/ColumnImpl.java @@ -1143,7 +1143,7 @@ public class ColumnImpl implements Column, Comparable<ColumnImpl>, DateTimeConte return dtc.getDateTimeFactory().toDateDouble(value, dtc); } - private static LocalDateTime toLocalDateTime( + static LocalDateTime toLocalDateTime( Object value, DateTimeContext dtc) { if(value instanceof TemporalAccessor) { return temporalToLocalDateTime((TemporalAccessor)value, dtc); diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java b/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java index b3f3768..80799ef 100644 --- a/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java +++ b/src/main/java/com/healthmarketscience/jackcess/impl/DatabaseImpl.java @@ -32,6 +32,7 @@ import java.nio.file.OpenOption; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.time.ZoneId; import java.util.ArrayList; import java.util.Arrays; @@ -257,6 +258,10 @@ public class DatabaseImpl implements Database, DateTimeContext /** the columns to read when getting object propertyes */ private static Collection<String> SYSTEM_CATALOG_PROPS_COLUMNS = new HashSet<String>(Arrays.asList(CAT_COL_ID, CAT_COL_PROPS)); + /** the columns to read when grabbing dates */ + private static Collection<String> SYSTEM_CATALOG_DATE_COLUMNS = + new HashSet<String>(Arrays.asList(CAT_COL_ID, + CAT_COL_DATE_CREATE, CAT_COL_DATE_UPDATE)); /** regex matching characters which are invalid in identifier names */ private static final Pattern INVALID_IDENTIFIER_CHARS = @@ -1535,6 +1540,24 @@ public class DatabaseImpl implements Database, DateTimeContext objectId, SYSTEM_CATALOG_PROPS_COLUMNS), owner); } + LocalDateTime getCreateDateForObject(int objectId) throws IOException { + return getDateForObject(objectId, CAT_COL_DATE_CREATE); + } + + LocalDateTime getUpdateDateForObject(int objectId) throws IOException { + return getDateForObject(objectId, CAT_COL_DATE_UPDATE); + } + + private LocalDateTime getDateForObject(int objectId, String dateCol) + throws IOException { + Row row = _tableFinder.getObjectRow(objectId, SYSTEM_CATALOG_DATE_COLUMNS); + if(row == null) { + return null; + } + Object date = row.get(dateCol); + return ((date != null) ? ColumnImpl.toLocalDateTime(date, this) : null); + } + private Integer getDbParentId() throws IOException { if(_dbParentId == null) { // need the parent id of the databases objects diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java b/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java index eafa376..d05f640 100644 --- a/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java +++ b/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java @@ -22,6 +22,7 @@ import java.io.StringWriter; import java.nio.BufferOverflowException; import java.nio.ByteBuffer; import java.nio.charset.Charset; +import java.time.LocalDateTime; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; @@ -476,6 +477,16 @@ public class TableImpl implements Table, PropertyMaps.Owner return _props; } + @Override + public LocalDateTime getCreatedDate() throws IOException { + return getDatabase().getCreateDateForObject(_tableDefPageNumber); + } + + @Override + public LocalDateTime getUpdatedDate() throws IOException { + return getDatabase().getUpdateDateForObject(_tableDefPageNumber); + } + /** * @return all PropertyMaps for this table (and columns) * @usage _advanced_method_ |