|
|
@ -7,6 +7,8 @@ import java.text.ParseException;
|
|
|
|
import java.text.RuleBasedCollator;
|
|
|
|
import java.text.RuleBasedCollator;
|
|
|
|
import java.util.Comparator;
|
|
|
|
import java.util.Comparator;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.zkoss.zk.ui.util.Clients;
|
|
|
|
|
|
|
|
|
|
|
|
public class CzechStringComparator implements Comparator<Object> {
|
|
|
|
public class CzechStringComparator implements Comparator<Object> {
|
|
|
|
private String m_rule;
|
|
|
|
private String m_rule;
|
|
|
|
private final String m_property;
|
|
|
|
private final String m_property;
|
|
|
@ -16,6 +18,7 @@ public class CzechStringComparator implements Comparator<Object> {
|
|
|
|
|
|
|
|
|
|
|
|
public CzechStringComparator(String property, boolean ascending) {
|
|
|
|
public CzechStringComparator(String property, boolean ascending) {
|
|
|
|
m_rule = "";
|
|
|
|
m_rule = "";
|
|
|
|
|
|
|
|
m_rule += "< 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9 ";
|
|
|
|
m_rule += "< A,a < Á,á < Ä,ä ";
|
|
|
|
m_rule += "< A,a < Á,á < Ä,ä ";
|
|
|
|
m_rule += "< B,b ";
|
|
|
|
m_rule += "< B,b ";
|
|
|
|
m_rule += "< C,c < Ć,ć < Č,č ";
|
|
|
|
m_rule += "< C,c < Ć,ć < Č,č ";
|
|
|
@ -50,7 +53,6 @@ public class CzechStringComparator implements Comparator<Object> {
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
@Override
|
|
|
|
public int compare(Object argL, Object argR) {
|
|
|
|
public int compare(Object argL, Object argR) {
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
return this.internalCompare(argL, argR);
|
|
|
|
return this.internalCompare(argL, argR);
|
|
|
|
|
|
|
|
|
|
|
@ -87,29 +89,31 @@ public class CzechStringComparator implements Comparator<Object> {
|
|
|
|
Object valR = m_getter.invoke(argR);
|
|
|
|
Object valR = m_getter.invoke(argR);
|
|
|
|
boolean isNullValL = (valL == null);
|
|
|
|
boolean isNullValL = (valL == null);
|
|
|
|
boolean isNullValR = (valR == null);
|
|
|
|
boolean isNullValR = (valR == null);
|
|
|
|
|
|
|
|
|
|
|
|
int result = 0;
|
|
|
|
int result = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if (isNullValL || isNullValR)
|
|
|
|
if (isNullValL || isNullValR) {
|
|
|
|
{
|
|
|
|
if (isNullValL && isNullValR) {
|
|
|
|
if (isNullValL && isNullValR)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
result = 0;
|
|
|
|
result = 0;
|
|
|
|
}
|
|
|
|
} else if (isNullValL) {
|
|
|
|
else if (isNullValL)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
result = -1;
|
|
|
|
result = -1;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
result = 1;
|
|
|
|
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);
|
|
|
|
return (m_ascending ? result : -result);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|