package no.java.schedule.activities.adapters.beans;
import android.content.Context;
import no.java.schedule.R;
import no.java.schedule.activities.adapters.ScheduleTimeUtil;
import no.java.schedule.util.StringUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
public class TimeBlock extends Block {
private final long startTime;
private final long endTime;
private long startSlotTime;
private long endSlotTime;
private boolean lightningTalk;
private HashMap<String,SessionDisplay> roomAggregatedSessions = new HashMap<String,SessionDisplay>();
public TimeBlock(Context context, Session session){
this(context,session.getStartTime(),session.getEndTime());
}
public TimeBlock(Context context, long startTime, long endTime){
super("TimeSlot");
this.startTime = startTime;
this.endTime = endTime;
this.startSlotTime = ScheduleTimeUtil.findBlockStart(startTime);
this.endSlotTime = ScheduleTimeUtil.findBlockEnd(endTime);
if (startTime!=0){
lightningTalk = true;
}
//Log.d(getClass().getSimpleName(), format("Creating new block: %s - %s", new Date(startTime), new Date(endTime)));
String startClause = StringUtils.getTimeAsString( context, StringUtils.DAY_HOUR_TIME, startSlotTime);
String endClause = StringUtils.getTimeAsString( context, StringUtils.HOUR_MIN_TIME, endSlotTime);
heading = context.getString(R.string.block_time, startClause, endClause);
}
public long getStartTime() {
return startTime;
}
public long getEndTime() {
return endTime;
}
public long getStartSlotTime() {
return startSlotTime;
}
public long getEndSlotTime() {
return endSlotTime;
}
@Override
public void addSession(SessionDisplay session) {
super.addSession(session);
final String key = session.getRoom();
final SessionDisplay currentSessionAtRoom = roomAggregatedSessions.get(session.getRoom());
if (currentSessionAtRoom == null){
roomAggregatedSessions.put(key,session);
} else if (roomAggregatedSessions.get(key) instanceof SessionAggregate){
((SessionAggregate)currentSessionAtRoom).addSession(session);
} else {
final SessionAggregate sessionAggregate = new SessionAggregate("Lightning Talks",startSlotTime,endSlotTime,currentSessionAtRoom);
sessionAggregate.addSession(currentSessionAtRoom);
sessionAggregate.addSession(session);
roomAggregatedSessions.put(key, sessionAggregate);
}
sessions.clear();
final ArrayList arrayList = new ArrayList<SessionDisplay>(roomAggregatedSessions.values());
Collections.sort(arrayList, new Comparator<SessionDisplay>(){
public int compare(SessionDisplay o1, SessionDisplay o2) {
return -o1.getRoom().compareTo(o2.getRoom());
}
});
sessions.addAll(arrayList);
}
}