aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorJames Ahlborn <jtahlborn@yahoo.com>2021-01-24 17:48:25 +0000
committerJames Ahlborn <jtahlborn@yahoo.com>2021-01-24 17:48:25 +0000
commit253e37fa2d531afb9e8fd706d735bc178a8032cb (patch)
tree9fe3280f4280e3c705c36a0ece191d32d218d1f1 /src/main
parente29399db260fbc2140abca07736b1dd53f8331ed (diff)
downloadjackcess-253e37fa2d531afb9e8fd706d735bc178a8032cb.tar.gz
jackcess-253e37fa2d531afb9e8fd706d735bc178a8032cb.zip
ignore trailing spaces when creating text index entries
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@1361 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/healthmarketscience/jackcess/impl/General97IndexCodes.java10
-rw-r--r--src/main/java/com/healthmarketscience/jackcess/impl/GeneralLegacyIndexCodes.java36
2 files changed, 30 insertions, 16 deletions
diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/General97IndexCodes.java b/src/main/java/com/healthmarketscience/jackcess/impl/General97IndexCodes.java
index 6b68aea..77ebb67 100644
--- a/src/main/java/com/healthmarketscience/jackcess/impl/General97IndexCodes.java
+++ b/src/main/java/com/healthmarketscience/jackcess/impl/General97IndexCodes.java
@@ -99,14 +99,8 @@ public class General97IndexCodes extends GeneralLegacyIndexCodes
Object value, ByteStream bout, boolean isAscending)
throws IOException
{
- // first, convert to string
- String str = ColumnImpl.toCharSequence(value).toString();
-
- // all text columns (including memos) are only indexed up to the max
- // number of chars in a VARCHAR column
- if(str.length() > MAX_TEXT_INDEX_CHAR_LENGTH) {
- str = str.substring(0, MAX_TEXT_INDEX_CHAR_LENGTH);
- }
+ // convert to string
+ String str = toIndexCharSequence(value);
// record previous entry length so we can do any post-processing
// necessary for this entry (handling descending)
diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/GeneralLegacyIndexCodes.java b/src/main/java/com/healthmarketscience/jackcess/impl/GeneralLegacyIndexCodes.java
index d8d763d..0d151e0 100644
--- a/src/main/java/com/healthmarketscience/jackcess/impl/GeneralLegacyIndexCodes.java
+++ b/src/main/java/com/healthmarketscience/jackcess/impl/GeneralLegacyIndexCodes.java
@@ -511,14 +511,8 @@ public class GeneralLegacyIndexCodes {
Object value, ByteStream bout, boolean isAscending)
throws IOException
{
- // first, convert to string
- String str = ColumnImpl.toCharSequence(value).toString();
-
- // all text columns (including memos) are only indexed up to the max
- // number of chars in a VARCHAR column
- if(str.length() > MAX_TEXT_INDEX_CHAR_LENGTH) {
- str = str.substring(0, MAX_TEXT_INDEX_CHAR_LENGTH);
- }
+ // convert to string
+ String str = toIndexCharSequence(value);
// record previous entry length so we can do any post-processing
// necessary for this entry (handling descending)
@@ -641,6 +635,32 @@ public class GeneralLegacyIndexCodes {
bout.write(END_EXTRA_TEXT);
}
+ protected static String toIndexCharSequence(Object value)
+ throws IOException {
+
+ // first, convert to string
+ String str = ColumnImpl.toCharSequence(value).toString();
+
+ // all text columns (including memos) are only indexed up to the max
+ // number of chars in a VARCHAR column
+ int len = str.length();
+ if(len > MAX_TEXT_INDEX_CHAR_LENGTH) {
+ str = str.substring(0, MAX_TEXT_INDEX_CHAR_LENGTH);
+ len = MAX_TEXT_INDEX_CHAR_LENGTH;
+ }
+
+ // trailing spaces are ignored for text index entries
+ if((len > 0) && (str.charAt(len - 1) == ' ')) {
+ do {
+ --len;
+ } while((len > 0) && (str.charAt(len - 1) == ' '));
+
+ str = str.substring(0, len);
+ }
+
+ return str;
+ }
+
/**
* Encodes the given extra code info in the given stream.
*/