Skip to content

Commit debfd66

Browse files
authored
Merge pull request #23 from DrRename/feature/duplicates
Do not add duplicate check results
2 parents 95834a4 + 304bf42 commit debfd66

12 files changed

+60
-82
lines changed

src/main/java/drrename/RenameUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public static Path getImagePathFromNfo(Path nfoFile) throws IOException {
2020
if(xmlFileContent.getArt() != null && xmlFileContent.getArt().getPoster() != null)
2121
return nfoFile.getParent().resolve(xmlFileContent.getArt().getPoster());
2222
} catch (JsonParseException e) {
23-
log.debug("Failed to deserialize {} ({})", nfoFile, e.toString());
23+
log.debug("Failed to deserialize image path from {})", nfoFile);
2424
}
2525
return null;
2626
}

src/main/java/drrename/kodi/CheckResult.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,36 @@
2222
import javafx.beans.property.SimpleStringProperty;
2323
import javafx.beans.property.StringProperty;
2424

25+
import java.util.Objects;
26+
2527
public class CheckResult {
2628

2729
protected final StringProperty result;
2830

29-
protected final String prefix;
30-
31-
public CheckResult(String prefix, String result) {
32-
this.prefix = prefix;
31+
public CheckResult(String result) {
3332
this.result = new SimpleStringProperty(result);
3433
}
3534

35+
@Override
36+
public boolean equals(Object o) {
37+
if (this == o) return true;
38+
if (!(o instanceof CheckResult that)) return false;
39+
return Objects.equals(getResult(), that.getResult());
40+
}
41+
42+
@Override
43+
public int hashCode() {
44+
return Objects.hash(result);
45+
}
46+
3647
@Override
3748
public String toString() {
38-
return getValue();
49+
return getResult();
3950
}
4051

4152
// Getter / Setter //
4253

43-
public String getValue() {
54+
public String getResult() {
4455
return result.get();
4556
}
4657

src/main/java/drrename/kodi/CheckResultTreeItemContent.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import lombok.RequiredArgsConstructor;
2323

24+
import java.util.Objects;
25+
2426
@RequiredArgsConstructor
2527
public class CheckResultTreeItemContent<T extends CheckResult> extends KodiTreeItemContent {
2628

@@ -30,6 +32,18 @@ public T getCheckResult() {
3032
return checkResult;
3133
}
3234

35+
@Override
36+
public boolean equals(Object o) {
37+
if (this == o) return true;
38+
if (!(o instanceof CheckResultTreeItemContent<?> that)) return false;
39+
return checkResult.equals(that.checkResult);
40+
}
41+
42+
@Override
43+
public int hashCode() {
44+
return Objects.hash(checkResult);
45+
}
46+
3347
@Override
3448
public String toString() {
3549
return checkResult.toString();

src/main/java/drrename/kodi/CheckService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ public void addChildItem(MovieTreeItem treeItem) {
3232
try {
3333
R checkResult = checkPath(treeItem.getMoviePath());
3434
var childItem = buildChildItem(checkResult);
35-
Platform.runLater(() -> treeItem.add(childItem));
35+
if(!treeItem.contains(childItem))
36+
Platform.runLater(() -> treeItem.add(childItem));
3637
}catch (IOException e){
3738
log.error(e.getLocalizedMessage(), e);
3839
}

src/main/java/drrename/kodi/GenericKodiTreeItemContent.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/main/java/drrename/kodi/KodiTreeItem.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
package drrename.kodi;
2121

2222
import drrename.ui.FilterableTreeItem;
23+
import javafx.scene.control.TreeItem;
2324

2425
public class KodiTreeItem<T extends CheckResult> extends FilterableTreeItem<KodiTreeItemContent> {
2526

@@ -31,4 +32,8 @@ public KodiTreeItem(KodiTreeItemContent value) {
3132
public void add(KodiTreeItem<?> childItem) {
3233
getSourceChildren().add(childItem);
3334
}
35+
36+
public <R extends CheckResult> boolean contains(KodiTreeItem<R> childItem) {
37+
return getSourceChildren().stream().map(TreeItem::getValue).anyMatch(v -> v.equals(childItem.getValue()));
38+
}
3439
}

src/main/java/drrename/kodi/GenericTreeItemContent.java renamed to src/main/java/drrename/kodi/NfoCheckResult.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,13 @@
1919

2020
package drrename.kodi;
2121

22-
import lombok.AllArgsConstructor;
23-
import lombok.RequiredArgsConstructor;
22+
import java.nio.file.Path;
2423

25-
@AllArgsConstructor
26-
public class GenericTreeItemContent extends KodiTreeItemContent {
24+
public abstract class NfoCheckResult extends CheckResult {
2725

28-
private Object value;
29-
30-
@Override
31-
public String toString() {
32-
return value.toString();
33-
}
34-
35-
// Getter / Setter //
36-
37-
38-
public Object getValue() {
39-
return value;
26+
public NfoCheckResult(String result) {
27+
super(result);
4028
}
4129

42-
public void setValue(Object value) {
43-
this.value = value;
44-
}
30+
public abstract Path getNfoFile();
4531
}

src/main/java/drrename/kodi/NfoFileContentCheckResult.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@
2121

2222
import java.nio.file.Path;
2323

24-
public class NfoFileContentCheckResult extends CheckResult {
24+
public class NfoFileContentCheckResult extends NfoCheckResult {
2525

2626
private final Path nfoFile;
2727

2828
private final boolean warning;
2929

3030
public NfoFileContentCheckResult(String result, Path nfoFile, boolean hasWarning) {
31-
super("NFO File Content: ", result);
31+
super(result);
3232
this.nfoFile = nfoFile;
3333
this.warning = hasWarning;
3434
}

src/main/java/drrename/kodi/NfoFileContentTreeItemContent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
package drrename.kodi;
2121

22-
public class NfoFileContentTreeItemContent extends GenericKodiTreeItemContent<NfoFileContentCheckResult> {
22+
public class NfoFileContentTreeItemContent extends CheckResultTreeItemContent<NfoFileContentCheckResult> {
2323

2424
public NfoFileContentTreeItemContent(NfoFileContentCheckResult value) {
2525
super(value);

src/main/java/drrename/kodi/NfoFileNameCheckResult.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,22 @@
2727
import java.nio.file.Path;
2828
import java.util.Collection;
2929

30-
public class NfoFileNameCheckResult extends CheckResult {
30+
public class NfoFileNameCheckResult extends NfoCheckResult {
3131

3232
private final ListProperty<Path> nfoFiles;
3333
private final NfoFileNameType type;
3434

3535
public NfoFileNameCheckResult(NfoFileNameType result, Collection<Path> nfoFiles) {
36-
super("NFO File Name: ", result.toString());
36+
super(result.toString());
3737
this.type = result;
3838
this.nfoFiles = new SimpleListProperty<>(FXCollections.observableArrayList(nfoFiles));
3939
}
4040

41+
@Override
42+
public Path getNfoFile() {
43+
return getNfoFiles().isEmpty() ? null : getNfoFiles().get(0);
44+
}
45+
4146
// Getter / Setter //
4247

4348
public NfoFileNameType getType() {
@@ -55,4 +60,6 @@ public ListProperty<Path> nfoFilesProperty() {
5560
public void setNfoFiles(ObservableList<Path> nfoFiles) {
5661
this.nfoFiles.set(nfoFiles);
5762
}
63+
64+
5865
}

0 commit comments

Comments
 (0)