BF [ 1672820 ] Sorting should be language-sensitive
http://sourceforge.net/tracker/index.php?func=detail&aid=1672820&group_id=176962&atid=879332
This commit is contained in:
parent
8e244d6190
commit
6720dfbf02
|
|
@ -19,6 +19,7 @@ package org.compiere.util;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.Timestamp;
|
import java.sql.Timestamp;
|
||||||
|
import java.text.Collator;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -45,6 +46,8 @@ public final class MSort implements Comparator, Serializable
|
||||||
{
|
{
|
||||||
index = new_index;
|
index = new_index;
|
||||||
data = new_data;
|
data = new_data;
|
||||||
|
// Create string collator for login language - teo_sarca, [ 1672820 ]
|
||||||
|
m_collator = Collator.getInstance(Language.getLoginLanguage().getLocale());
|
||||||
} // MSort
|
} // MSort
|
||||||
|
|
||||||
/** Direct access index */
|
/** Direct access index */
|
||||||
|
|
@ -55,6 +58,9 @@ public final class MSort implements Comparator, Serializable
|
||||||
/** Multiplier */
|
/** Multiplier */
|
||||||
private int m_multiplier = 1; // Asc by default
|
private int m_multiplier = 1; // Asc by default
|
||||||
|
|
||||||
|
/** String Collator */
|
||||||
|
private Collator m_collator = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sort Ascending
|
* Sort Ascending
|
||||||
* @param ascending if true sort ascending
|
* @param ascending if true sort ascending
|
||||||
|
|
@ -106,8 +112,7 @@ public final class MSort implements Comparator, Serializable
|
||||||
// String
|
// String
|
||||||
if (cmp1 instanceof String && cmp2 instanceof String)
|
if (cmp1 instanceof String && cmp2 instanceof String)
|
||||||
{
|
{
|
||||||
String s = (String)cmp1;
|
return m_collator.compare(cmp1, cmp2) * m_multiplier; // teo_sarca [ 1672820 ]
|
||||||
return s.compareToIgnoreCase((String)cmp2) * m_multiplier;
|
|
||||||
}
|
}
|
||||||
// Date
|
// Date
|
||||||
else if (cmp1 instanceof Timestamp && cmp2 instanceof Timestamp)
|
else if (cmp1 instanceof Timestamp && cmp2 instanceof Timestamp)
|
||||||
|
|
@ -136,7 +141,7 @@ public final class MSort implements Comparator, Serializable
|
||||||
|
|
||||||
// Convert to string value
|
// Convert to string value
|
||||||
String s = cmp1.toString();
|
String s = cmp1.toString();
|
||||||
return s.compareToIgnoreCase(cmp2.toString()) * m_multiplier;
|
return m_collator.compare(s, cmp2.toString()) * m_multiplier; // teo_sarca [ 1672820 ]
|
||||||
} // compare
|
} // compare
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue