mirror of
https://github.com/adityachandelgit/BookLore.git
synced 2026-02-18 03:07:40 +01:00
feat(metadata): add 'Replace When Provided' option to metadata replacement modes (#2379)
Signed-off-by: Balázs Szücs <bszucs1209@gmail.com>
This commit is contained in:
@@ -2,5 +2,6 @@ package com.adityachandel.booklore.model.enums;
|
||||
|
||||
public enum MetadataReplaceMode {
|
||||
REPLACE_ALL,
|
||||
REPLACE_MISSING
|
||||
REPLACE_MISSING,
|
||||
REPLACE_WHEN_PROVIDED
|
||||
}
|
||||
|
||||
@@ -186,10 +186,14 @@ public class BookMetadataUpdater {
|
||||
if (newValue != null) setter.accept(newValue);
|
||||
return;
|
||||
}
|
||||
if (mode == MetadataReplaceMode.REPLACE_ALL) {
|
||||
setter.accept(newValue);
|
||||
} else if (mode == MetadataReplaceMode.REPLACE_MISSING && isValueMissing(getter.get())) {
|
||||
setter.accept(newValue);
|
||||
switch (mode) {
|
||||
case REPLACE_ALL -> setter.accept(newValue);
|
||||
case REPLACE_MISSING -> {
|
||||
if (isValueMissing(getter.get())) setter.accept(newValue);
|
||||
}
|
||||
case REPLACE_WHEN_PROVIDED -> {
|
||||
if (!isValueMissing(newValue)) setter.accept(newValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,14 +227,11 @@ public class BookMetadataUpdater {
|
||||
|
||||
if (newAuthors.isEmpty()) return;
|
||||
|
||||
boolean replaceAll = replaceMode == MetadataReplaceMode.REPLACE_ALL;
|
||||
boolean replaceMissing = replaceMode == MetadataReplaceMode.REPLACE_MISSING;
|
||||
|
||||
if (replaceAll) {
|
||||
if (replaceMode == MetadataReplaceMode.REPLACE_ALL || replaceMode == MetadataReplaceMode.REPLACE_WHEN_PROVIDED) {
|
||||
if (!merge) e.getAuthors().clear();
|
||||
e.getAuthors().addAll(newAuthors);
|
||||
e.updateSearchText();
|
||||
} else if (replaceMissing && e.getAuthors().isEmpty()) {
|
||||
} else if (replaceMode == MetadataReplaceMode.REPLACE_MISSING && e.getAuthors().isEmpty()) {
|
||||
e.getAuthors().addAll(newAuthors);
|
||||
e.updateSearchText();
|
||||
} else if (replaceMode == null) {
|
||||
@@ -264,13 +265,10 @@ public class BookMetadataUpdater {
|
||||
|
||||
if (newCategories.isEmpty()) return;
|
||||
|
||||
boolean replaceAll = replaceMode == MetadataReplaceMode.REPLACE_ALL;
|
||||
boolean replaceMissing = replaceMode == MetadataReplaceMode.REPLACE_MISSING;
|
||||
|
||||
if (replaceAll) {
|
||||
if (replaceMode == MetadataReplaceMode.REPLACE_ALL || replaceMode == MetadataReplaceMode.REPLACE_WHEN_PROVIDED) {
|
||||
if (!merge) e.getCategories().clear();
|
||||
e.getCategories().addAll(newCategories);
|
||||
} else if (replaceMissing && e.getCategories().isEmpty()) {
|
||||
} else if (replaceMode == MetadataReplaceMode.REPLACE_MISSING && e.getCategories().isEmpty()) {
|
||||
e.getCategories().addAll(newCategories);
|
||||
} else if (replaceMode == null) {
|
||||
if (!merge) e.getCategories().clear();
|
||||
@@ -302,13 +300,10 @@ public class BookMetadataUpdater {
|
||||
|
||||
if (newMoods.isEmpty()) return;
|
||||
|
||||
boolean replaceAll = replaceMode == MetadataReplaceMode.REPLACE_ALL;
|
||||
boolean replaceMissing = replaceMode == MetadataReplaceMode.REPLACE_MISSING;
|
||||
|
||||
if (replaceAll) {
|
||||
if (replaceMode == MetadataReplaceMode.REPLACE_ALL || replaceMode == MetadataReplaceMode.REPLACE_WHEN_PROVIDED) {
|
||||
if (!merge) e.getMoods().clear();
|
||||
e.getMoods().addAll(newMoods);
|
||||
} else if (replaceMissing && e.getMoods().isEmpty()) {
|
||||
} else if (replaceMode == MetadataReplaceMode.REPLACE_MISSING && e.getMoods().isEmpty()) {
|
||||
e.getMoods().addAll(newMoods);
|
||||
} else if (replaceMode == null) {
|
||||
if (!merge) e.getMoods().clear();
|
||||
@@ -340,13 +335,10 @@ public class BookMetadataUpdater {
|
||||
|
||||
if (newTags.isEmpty()) return;
|
||||
|
||||
boolean replaceAll = replaceMode == MetadataReplaceMode.REPLACE_ALL;
|
||||
boolean replaceMissing = replaceMode == MetadataReplaceMode.REPLACE_MISSING;
|
||||
|
||||
if (replaceAll) {
|
||||
if (replaceMode == MetadataReplaceMode.REPLACE_ALL || replaceMode == MetadataReplaceMode.REPLACE_WHEN_PROVIDED) {
|
||||
if (!merge) e.getTags().clear();
|
||||
e.getTags().addAll(newTags);
|
||||
} else if (replaceMissing && e.getTags().isEmpty()) {
|
||||
} else if (replaceMode == MetadataReplaceMode.REPLACE_MISSING && e.getTags().isEmpty()) {
|
||||
e.getTags().addAll(newTags);
|
||||
} else if (replaceMode == null) {
|
||||
if (!merge) e.getTags().clear();
|
||||
|
||||
@@ -64,7 +64,8 @@ export class MetadataAdvancedFetchOptionsComponent implements OnChanges {
|
||||
|
||||
replaceModeOptions: { label: string; value: MetadataReplaceMode }[] = [
|
||||
{ label: 'Replace Missing Only', value: 'REPLACE_MISSING' },
|
||||
{ label: 'Replace All Fields', value: 'REPLACE_ALL' }
|
||||
{ label: 'Replace All Fields', value: 'REPLACE_ALL' },
|
||||
{ label: 'Replace When Provided', value: 'REPLACE_WHEN_PROVIDED' }
|
||||
];
|
||||
|
||||
fieldOptions: FieldOptions = this.initializeFieldOptions();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
export type MetadataReplaceMode = 'REPLACE_ALL' | 'REPLACE_MISSING';
|
||||
export type MetadataReplaceMode = 'REPLACE_ALL' | 'REPLACE_MISSING' | 'REPLACE_WHEN_PROVIDED';
|
||||
|
||||
export interface MetadataRefreshOptions {
|
||||
libraryId: number | null;
|
||||
|
||||
Reference in New Issue
Block a user