diff options
author | James Ahlborn <jtahlborn@yahoo.com> | 2011-07-16 02:39:50 +0000 |
---|---|---|
committer | James Ahlborn <jtahlborn@yahoo.com> | 2011-07-16 02:39:50 +0000 |
commit | 599d2da23e2d88632133ab178ad3e23cdc204753 (patch) | |
tree | 7914b220881fbeabc2dc1848361632f7aeedb9f7 /src | |
parent | 150cf4f38bc6f05bfa8e28696d65943e5f4daca5 (diff) | |
download | jackcess-599d2da23e2d88632133ab178ad3e23cdc204753.tar.gz jackcess-599d2da23e2d88632133ab178ad3e23cdc204753.zip |
add some methods to approximate table size
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@569 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'src')
-rw-r--r-- | src/changes/changes.xml | 3 | ||||
-rw-r--r-- | src/java/com/healthmarketscience/jackcess/IndexData.java | 7 | ||||
-rw-r--r-- | src/java/com/healthmarketscience/jackcess/Table.java | 23 | ||||
-rw-r--r-- | src/java/com/healthmarketscience/jackcess/UsageMap.java | 4 |
4 files changed, 37 insertions, 0 deletions
diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 3f86887..564cee4 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -15,6 +15,9 @@ <action dev="jahlborn" type="update"> Enable basic handling of unsupported data types as binary content. </action> + <action dev="jahlborn" type="update"> + Add methods to approximate table size. + </action> </release> <release version="1.2.4" date="2011-05-14"> <action dev="jahlborn" type="update"> diff --git a/src/java/com/healthmarketscience/jackcess/IndexData.java b/src/java/com/healthmarketscience/jackcess/IndexData.java index 93f4ad5..11b7b0a 100644 --- a/src/java/com/healthmarketscience/jackcess/IndexData.java +++ b/src/java/com/healthmarketscience/jackcess/IndexData.java @@ -330,6 +330,13 @@ public abstract class IndexData { return _maxPageEntrySize; } + /** + * Returns the number of database pages owned by this index data. + */ + public int getOwnedPageCount() { + return _ownedPages.getPageCount(); + } + void addOwnedPage(int pageNumber) throws IOException { _ownedPages.addPageNumber(pageNumber); } diff --git a/src/java/com/healthmarketscience/jackcess/Table.java b/src/java/com/healthmarketscience/jackcess/Table.java index 34b3c27..b007753 100644 --- a/src/java/com/healthmarketscience/jackcess/Table.java +++ b/src/java/com/healthmarketscience/jackcess/Table.java @@ -289,6 +289,29 @@ public class Table protected UsageMap.PageCursor getOwnedPagesCursor() { return _ownedPages.cursor(); } + + /** + * Returns the <i>approximate</i> number of database pages owned by this + * table and all related indexes (this number does <i>not</i> take into + * account pages used for large OLE/MEMO fields). + * <p> + * To calculate the approximate number of bytes owned by a table: + * <code> + * int approxTableBytes = (table.getApproximateOwnedPageCount() * + * table.getFormat().PAGE_SIZE); + * </code> + */ + public int getApproximateOwnedPageCount() { + // add a page for the table def (although that might actually be more than + // one page) + int count = _ownedPages.getPageCount() + 1; + // note, we count owned pages from _physical_ indexes, not logical indexes + // (otherwise we could double count pages) + for(IndexData indexData : _indexDatas) { + count += indexData.getOwnedPageCount(); + } + return count; + } protected TempPageHolder getLongValueBuffer() { return _longValueBufferH; diff --git a/src/java/com/healthmarketscience/jackcess/UsageMap.java b/src/java/com/healthmarketscience/jackcess/UsageMap.java index d60141e..931891e 100644 --- a/src/java/com/healthmarketscience/jackcess/UsageMap.java +++ b/src/java/com/healthmarketscience/jackcess/UsageMap.java @@ -150,6 +150,10 @@ public class UsageMap return new PageCursor(); } + public int getPageCount() { + return _pageNumbers.cardinality(); + } + protected short getRowStart() { return _rowStart; } |