Skip to content

Commit

Permalink
HW0_stream
Browse files Browse the repository at this point in the history
  • Loading branch information
GlyzinAI committed Jun 11, 2019
1 parent a52769c commit 839a886
Show file tree
Hide file tree
Showing 7 changed files with 88 additions and 54 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ out
target
*.iml
log
*.patch
patch



2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<version>3.8.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
package ru.javawebinar.topjava.model;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class UserMeal {
public class Meal {
private final LocalDateTime dateTime;

private final String description;

private final int calories;

public UserMeal(LocalDateTime dateTime, String description, int calories) {
public Meal(LocalDateTime dateTime, String description, int calories) {
this.dateTime = dateTime;
this.description = description;
this.calories = calories;
Expand All @@ -26,4 +28,12 @@ public String getDescription() {
public int getCalories() {
return calories;
}

public LocalDate getDate() {
return dateTime.toLocalDate();
}

public LocalTime getTime() {
return dateTime.toLocalTime();
}
}
30 changes: 30 additions & 0 deletions src/main/java/ru/javawebinar/topjava/model/MealTo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package ru.javawebinar.topjava.model;

import java.time.LocalDateTime;

public class MealTo {
private final LocalDateTime dateTime;

private final String description;

private final int calories;

private final boolean excess;

public MealTo(LocalDateTime dateTime, String description, int calories, boolean excess) {
this.dateTime = dateTime;
this.description = description;
this.calories = calories;
this.excess = excess;
}

@Override
public String toString() {
return "MealTo{" +
"dateTime=" + dateTime +
", description='" + description + '\'' +
", calories=" + calories +
", excess=" + excess +
'}';
}
}
20 changes: 0 additions & 20 deletions src/main/java/ru/javawebinar/topjava/model/UserMealWithExceed.java

This file was deleted.

43 changes: 43 additions & 0 deletions src/main/java/ru/javawebinar/topjava/util/MealsUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package ru.javawebinar.topjava.util;

import ru.javawebinar.topjava.model.Meal;
import ru.javawebinar.topjava.model.MealTo;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class MealsUtil {
public static void main(String[] args) {
List<Meal> meals = Arrays.asList(
new Meal(LocalDateTime.of(2015, Month.MAY, 30, 10, 0), "Завтрак", 500),
new Meal(LocalDateTime.of(2015, Month.MAY, 30, 13, 0), "Обед", 1000),
new Meal(LocalDateTime.of(2015, Month.MAY, 30, 20, 0), "Ужин", 500),
new Meal(LocalDateTime.of(2015, Month.MAY, 31, 10, 0), "Завтрак", 1000),
new Meal(LocalDateTime.of(2015, Month.MAY, 31, 13, 0), "Обед", 500),
new Meal(LocalDateTime.of(2015, Month.MAY, 31, 20, 0), "Ужин", 510)
);
List<MealTo> mealsWithExcess = getFilteredWithExcess(meals, LocalTime.of(7, 0), LocalTime.of(12, 0), 2000);
mealsWithExcess.forEach(System.out::println);
}

public static List<MealTo> getFilteredWithExcess(List<Meal> meals, LocalTime startTime, LocalTime endTime, int caloriesPerDay) {
Map<LocalDate, Integer> caloriesSumByDate = meals.stream()
.collect(
Collectors.groupingBy(Meal::getDate, Collectors.summingInt(Meal::getCalories))
// Collectors.toMap(Meal::getDate, Meal::getCalories, Integer::sum)
);

return meals.stream()
.filter(meal -> TimeUtil.isBetween(meal.getTime(), startTime, endTime))
.map(meal ->
new MealTo(meal.getDateTime(), meal.getDescription(), meal.getCalories(),
caloriesSumByDate.get(meal.getDate()) > caloriesPerDay))
.collect(Collectors.toList());
}
}
31 changes: 0 additions & 31 deletions src/main/java/ru/javawebinar/topjava/util/UserMealsUtil.java

This file was deleted.

0 comments on commit 839a886

Please sign in to comment.