Comparator: unterschieliches Ergebnis auf dem Localhost und Server

franzy

Aktives Mitglied
Hallo zusammen,

ich habe einen Comparator implementiert zum sortieren einer Liste mit Zeitdaten und einem Status:

Java:
public class WorktimeEntitySort implements Comparator{
	.
	.
	.
     public int compare (Object o1, Object o2){        
        int result = 0;
                
        try {
            Long startWorkDateTime = converterBean.dateTimeToLong(formaterBean.databasedateToEuropedate(((WorktimeEntity) o1).getLdate()), formaterBean.databasetimeToEuropetime(((WorktimeEntity) o1).getLtime()));
            Long endWorkDateTime = converterBean.dateTimeToLong(formaterBean.databasedateToEuropedate(((WorktimeEntity) o2).getLdate()), formaterBean.databasetimeToEuropetime(((WorktimeEntity) o2).getLtime()));

            result = startWorkDateTime.compareTo(endWorkDateTime);
            
            if (result == 0) {
                result = ((WorktimeEntity) o2).getSatza().compareTo(((WorktimeEntity) o1).getSatza());
            }
            
            if(((WorktimeEntity) o2).getSatza().equals("I10") || ((WorktimeEntity) o2).getSatza().equals("I20"))
            {
                Long startWorkDate = converterBean.dateToLong(formaterBean.databasedateToEuropedate(((WorktimeEntity) o1).getLdate()));
                Long endWorkDate = converterBean.dateToLong(formaterBean.databasedateToEuropedate(((WorktimeEntity) o2).getLdate()));
                
                result = startWorkDate.compareTo(endWorkDate);
                
                if (result == 0) 
                {   
                    result = ((WorktimeEntity) o2).getSatza().compareTo(((WorktimeEntity) o1).getSatza());
                }
            }
        } 
        catch (ParseException ex) {
            
            throw new RuntimeException(ex);
        }
        
        return result;
    }
}

Die Sortierung soll wie folgt ablaufen. Es soll nach dem Zeitstempel sortiert werden. Ist der Zeitstempel gleich, dann soll nach Satza (Status P10, P15, P25, P20, I20, I10) sortiert werden. Dass klappt auch soweit auf dem Localhost. Da erhalte ich folgende Liste:

P10 20140128 210000
P15 20140129 030000
P25 20140129 033000
P20 20140129 130000
I20 20140129 000000
I10 20140129 000000

Aber auf dem Server erhalte ich folgendes Ergebnis:
P10 20140128 210000
I20 20140129 000000
I10 20140129 000000
P15 20140129 030000
P25 20140129 033000
P20 20140129 130000

Woran kann so etwas liegen? An der Tomcat-Version? Ich habe es auf einem 6 und 7 getestet!

Danke und Grüße
 
Zuletzt bearbeitet:

franzy

Aktives Mitglied
hallo,

hab ich auch zuerst gedacht.

ich hab mir aber mal die long werte zu den einzelnen Datum und Zeitpaaren ausgeben. Die sind alle gleich. Die müssten ja dann Abweichungen aufzeigen, oder?

Grüße
 

franzy

Aktives Mitglied
in der catalina.sh habe ich folgendes stehen:

export JAVA_OPTS="-XX:MaxPermSize=512m -Xms512m -Xmx1024m -Duser.language=de -Duser.region=DE -Duser.timezone=CET"

leider das gleiche Problem. Die Sortierung stimmt nicht!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Debuggen liefert anderes Ergebnis als Ausführen Web Tier 2

Ähnliche Java Themen

Neue Themen


Oben