Search in sources :

Example 11 with Review

use of retrospector.model.Review in project Retrospector by NonlinearFruit.

the class OverallSectionController method update.

protected void update(List<Media> allMedia) {
    // Constants
    int last__days = 20;
    // Data Mining - Vars
    Map<String, Integer> categories = new HashMap<>();
    Map<LocalDate, Map<String, Integer>> last30Days = new HashMap<>();
    InfoBlipAccumulator info = new InfoBlipAccumulator();
    // Data Mining - Calcs
    for (Media m : allMedia) {
        categories.put(m.getCategory(), categories.getOrDefault(m.getCategory(), 0) + 1);
        info.accumulate(m);
        for (Review r : m.getReviews()) {
            if (ChronoUnit.DAYS.between(r.getDate(), LocalDate.now()) <= last__days) {
                Map<String, Integer> cat2Num = last30Days.getOrDefault(r.getDate(), new HashMap<>());
                Integer num = cat2Num.getOrDefault(m.getCategory(), 1);
                cat2Num.put(m.getCategory(), num + 1);
                last30Days.put(r.getDate(), cat2Num);
            }
            info.accumulate(r);
        }
    }
    // Stats
    statsBox.getChildren().clear();
    statsBox.getChildren().add(info.getInfo());
    // Chart # Media / Category
    chartMediaPerCategory.setData(FXCollections.observableArrayList(Arrays.asList(DataManager.getCategories()).stream().map(c -> {
        int count = categories.getOrDefault(c, 0);
        return new PieChart.Data(c + " - " + count, count);
    }).collect(Collectors.toList())));
    // Chart # Reviews / Day
    ObservableList list = FXCollections.observableArrayList();
    LocalDate now = LocalDate.now();
    for (String category : DataManager.getCategories()) {
        XYChart.Series data = new XYChart.Series();
        data.setName(category);
        for (int i = last__days; i > -1; i--) {
            LocalDate target = now.minusDays(i);
            int count = last30Days.getOrDefault(target, new HashMap<>()).getOrDefault(category, 0);
            String key = target.getDayOfMonth() + "";
            data.getData().add(new XYChart.Data(key, count));
        }
        list.add(data);
    }
    chartReviewsPerDay.setData(list);
}
Also used : Arrays(java.util.Arrays) Initializable(javafx.fxml.Initializable) Review(retrospector.model.Review) StackedBarChart(javafx.scene.chart.StackedBarChart) URL(java.net.URL) FXCollections(javafx.collections.FXCollections) HashMap(java.util.HashMap) CategoryAxis(javafx.scene.chart.CategoryAxis) XYChart(javafx.scene.chart.XYChart) VBox(javafx.scene.layout.VBox) Collectors(java.util.stream.Collectors) Media(retrospector.model.Media) FXML(javafx.fxml.FXML) PieChart(javafx.scene.chart.PieChart) List(java.util.List) ChronoUnit(java.time.temporal.ChronoUnit) ResourceBundle(java.util.ResourceBundle) LocalDate(java.time.LocalDate) Map(java.util.Map) ObservableList(javafx.collections.ObservableList) NumberAxis(javafx.scene.chart.NumberAxis) DataManager(retrospector.model.DataManager) HashMap(java.util.HashMap) Media(retrospector.model.Media) Review(retrospector.model.Review) LocalDate(java.time.LocalDate) PieChart(javafx.scene.chart.PieChart) ObservableList(javafx.collections.ObservableList) XYChart(javafx.scene.chart.XYChart) HashMap(java.util.HashMap) Map(java.util.Map)

Example 12 with Review

use of retrospector.model.Review in project Retrospector by NonlinearFruit.

the class SearchTabController method updateStats.

private void updateStats() {
    int totalNumberReviews = 0;
    int totalNumberMedia = 0;
    int totalReviewRating = 0;
    int totalCurrentRating = 0;
    totalNumberMedia = searchTable.getItems().size();
    for (Media media : searchTable.getItems()) {
        totalNumberReviews += media.getReviews().size();
        for (Review review : media.getReviews()) {
            totalReviewRating += review.getRating().intValue();
        }
        totalCurrentRating += media.getCurrentRating().intValue();
    }
    searchResults.setText(totalNumberMedia + "");
    searchMeanAverage.setText(String.format("%.2f", totalReviewRating * 1.0 / totalNumberReviews));
    searchCurrentAverage.setText(String.format("%.2f", totalCurrentRating * 1.0 / totalNumberMedia));
}
Also used : Media(retrospector.model.Media) Review(retrospector.model.Review)

Aggregations

Review (retrospector.model.Review)12 Media (retrospector.model.Media)10 HashMap (java.util.HashMap)6 XYChart (javafx.scene.chart.XYChart)6 LocalDate (java.time.LocalDate)5 List (java.util.List)5 URL (java.net.URL)4 ChronoUnit (java.time.temporal.ChronoUnit)4 Arrays (java.util.Arrays)4 ObservableList (javafx.collections.ObservableList)4 DataManager (retrospector.model.DataManager)4 ArrayList (java.util.ArrayList)3 Map (java.util.Map)3 ResourceBundle (java.util.ResourceBundle)3 Collectors (java.util.stream.Collectors)3 FXCollections (javafx.collections.FXCollections)3 FXML (javafx.fxml.FXML)3 Initializable (javafx.fxml.Initializable)3 CategoryAxis (javafx.scene.chart.CategoryAxis)3 NumberAxis (javafx.scene.chart.NumberAxis)3