Skip to content

Commit 6348f64

Browse files
matthiasgeigerSiedlerchr
authored andcommitted
fixes remaining issues in #4844 (#4950)
* fixes remaining issues in #4844 * fix checkstyle
1 parent 99d99cf commit 6348f64

File tree

3 files changed

+25
-24
lines changed

3 files changed

+25
-24
lines changed

src/main/java/org/jabref/gui/fieldeditors/LinkedFileViewModel.java

+17-19
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.jabref.logic.externalfiles.LinkedFileHandler;
3838
import org.jabref.logic.l10n.Localization;
3939
import org.jabref.logic.net.URLDownload;
40-
import org.jabref.logic.util.io.FileUtil;
4140
import org.jabref.logic.xmp.XmpPreferences;
4241
import org.jabref.logic.xmp.XmpUtilWriter;
4342
import org.jabref.model.database.BibDatabaseContext;
@@ -194,24 +193,34 @@ public void openFolder() {
194193
}
195194
}
196195

197-
public void rename() {
196+
public void renameToSuggestion() {
197+
renameFileToName(linkedFileHandler.getSuggestedFileName());
198+
}
199+
200+
public void askForNameAndRename() {
201+
String oldFile = this.linkedFile.getLink();
202+
Path oldFilePath = Paths.get(oldFile);
203+
Optional<String> askedFileName = dialogService.showInputDialogWithDefaultAndWait(Localization.lang("Rename file"), Localization.lang("New Filename"), oldFilePath.getFileName().toString());
204+
askedFileName.ifPresent(this::renameFileToName);
205+
}
206+
207+
public void renameFileToName(String targetFileName) {
198208
if (linkedFile.isOnlineLink()) {
199209
// Cannot rename remote links
200210
return;
201211
}
202212

203213
Optional<Path> file = linkedFile.findIn(databaseContext, filePreferences);
204214
if (file.isPresent()) {
205-
performRenameWithConflictCheck();
215+
performRenameWithConflictCheck(targetFileName);
206216
} else {
207217
dialogService.showErrorDialogAndWait(Localization.lang("File not found"), Localization.lang("Could not find file '%0'.", linkedFile.getLink()));
208218
}
209219
}
210220

211-
private void performRenameWithConflictCheck() {
212-
Optional<Path> fileConflictCheck = linkedFileHandler.findExistingFile(linkedFile, entry);
221+
private void performRenameWithConflictCheck(String targetFileName) {
222+
Optional<Path> fileConflictCheck = linkedFileHandler.findExistingFile(linkedFile, entry, targetFileName);
213223
if (fileConflictCheck.isPresent()) {
214-
String targetFileName = linkedFileHandler.getSuggestedFileName();
215224
boolean confirmOverwrite = dialogService.showConfirmationDialogAndWait(
216225
Localization.lang("File exists"),
217226
Localization.lang("'%0' exists. Overwrite file?", targetFileName),
@@ -233,7 +242,7 @@ private void performRenameWithConflictCheck() {
233242
}
234243

235244
try {
236-
linkedFileHandler.renameToSuggestedName();
245+
linkedFileHandler.renameToName(targetFileName);
237246
} catch (IOException e) {
238247
dialogService.showErrorDialogAndWait(Localization.lang("Rename failed"), Localization.lang("JabRef cannot access the file because it is being used by another process."));
239248
}
@@ -302,7 +311,7 @@ public boolean isGeneratedPathSameAsOriginal() {
302311

303312
public void moveToDefaultDirectoryAndRename() {
304313
moveToDefaultDirectory();
305-
rename();
314+
renameToSuggestion();
306315
}
307316

308317
/**
@@ -355,17 +364,6 @@ public void edit() {
355364
});
356365
}
357366

358-
public void renameFile() {
359-
String oldFile = this.linkedFile.getLink();
360-
Path oldFilePath = Paths.get(oldFile);
361-
Optional<String> editedFile = dialogService.showInputDialogWithDefaultAndWait(Localization.lang("Rename file"), Localization.lang("New Filename"), oldFilePath.getFileName().toString());
362-
editedFile.ifPresent(file -> {
363-
Path newFile = Paths.get(oldFile).resolveSibling(file);
364-
this.linkedFile.setLink(newFile.toString());
365-
FileUtil.renameFile(Paths.get(oldFile), newFile);
366-
});
367-
}
368-
369367
public void writeXMPMetadata() {
370368
// Localization.lang("Writing XMP-metadata...")
371369
BackgroundTask<Void> writeTask = BackgroundTask.wrap(() -> {

src/main/java/org/jabref/gui/fieldeditors/LinkedFilesEditor.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,12 @@ private ContextMenu createContextMenuForFile(LinkedFileViewModel linkedFile) {
219219
download.setOnAction(event -> linkedFile.download());
220220

221221
MenuItem renameFile = new MenuItem(Localization.lang("Rename file to defined pattern"));
222-
renameFile.setOnAction(event -> linkedFile.rename());
222+
renameFile.setOnAction(event -> linkedFile.renameToSuggestion());
223223
renameFile.setDisable(linkedFile.getFile().isOnlineLink() || linkedFile.isGeneratedNameSameAsOriginal());
224224

225225
MenuItem renameFileName = new MenuItem(Localization.lang("Rename file to a given name"));
226-
renameFileName.setOnAction(event -> linkedFile.renameFile());
226+
renameFileName.setOnAction(event -> linkedFile.askForNameAndRename());
227+
renameFileName.setDisable(linkedFile.getFile().isOnlineLink());
227228

228229
MenuItem moveFile = new MenuItem(Localization.lang("Move file to file directory"));
229230
moveFile.setOnAction(event -> linkedFile.moveToDefaultDirectory());

src/main/java/org/jabref/logic/externalfiles/LinkedFileHandler.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -70,13 +70,16 @@ public boolean moveToDefaultDirectory() throws IOException {
7070
}
7171

7272
public boolean renameToSuggestedName() throws IOException {
73+
return renameToName(getSuggestedFileName());
74+
}
75+
76+
public boolean renameToName(String targetFileName) throws IOException {
7377
Optional<Path> oldFile = fileEntry.findIn(databaseContext, filePreferences);
7478
if (!oldFile.isPresent()) {
7579
// Could not find file
7680
return false;
7781
}
7882

79-
String targetFileName = getSuggestedFileName();
8083
Path newPath = oldFile.get().resolveSibling(targetFileName);
8184

8285
String expandedOldFilePath = oldFile.get().toString();
@@ -124,8 +127,7 @@ public String getSuggestedFileName() {
124127
* @return First identified path that matches an existing file. This name can be used in subsequent calls to
125128
* override the existing file.
126129
*/
127-
public Optional<Path> findExistingFile(LinkedFile flEntry, BibEntry entry) {
128-
String targetFileName = getSuggestedFileName();
130+
public Optional<Path> findExistingFile(LinkedFile flEntry, BibEntry entry, String targetFileName) {
129131
// The .get() is legal without check because the method will always return a value.
130132
Path targetFilePath = flEntry.findIn(databaseContext, filePreferences)
131133
.get().getParent().resolve(targetFileName);

0 commit comments

Comments
 (0)