Implementasjonen av Ruter si sanntidsløysing
Eg stod ein halv time og venta på trikken i ettermiddag, såg teljaren på Ruter si sanntidsløysing gå mot null tre gonger.
Pussig, tenkte eg. Så fekk eg tak i kjeldekoden (eller, det kan vel hende at skreiv denne i sjølv etter å ha frose på ein trikkestopp i ein halv time).
package no.ruter.sanntid;
import java.util.Random;
import static no.ruter.sanntid.SanntidUtils.*;
public class RuterSannTid {
public void sannTid() {
// TODO: Støtte for 5 og 20 min. mellom trikkene
// TODO: Hva med søndager, helligdager etc.?
int minutterMellomTrikkene = 10;
Random rnd = new Random(System.currentTimeMillis());
while (true) {
int minutterAaVente = minutterMellomTrikkene;
oppdaterTekst(String.valueOf(minutterAaVente));
while (isNotTrikkenKommet()) {
if (minutterAaVente == 0) {
// forsinka!!
minutterAaVente = (rnd.nextInt(10) + 1);
}
waitEttMinutt();
minutterAaVente--;
String nyTekst = minutterAaVente == 0 ?
"nå" : String
.valueOf(minutterAaVente);
oppdaterTekst(nyTekst);
}
}
}
// TODO Denne vil stemme i de fleste tilfeller, men vi bør
// vel hoste opp noe bedre? GPS?
// Bernhard 2009-01-23: Hva med solceller? Alle trikkene
// har frontlys!
// Ted Johnny 2011-02-12: Vi testa solceller. Tanken er
// god; problemet er at også personbiler har frontlys!!
private boolean isNotTrikkenKommet() {
return true;
}
}