Skip to content

Commit efd4caa

Browse files
committed
output break time in CLI report and mark break times with an asterisk
1 parent c926524 commit efd4caa

File tree

3 files changed

+37
-13
lines changed

3 files changed

+37
-13
lines changed

src/main/java/org/stt/cli/Main.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package org.stt.cli;
22

3-
import static com.google.common.base.Preconditions.checkNotNull;
4-
53
import java.io.File;
64
import java.io.FileDescriptor;
75
import java.io.FileInputStream;
@@ -34,6 +32,7 @@
3432
import org.stt.persistence.ItemReader;
3533
import org.stt.persistence.ItemReaderProvider;
3634
import org.stt.reporting.WorkingtimeItemProvider;
35+
import org.stt.reporting.WorktimeCategorizer;
3736
import org.stt.searching.DefaultItemSearcher;
3837
import org.stt.searching.ItemSearcher;
3938
import org.stt.stt.importer.CachingItemReader;
@@ -43,6 +42,8 @@
4342

4443
import com.google.common.base.Optional;
4544

45+
import static com.google.common.base.Preconditions.checkNotNull;
46+
4647
/**
4748
* The starting point for the CLI
4849
*/
@@ -247,7 +248,8 @@ private DefaultItemSearcher createNewSearcher() {
247248
private ReportPrinter createNewReportPrinter(File source) {
248249
ItemReaderProvider provider = createNewReaderProvider(source);
249250
return new ReportPrinter(provider, configuration,
250-
new WorkingtimeItemProvider(configuration));
251+
new WorkingtimeItemProvider(configuration),
252+
new WorktimeCategorizer(configuration));
251253
}
252254

253255
/**

src/main/java/org/stt/cli/ReportPrinter.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@
2222
import org.stt.persistence.ItemReader;
2323
import org.stt.persistence.ItemReaderProvider;
2424
import org.stt.reporting.ItemCategorizer;
25+
import org.stt.reporting.ItemCategorizer.ItemCategory;
2526
import org.stt.reporting.OvertimeReportGenerator;
2627
import org.stt.reporting.SummingReportGenerator;
2728
import org.stt.reporting.SummingReportGenerator.Report;
2829
import org.stt.reporting.WorkingtimeItemProvider;
29-
import org.stt.reporting.WorktimeCategorizer;
3030
import org.stt.stt.importer.CachingItemReader;
3131

3232
import com.google.common.base.Optional;
@@ -39,13 +39,16 @@ public class ReportPrinter {
3939
private final ItemReaderProvider readFrom;
4040
private final Configuration configuration;
4141
private final WorkingtimeItemProvider workingtimeItemProvider;
42+
private final ItemCategorizer categorizer;
4243

4344
public ReportPrinter(ItemReaderProvider readFrom,
4445
Configuration configuration,
45-
WorkingtimeItemProvider workingtimeItemProvider) {
46+
WorkingtimeItemProvider workingtimeItemProvider,
47+
ItemCategorizer categorizer) {
4648
this.readFrom = readFrom;
4749
this.configuration = configuration;
4850
this.workingtimeItemProvider = workingtimeItemProvider;
51+
this.categorizer = categorizer;
4952
}
5053

5154
public void report(Collection<String> args, PrintStream printTo) {
@@ -179,17 +182,28 @@ private void printSums(PrintStream printTo, String searchString,
179182
}
180183
List<ReportingItem> reportingItems = report.getReportingItems();
181184

182-
Duration overallDuration = new Duration(0);
185+
Duration worktimeDuration = new Duration(0);
186+
Duration breakTimeDuration = new Duration(0);
183187
for (ReportingItem i : reportingItems) {
184188
Duration duration = i.getDuration();
185-
overallDuration = overallDuration.plus(duration);
186189
String comment = i.getComment();
187-
printTruncatedString(DateTimeHelper.prettyPrintDuration(duration)
188-
+ " " + comment, printTo, truncateLongLines);
190+
String prefix = " ";
191+
if (ItemCategory.BREAK.equals(categorizer.getCategory(comment))) {
192+
prefix = "*";
193+
breakTimeDuration = breakTimeDuration.plus(duration);
194+
} else {
195+
worktimeDuration = worktimeDuration.plus(duration);
196+
}
197+
printTruncatedString(
198+
prefix + DateTimeHelper.prettyPrintDuration(duration)
199+
+ " " + comment, printTo, truncateLongLines);
189200
}
190201

191-
printTo.println("====== overall sum: ======\n"
192-
+ DateTimeHelper.prettyPrintDuration(overallDuration));
202+
printTo.println("====== overall sum: ======");
203+
printTo.println("work: "
204+
+ DateTimeHelper.prettyPrintDuration(worktimeDuration));
205+
printTo.println("break: "
206+
+ DateTimeHelper.prettyPrintDuration(breakTimeDuration));
193207

194208
IOUtils.closeQuietly(reportReader);
195209
}
@@ -235,7 +249,7 @@ private void printDetails(PrintStream printTo, String searchString,
235249
}
236250

237251
private OvertimeReportGenerator createOvertimeReportGenerator() {
238-
ItemCategorizer categorizer = new WorktimeCategorizer(configuration);
252+
239253
CachingItemReader cacher = new CachingItemReader(
240254
readFrom.provideReader());
241255
return new OvertimeReportGenerator(cacher, categorizer,

src/test/java/org/stt/cli/ReportPrinterTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@
1616
import org.stt.model.TimeTrackingItem;
1717
import org.stt.persistence.ItemReader;
1818
import org.stt.persistence.ItemReaderProvider;
19+
import org.stt.reporting.ItemCategorizer;
20+
import org.stt.reporting.ItemCategorizer.ItemCategory;
1921
import org.stt.reporting.WorkingtimeItemProvider;
2022

2123
import static org.hamcrest.CoreMatchers.containsString;
2224

2325
import static org.junit.Assert.assertThat;
2426

2527
import static org.mockito.BDDMockito.given;
28+
import static org.mockito.Matchers.anyString;
2629

2730
public class ReportPrinterTest {
2831
private ReportPrinter sut;
@@ -38,14 +41,19 @@ public class ReportPrinterTest {
3841
@Mock
3942
private WorkingtimeItemProvider workingtimeItemProvider;
4043

44+
@Mock
45+
private ItemCategorizer categorizer;
46+
4147
@Before
4248
public void setup() {
4349
MockitoAnnotations.initMocks(this);
4450

4551
given(configuration.getCliReportingWidth()).willReturn(120);
4652
given(readFrom.provideReader()).willReturn(itemReader);
53+
given(categorizer.getCategory(anyString())).willReturn(
54+
ItemCategory.WORKTIME);
4755
sut = new ReportPrinter(readFrom, configuration,
48-
workingtimeItemProvider);
56+
workingtimeItemProvider, categorizer);
4957
}
5058

5159
@Test

0 commit comments

Comments
 (0)