package com.captaindebug.longpoll.source;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.captaindebug.longpoll.Message;
public class Match {
private final String name;
private final List<Message> updates;
public Match(String name, List<String> matchInfo) {
this.name = name;
this.updates = new ArrayList<Message>();
createUpdateList(matchInfo);
}
private void createUpdateList(List<String> matchInfo) {
createMessageList(matchInfo);
Collections.sort(updates);
}
private void createMessageList(List<String> matchInfo) {
for (String rawMessage : matchInfo) {
final String timeString = getTime(rawMessage);
final long time = parseTime(timeString);
final String messageString = getMessage(rawMessage);
Message message = new Message(name, time, messageString, timeString);
updates.add(message);
}
}
private String getTime(String rawMessage) {
int index = rawMessage.indexOf(' ');
String retVal = rawMessage.substring(0, index);
return retVal;
}
/**
* This may look weird, but the algorithm converts minutes to millis. eg 55:30 becomes
* 55500mS
*/
private long parseTime(String timeString) {
String[] split = timeString.split(":");
long minutes = (Long.valueOf(split[0]) * 1000);
long seconds = (Long.valueOf(split[1])) * 1000 / 60;
long time = minutes + seconds;
return time;
}
private String getMessage(String rawMessage) {
int index = rawMessage.indexOf(' ');
String retVal = rawMessage.substring(index + 1);
return retVal;
}
public String getName() {
return name;
}
public List<Message> getUpdates() {
return Collections.unmodifiableList(updates);
}
}