@@ -55,7 +55,8 @@ public record JPlagOptions(@JsonSerialize(using = LanguageSerializer.class) Lang
55
55
@ JsonProperty ("subdirectory_name" ) String subdirectoryName , @ JsonProperty ("file_suffixes" ) List <String > fileSuffixes ,
56
56
@ JsonProperty ("exclusion_file_name" ) String exclusionFileName , @ JsonProperty ("similarity_metric" ) SimilarityMetric similarityMetric ,
57
57
@ JsonProperty ("similarity_threshold" ) double similarityThreshold , @ JsonProperty ("max_comparisons" ) int maximumNumberOfComparisons ,
58
- @ JsonProperty ("cluster" ) ClusteringOptions clusteringOptions , boolean debugParser , @ JsonProperty ("merging" ) MergingOptions mergingOptions ) {
58
+ @ JsonProperty ("cluster" ) ClusteringOptions clusteringOptions , boolean debugParser , @ JsonProperty ("merging" ) MergingOptions mergingOptions ,
59
+ @ JsonProperty ("normalize" ) boolean normalize ) {
59
60
60
61
public static final double DEFAULT_SIMILARITY_THRESHOLD = 0 ;
61
62
public static final int DEFAULT_SHOWN_COMPARISONS = 500 ;
@@ -68,13 +69,13 @@ public record JPlagOptions(@JsonSerialize(using = LanguageSerializer.class) Lang
68
69
69
70
public JPlagOptions (Language language , Set <File > submissionDirectories , Set <File > oldSubmissionDirectories ) {
70
71
this (language , null , submissionDirectories , oldSubmissionDirectories , null , null , null , null , DEFAULT_SIMILARITY_METRIC ,
71
- DEFAULT_SIMILARITY_THRESHOLD , DEFAULT_SHOWN_COMPARISONS , new ClusteringOptions (), false , new MergingOptions ());
72
+ DEFAULT_SIMILARITY_THRESHOLD , DEFAULT_SHOWN_COMPARISONS , new ClusteringOptions (), false , new MergingOptions (), false );
72
73
}
73
74
74
75
public JPlagOptions (Language language , Integer minimumTokenMatch , Set <File > submissionDirectories , Set <File > oldSubmissionDirectories ,
75
76
File baseCodeSubmissionDirectory , String subdirectoryName , List <String > fileSuffixes , String exclusionFileName ,
76
77
SimilarityMetric similarityMetric , double similarityThreshold , int maximumNumberOfComparisons , ClusteringOptions clusteringOptions ,
77
- boolean debugParser , MergingOptions mergingOptions ) {
78
+ boolean debugParser , MergingOptions mergingOptions , boolean normalize ) {
78
79
this .language = language ;
79
80
this .debugParser = debugParser ;
80
81
this .fileSuffixes = fileSuffixes == null || fileSuffixes .isEmpty () ? null : Collections .unmodifiableList (fileSuffixes );
@@ -89,90 +90,97 @@ public JPlagOptions(Language language, Integer minimumTokenMatch, Set<File> subm
89
90
this .subdirectoryName = subdirectoryName ;
90
91
this .clusteringOptions = clusteringOptions ;
91
92
this .mergingOptions = mergingOptions ;
93
+ this .normalize = normalize ;
92
94
}
93
95
94
96
public JPlagOptions withLanguageOption (Language language ) {
95
97
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
96
98
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
97
- clusteringOptions , debugParser , mergingOptions );
99
+ clusteringOptions , debugParser , mergingOptions , normalize );
98
100
}
99
101
100
102
public JPlagOptions withDebugParser (boolean debugParser ) {
101
103
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
102
104
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
103
- clusteringOptions , debugParser , mergingOptions );
105
+ clusteringOptions , debugParser , mergingOptions , normalize );
104
106
}
105
107
106
108
public JPlagOptions withFileSuffixes (List <String > fileSuffixes ) {
107
109
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
108
110
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
109
- clusteringOptions , debugParser , mergingOptions );
111
+ clusteringOptions , debugParser , mergingOptions , normalize );
110
112
}
111
113
112
114
public JPlagOptions withSimilarityThreshold (double similarityThreshold ) {
113
115
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
114
116
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
115
- clusteringOptions , debugParser , mergingOptions );
117
+ clusteringOptions , debugParser , mergingOptions , normalize );
116
118
}
117
119
118
120
public JPlagOptions withMaximumNumberOfComparisons (int maximumNumberOfComparisons ) {
119
121
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
120
122
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
121
- clusteringOptions , debugParser , mergingOptions );
123
+ clusteringOptions , debugParser , mergingOptions , normalize );
122
124
}
123
125
124
126
public JPlagOptions withSimilarityMetric (SimilarityMetric similarityMetric ) {
125
127
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
126
128
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
127
- clusteringOptions , debugParser , mergingOptions );
129
+ clusteringOptions , debugParser , mergingOptions , normalize );
128
130
}
129
131
130
132
public JPlagOptions withMinimumTokenMatch (Integer minimumTokenMatch ) {
131
133
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
132
134
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
133
- clusteringOptions , debugParser , mergingOptions );
135
+ clusteringOptions , debugParser , mergingOptions , normalize );
134
136
}
135
137
136
138
public JPlagOptions withExclusionFileName (String exclusionFileName ) {
137
139
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
138
140
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
139
- clusteringOptions , debugParser , mergingOptions );
141
+ clusteringOptions , debugParser , mergingOptions , normalize );
140
142
}
141
143
142
144
public JPlagOptions withSubmissionDirectories (Set <File > submissionDirectories ) {
143
145
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
144
146
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
145
- clusteringOptions , debugParser , mergingOptions );
147
+ clusteringOptions , debugParser , mergingOptions , normalize );
146
148
}
147
149
148
150
public JPlagOptions withOldSubmissionDirectories (Set <File > oldSubmissionDirectories ) {
149
151
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
150
152
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
151
- clusteringOptions , debugParser , mergingOptions );
153
+ clusteringOptions , debugParser , mergingOptions , normalize );
152
154
}
153
155
154
156
public JPlagOptions withBaseCodeSubmissionDirectory (File baseCodeSubmissionDirectory ) {
155
157
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
156
158
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
157
- clusteringOptions , debugParser , mergingOptions );
159
+ clusteringOptions , debugParser , mergingOptions , normalize );
158
160
}
159
161
160
162
public JPlagOptions withSubdirectoryName (String subdirectoryName ) {
161
163
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
162
164
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
163
- clusteringOptions , debugParser , mergingOptions );
165
+ clusteringOptions , debugParser , mergingOptions , normalize );
164
166
}
165
167
166
168
public JPlagOptions withClusteringOptions (ClusteringOptions clusteringOptions ) {
167
169
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
168
170
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
169
- clusteringOptions , debugParser , mergingOptions );
171
+ clusteringOptions , debugParser , mergingOptions , normalize );
170
172
}
171
173
172
174
public JPlagOptions withMergingOptions (MergingOptions mergingOptions ) {
173
175
return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
174
176
subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
175
- clusteringOptions , debugParser , mergingOptions );
177
+ clusteringOptions , debugParser , mergingOptions , normalize );
178
+ }
179
+
180
+ public JPlagOptions withNormalize (boolean normalize ) {
181
+ return new JPlagOptions (language , minimumTokenMatch , submissionDirectories , oldSubmissionDirectories , baseCodeSubmissionDirectory ,
182
+ subdirectoryName , fileSuffixes , exclusionFileName , similarityMetric , similarityThreshold , maximumNumberOfComparisons ,
183
+ clusteringOptions , debugParser , mergingOptions , normalize );
176
184
}
177
185
178
186
public boolean hasBaseCode () {
@@ -264,7 +272,7 @@ public JPlagOptions(Language language, Integer minimumTokenMatch, File submissio
264
272
boolean debugParser , MergingOptions mergingOptions ) throws BasecodeException {
265
273
this (language , minimumTokenMatch , Set .of (submissionDirectory ), oldSubmissionDirectories ,
266
274
convertLegacyBaseCodeToFile (baseCodeSubmissionName , submissionDirectory ), subdirectoryName , fileSuffixes , exclusionFileName ,
267
- similarityMetric , similarityThreshold , maximumNumberOfComparisons , clusteringOptions , debugParser , mergingOptions );
275
+ similarityMetric , similarityThreshold , maximumNumberOfComparisons , clusteringOptions , debugParser , mergingOptions , false );
268
276
}
269
277
270
278
/**
0 commit comments