summaryrefslogtreecommitdiffstats
path: root/dozentenmodul
diff options
context:
space:
mode:
authorStephan Schwaer2015-07-14 15:21:26 +0200
committerStephan Schwaer2015-07-14 15:21:26 +0200
commitfbb8f8647c875a95f8a23731cc40b6b92e5c5f82 (patch)
tree9a00d63c9ee77c0c22d30ba3e5cf6eec423440e5 /dozentenmodul
parent[client] first steps towards actually uploading an image through API (diff)
downloadtutor-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.java90
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/ImageListFilter.java39
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;
}
}