Texttové sloupce volají třídění s klíčovým slovem "czech", ostatní je
"auto". closes #84
This commit is contained in:
@@ -8,10 +8,10 @@ public class CzechSortListheader extends Listheader {
|
||||
@Override
|
||||
public void setSort(String type) {
|
||||
|
||||
if (type.startsWith("auto"))
|
||||
if (type.startsWith("czech"))
|
||||
{
|
||||
// czech(propertyName)
|
||||
String propertyName = type.substring("auto(".length(), type.length() - 1);
|
||||
String propertyName = type.substring("czech(".length(), type.length() - 1);
|
||||
this.setSortAscending(new CzechStringComparator(propertyName, true));
|
||||
this.setSortDescending(new CzechStringComparator(propertyName, false));
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ import java.text.ParseException;
|
||||
import java.text.RuleBasedCollator;
|
||||
import java.util.Comparator;
|
||||
|
||||
import org.zkoss.zk.ui.util.Clients;
|
||||
|
||||
public class CzechStringComparator implements Comparator<Object> {
|
||||
private String m_rule;
|
||||
private final String m_property;
|
||||
@@ -16,6 +18,7 @@ public class CzechStringComparator implements Comparator<Object> {
|
||||
|
||||
public CzechStringComparator(String property, boolean ascending) {
|
||||
m_rule = "";
|
||||
m_rule += "< 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 ";
|
||||
m_rule += "< A,a < Á,á < Ä,ä ";
|
||||
m_rule += "< B,b ";
|
||||
m_rule += "< C,c < Ć,ć < Č,č ";
|
||||
@@ -50,7 +53,6 @@ public class CzechStringComparator implements Comparator<Object> {
|
||||
|
||||
@Override
|
||||
public int compare(Object argL, Object argR) {
|
||||
|
||||
try {
|
||||
return this.internalCompare(argL, argR);
|
||||
|
||||
@@ -87,29 +89,31 @@ public class CzechStringComparator implements Comparator<Object> {
|
||||
Object valR = m_getter.invoke(argR);
|
||||
boolean isNullValL = (valL == null);
|
||||
boolean isNullValR = (valR == null);
|
||||
|
||||
|
||||
int result = 0;
|
||||
|
||||
if (isNullValL || isNullValR)
|
||||
{
|
||||
if (isNullValL && isNullValR)
|
||||
{
|
||||
|
||||
if (isNullValL || isNullValR) {
|
||||
if (isNullValL && isNullValR) {
|
||||
result = 0;
|
||||
}
|
||||
else if (isNullValL)
|
||||
{
|
||||
} else if (isNullValL) {
|
||||
result = -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
result = 1;
|
||||
}
|
||||
} else {
|
||||
|
||||
if (valL instanceof String) {
|
||||
result = m_comparator.compare(valL, valR);
|
||||
} else {
|
||||
String className = valL.getClass().getName();
|
||||
Clients.alert(
|
||||
"Nepodporovaný datový typ '"
|
||||
+ className
|
||||
+ "' pro třídění 'sort=czech(...)'. Použít 'sort=auto(...)'",
|
||||
"Franta", Clients.NOTIFICATION_TYPE_WARNING);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result = m_comparator.compare(valL, valR);
|
||||
}
|
||||
|
||||
|
||||
return (m_ascending ? result : -result);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user