package de.pbauerochse.worklogviewer.fx.tabs.domain;
import com.google.common.collect.Maps;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicLong;
/**
* @author Patrick Bauerochse
* @since 09.07.15
*/
public class DisplayRow {
public String label;
public Optional<String> issueId = Optional.empty();
public Optional<LocalDateTime> resolvedDate = Optional.empty();
private Map<LocalDate, DisplayDayEntry> timespanEntries = Maps.newHashMap();
private boolean isGrandTotalSummary;
private boolean isGroupContainer;
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Optional<String> getIssueId() {
return issueId;
}
public void setIssueId(String issueId) {
this.issueId = Optional.of(issueId);
}
public Optional<LocalDateTime> getResolvedDate() {
return resolvedDate;
}
public void setResolvedDate(LocalDateTime resolvedDate) {
this.resolvedDate = Optional.ofNullable(resolvedDate);
}
public long getTotaltimeSpent() {
AtomicLong sum = new AtomicLong(0);
timespanEntries.values().forEach(entry -> sum.addAndGet(entry.getSpentTime().get()));
return sum.longValue();
}
public boolean isGrandTotalSummary() {
return isGrandTotalSummary;
}
public void setIsGrandTotalSummary(boolean isGrandTotalSummary) {
this.isGrandTotalSummary = isGrandTotalSummary;
}
public boolean isGroupContainer() {
return isGroupContainer;
}
public void setIsGroupContainer(boolean isGroupContainer) {
this.isGroupContainer = isGroupContainer;
}
public Optional<DisplayDayEntry> getWorkdayEntry(LocalDate date) {
return Optional.ofNullable(timespanEntries.get(date));
}
public void addDisplayDayEntry(DisplayDayEntry entry) {
if (timespanEntries.containsKey(entry.getDate())) throw new IllegalStateException();
timespanEntries.put(entry.getDate(), entry);
}
}