Skip to content

Commit ae21cf0

Browse files
committed
Added average solution length to statistics table. Fixed table header alignment.
1 parent 92e04b7 commit ae21cf0

File tree

7 files changed

+22
-9
lines changed

7 files changed

+22
-9
lines changed

src/main/java/ee/ut/similaritydetector/backend/Analyser.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ public Analyser(File zipDirectory, double similarityThreshold, boolean preproces
4747
similarSolutionClusters = new ArrayList<>();
4848
}
4949

50+
public boolean isPreprocessSourceCode() {
51+
return preprocessSourceCode;
52+
}
53+
5054
public File getZipDirectory() {
5155
return zipDirectory;
5256
}

src/main/java/ee/ut/similaritydetector/backend/SolutionParser.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import java.nio.file.InvalidPathException;
1111
import java.time.LocalDateTime;
1212
import java.time.format.DateTimeFormatter;
13-
import java.time.format.DateTimeFormatterBuilder;
1413
import java.util.ArrayList;
1514
import java.util.Enumeration;
1615
import java.util.List;
@@ -100,7 +99,6 @@ public List<Exercise> parseSolutions() {
10099
// Replace with latest submission of solution if a solution is already present for the author
101100
if (existingSolution.isPresent()) {
102101
if (existingSolution.get().getSubmissionTime().isBefore(newSolution.getSubmissionTime())) {
103-
System.out.println(newSolution.getAuthor() + " - " + existingSolution.get().getSubmissionTime() + " - " + newSolution.getSubmissionTime());
104102
exercise.replaceSolution(exercise.getSolutions().indexOf(existingSolution.get()), newSolution);
105103
}
106104
} else {

src/main/java/ee/ut/similaritydetector/ui/controllers/MenuBarController.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,7 @@ private void initialize() {
5050
lightTheme.setOnAction(event -> Platform.runLater(this::activateLightTheme));
5151
darkTheme.setOnAction(event -> Platform.runLater(this::activateDarkTheme));
5252
// When scenes are switched then persists theme selection
53-
if (UserData.getInstance().isDarkMode()) {
54-
darkTheme.setSelected(true);
55-
} else {
56-
lightTheme.setSelected(true);
57-
}
53+
persistCurrentTheme();
5854
}
5955

6056
@FXML
@@ -66,6 +62,7 @@ private void exitMenuItemClicked() {
6662
* Activates dark theme on every currently opened window by adding a css stylesheet to the scenes.
6763
*/
6864
private void activateDarkTheme() {
65+
darkTheme.setSelected(true);
6966
UserData.getInstance().setDarkMode(true);
7067
Stage.getWindows().forEach(window -> {
7168
ObservableList<String> stylesheets = window.getScene().getStylesheets();
@@ -82,6 +79,7 @@ private void activateDarkTheme() {
8279
* Activates light theme on every currently opened window by adding a css stylesheet to the scenes.
8380
*/
8481
private void activateLightTheme() {
82+
lightTheme.setSelected(true);
8583
UserData.getInstance().setDarkMode(false);
8684
Stage.getWindows().forEach(window -> window.getScene().getStylesheets().remove(String.valueOf(this.getClass().getResource(darkThemeStylesheetPath))));
8785
if (CodeViewController.getInstance() != null){

src/main/java/ee/ut/similaritydetector/ui/controllers/ResultsViewController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public class ResultsViewController {
5151
@FXML
5252
private TableColumn<ExerciseStatistics, Integer> similarClustersColumn;
5353
@FXML
54+
private TableColumn<ExerciseStatistics, Integer> averageSolutionLengthColumn;
55+
@FXML
5456
private TableColumn<ExerciseStatistics, String> similarityThresholdColumn;
5557

5658
@FXML
@@ -98,6 +100,7 @@ private void fillExerciseStatisticsTable() {
98100
suspiciousSolutionsColumn.setCellValueFactory(new PropertyValueFactory<>("suspiciousSolutions"));
99101
similarPairsColumn.setCellValueFactory(new PropertyValueFactory<>("similarPairs"));
100102
similarClustersColumn.setCellValueFactory(new PropertyValueFactory<>("similarClusters"));
103+
averageSolutionLengthColumn.setCellValueFactory(new PropertyValueFactory<>("averageSolutionLength"));
101104
similarityThresholdColumn.setCellValueFactory(new PropertyValueFactory<>("similarityThreshold"));
102105

103106
analyser.getExercises().forEach(exercise -> exerciseStatisticsTable.getItems().add(new ExerciseStatistics(exercise, analyser)));

src/main/java/ee/ut/similaritydetector/ui/utils/ExerciseStatistics.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class ExerciseStatistics {
1616
private final double percentageSuspiciousSolutions;
1717
private final int similarPairs;
1818
private final int similarClusters;
19+
private final int averageSolutionLength;
1920
private final String similarityThreshold;
2021

2122
public String getExerciseName() {
@@ -42,6 +43,10 @@ public int getSimilarClusters() {
4243
return similarClusters;
4344
}
4445

46+
public int getAverageSolutionLength() {
47+
return averageSolutionLength;
48+
}
49+
4550
public String getSimilarityThreshold() {
4651
return similarityThreshold;
4752
}
@@ -59,6 +64,10 @@ public ExerciseStatistics(Exercise exercise, Analyser analyser) {
5964
pair.getFirstSolution().getExerciseName().equals(exerciseName)).count();
6065
this.similarClusters = (int) analyser.getSimilarSolutionClusters().stream().filter(cluster ->
6166
cluster.getExerciseName().equals(exerciseName)).count();
67+
this.averageSolutionLength = (int) Math.round(
68+
analyser.isPreprocessSourceCode() ?
69+
exercise.getAverageSolutionPreprocessedCodeLength() :
70+
exercise.getAverageSolutionSourceCodeLength());
6271
this.similarityThreshold = String.format("%.1f%%", exercise.getSimilarityThreshold() * 100);
6372
}
6473

src/main/resources/ee/ut/similaritydetector/fxml/results_view.fxml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@
6161
<TableColumn fx:id="suspiciousSolutionsColumn" editable="false" prefWidth="100.0" sortType="DESCENDING" styleClass="number-column, column-header-alignment-center" text="Suspicious&#10;solutions" />
6262
<TableColumn fx:id="similarPairsColumn" editable="false" prefWidth="100.0" sortType="DESCENDING" styleClass="number-column" text="Similar pairs " />
6363
<TableColumn fx:id="similarClustersColumn" editable="false" prefWidth="100.0" sortType="DESCENDING" styleClass="number-column" text="Similar clusters" />
64-
<TableColumn fx:id="similarityThresholdColumn" editable="false" prefWidth="100.0" sortType="DESCENDING" styleClass="number-column, column-header-alignment-center" text="Used similarity &#10;threshold" />
64+
<TableColumn fx:id="averageSolutionLengthColumn" editable="false" prefWidth="100.0" sortType="DESCENDING" styleClass="number-column, column-header-alignment-center" text="Average&#10;solution length" />
65+
<TableColumn fx:id="similarityThresholdColumn" editable="false" prefWidth="100.0" sortType="DESCENDING" styleClass="number-column, column-header-alignment-center" text="Used similarity &#10;threshold" />
6566
</columns>
6667
<VBox.margin>
6768
<Insets left="75.0" right="75.0" />

src/main/resources/ee/ut/similaritydetector/style/results_view_style.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@
55
}
66

77
.column-header-alignment-center .label {
8-
-fx-alignment: center;
8+
-fx-text-alignment: center;
99
}

0 commit comments

Comments
 (0)