diff options
author | Stephan Schwaer | 2015-07-14 15:21:26 +0200 |
---|---|---|
committer | Stephan Schwaer | 2015-07-14 15:21:26 +0200 |
commit | fbb8f8647c875a95f8a23731cc40b6b92e5c5f82 (patch) | |
tree | 9a00d63c9ee77c0c22d30ba3e5cf6eec423440e5 /dozentenmodul | |
parent | [client] first steps towards actually uploading an image through API (diff) | |
download | tutor-module-fbb8f8647c875a95f8a23731cc40b6b92e5c5f82.tar.gz tutor-module-fbb8f8647c875a95f8a23731cc40b6b92e5c5f82.tar.xz tutor-module-fbb8f8647c875a95f8a23731cc40b6b92e5c5f82.zip |
[client] Filter now is case insensitive. Filter and ordering now stable with unset image fields. Cleaned up filter and ordering code.
Diffstat (limited to 'dozentenmodul')
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListComparator.java | 90 | ||||
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListFilter.java | 39 |
2 files changed, 66 insertions, 63 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListComparator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListComparator.java index 8b8106de..75031beb 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListComparator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListComparator.java @@ -8,78 +8,76 @@ import org.openslx.bwlp.thrift.iface.OperatingSystem; import org.openslx.dozmod.thrift.MetaDataCache; public class ImageListComparator extends ViewerComparator{ - private int propertyIndex; + private int tableColumn; private static final int DESCENDING = 1; - private int direction = DESCENDING; + + // possible columns + private static final int IMAGENAME = 0; + private static final int OS = 1; + private static final int OWNER = 2; + private static final int UPDATETIME = 3; + private static final int FILESIZE = 4; + + private int direction; public ImageListComparator() { - this.propertyIndex = 0; - direction = DESCENDING; + this.tableColumn = 0; + this.direction = DESCENDING; } public int getDirection() { return direction == 1 ? SWT.DOWN : SWT.UP; } - public void setColumn(int column) { - if (column == this.propertyIndex) { + if (column == this.tableColumn) { // Same column as last sort; toggle the direction direction = 1 - direction; } else { // New column; do an ascending sort - this.propertyIndex = column; + this.tableColumn = column; direction = DESCENDING; } } - - // for ordering the columns @Override public int compare(Viewer viewer, Object e1, Object e2) { ImageSummaryRead i1 = (ImageSummaryRead) e1; ImageSummaryRead i2 = (ImageSummaryRead) e2; - int rc = 0; - switch (propertyIndex) { - case 0: - rc = i1.getImageName().compareTo(i2.getImageName()); - break; - case 1: - OperatingSystem os1 = MetaDataCache.getOsById(i1.getOsId()); - OperatingSystem os2 = MetaDataCache.getOsById(i2.getOsId()); - rc = os1.getOsName().compareTo(os2.getOsName()); - break; - case 2: - rc = i1.getOwnerId().compareTo(i2.getOwnerId()); - break; - case 3: - long time1 = i1.getUpdateTime(); - long time2 = i2.getUpdateTime(); - if ( time1 < time2) { - rc = -1; - } else if (time1 == time2){ - rc = 0; - } else rc = 1; - break; - case 4: - long size1 = i1.getFileSize(); - long size2 = i2.getFileSize(); - if ( size1 < size2) { - rc = -1; - } else if (size1 == size2){ - rc = 0; - } else rc = 1; - break; - default: - rc = 0; + int comparisonResult = 0; + try { + // Decide how to compare depending on the column index + switch (tableColumn) { + case IMAGENAME: + comparisonResult = i1.getImageName().compareTo(i2.getImageName()); + break; + case OS: + OperatingSystem os1 = MetaDataCache.getOsById(i1.getOsId()); + OperatingSystem os2 = MetaDataCache.getOsById(i2.getOsId()); + comparisonResult = os1.getOsName().compareTo(os2.getOsName()); + break; + case OWNER: + comparisonResult = i1.getOwnerId().compareTo(i2.getOwnerId()); + break; + case UPDATETIME: + comparisonResult = Long.compare(i1.getUpdateTime(),i2.getUpdateTime()); + break; + case FILESIZE: + comparisonResult = Long.compare(i1.getFileSize(), i2.getFileSize()); + break; + default: + comparisonResult = 0; + } + + } catch (Exception e) { + // Don't order if something went wrong (field not set) + return -100; } // If descending order, flip the direction if (direction == DESCENDING) { - rc = -rc; + comparisonResult = -comparisonResult; } - return rc; + return comparisonResult; } - - } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListFilter.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListFilter.java index 7ccce840..2e3860cb 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListFilter.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListFilter.java @@ -19,26 +19,31 @@ public class ImageListFilter extends ViewerFilter { this.searchString = ".*" + s + ".*"; } + // Determine whether to select the element depending on search string @Override public boolean select(Viewer viewer, Object parentElement, Object element) { - if (searchString == null || searchString.length() == 0) { - return true; + try { + if (searchString == null || searchString.length() == 0) { + return true; + } + ImageSummaryRead i = (ImageSummaryRead) element; + if (i.getImageName().toLowerCase().matches(searchString.toLowerCase())) { + return true; + } + + // TODO fix when resolving owner id in table + if (i.getOwnerId().toLowerCase().matches(searchString.toLowerCase())) { + return true; + } + + OperatingSystem os = MetaDataCache.getOsById(i.getOsId()); + if (os.getOsName().toLowerCase().matches(searchString.toLowerCase())) { + return true; + } + } catch (Exception e) { + // Don't show if something went wrong -> field probably not set + return false; } - ImageSummaryRead i = (ImageSummaryRead) element; - if (i.getImageName().matches(searchString)) { - return true; - } - - // TODO fix when resolving owner id in table - if (i.getOwnerId().matches(searchString)) { - return true; - } - - OperatingSystem os = MetaDataCache.getOsById(i.getOsId()); - if (os.getOsName().matches(searchString)) { - return true; - } - return false; } } |