From 973951fe36062a8250b6890213b1e0c3e71da8b2 Mon Sep 17 00:00:00 2001 From: ulrich Date: Wed, 13 Nov 2024 15:11:00 +0000 Subject: [PATCH] Dokumentation in Arbeit, Konstanten verschoben --- src/de/uhilger/fm/Eraser.java | 11 ++- src/de/uhilger/fm/Renamer.java | 30 +++++----- src/de/uhilger/fm/Mover.java | 54 ++++++++++++++---- src/de/uhilger/fm/CopyMoveVisitor.java | 33 ++++++++--- src/de/uhilger/fm/ImageFileFilter.java | 23 ++++++- src/de/uhilger/fm/Lister.java | 8 +- src/de/uhilger/fm/Const.java | 16 ----- 7 files changed, 110 insertions(+), 65 deletions(-) diff --git a/src/de/uhilger/fm/Const.java b/src/de/uhilger/fm/Const.java index 3b98211..1ac26db 100644 --- a/src/de/uhilger/fm/Const.java +++ b/src/de/uhilger/fm/Const.java @@ -25,20 +25,4 @@ public class Const { public static final String STR_SLASH = "/"; public static final String STR_DOT = "."; - - public static final int OP_COPY = 1; - public static final int OP_MOVE = 2; - public static final int OP_DELETE = 3; - - public static final String JPG = ".jpg"; - public static final String JPEG = ".jpeg"; - public static final String PNG = ".png"; - - public static final String B64 = "_b64"; // Base64-Encoded - - public static final String TN = "_tn"; // 120 - public static final String KL = "_kl"; // 240 - public static final String SM = "_sm"; // 500 - public static final String MT = "_mt"; // 700 - public static final String GR = "_gr"; // 1200 } diff --git a/src/de/uhilger/fm/CopyMoveVisitor.java b/src/de/uhilger/fm/CopyMoveVisitor.java index f7c5087..07fea91 100644 --- a/src/de/uhilger/fm/CopyMoveVisitor.java +++ b/src/de/uhilger/fm/CopyMoveVisitor.java @@ -37,23 +37,38 @@ private Path targetDir; private int operation; + /** + * Den Zielordner fuer Kopier- oder Verschiebeoperationen angeben + * + * @param targetDir der Zielordner + */ public void setTargetDir(Path targetDir) { this.targetDir = targetDir; - //logger.fine("targetDir: " + targetDir.toString()); } /** - * OP_COPY oder OP_MOVE + * Die gewuenschte Dateioperation angeben, + * OP_COPY, OP_MOVE oder OP_DELETE * - * @param op + * @param op die Dateioperation */ public void setOperation(int op) { this.operation = op; } + /** + * Dafuer sorgen, dass beim Kopieren oder Verschieben kein am Ziel bereits existierender + * Ordner ueberschrieben wird, indem am Ziel fuer einen bereits existierenden Ordner ein + * anderer Name mit laufender Nummer erzeugt wird. + * + * @param dir Zielordner + * @param attrs die gewuenschten Attribute + * @return gibt stets FileVisitResult.CONTINUE zurueck + * @throws IOException wenn etwas schief geht + */ @Override public FileVisitResult preVisitDirectory(Object dir, BasicFileAttributes attrs) throws IOException { - if (operation != Const.OP_DELETE) { + if (operation != Eraser.OP_DELETE) { if (dir instanceof Path) { Path sourceDir = (Path) dir; File destFile = targetDir.resolve(sourceDir.getFileName()).toFile(); @@ -72,17 +87,17 @@ @Override public FileVisitResult visitFile(Object file, BasicFileAttributes attrs) throws IOException { - if(operation != Const.OP_DELETE) { + if(operation != Eraser.OP_DELETE) { if (file instanceof Path) { Path source = (Path) file; File destFile = targetDir.resolve(source.getFileName()).toFile(); if (destFile.exists()) { destFile = getNewFileName(destFile); } - if (operation == Const.OP_MOVE) { + if (operation == Mover.OP_MOVE) { //logger.fine("move source: " + source.toString() + ", destFile: " + destFile.getAbsolutePath()); Files.move(source, destFile.toPath()); - } else if (operation == Const.OP_COPY) { + } else if (operation == Mover.OP_COPY) { //logger.fine("copy source: " + source.toString() + ", destFile: " + destFile.getAbsolutePath()); Files.copy(source, destFile.toPath()); } @@ -100,11 +115,11 @@ @Override public FileVisitResult postVisitDirectory(Object dir, IOException exc) throws IOException { - if (operation != Const.OP_DELETE) { + if (operation != Eraser.OP_DELETE) { if (dir instanceof Path) { Path finishedDir = (Path) dir; targetDir = targetDir.getParent(); - if(operation == Const.OP_MOVE) { + if(operation == Mover.OP_MOVE) { //logger.fine("delete " + finishedDir.toString()); Files.delete(finishedDir); } diff --git a/src/de/uhilger/fm/Eraser.java b/src/de/uhilger/fm/Eraser.java index 9378b12..d42f12f 100644 --- a/src/de/uhilger/fm/Eraser.java +++ b/src/de/uhilger/fm/Eraser.java @@ -30,6 +30,9 @@ * @author Ulrich Hilger, 15. Januar 2024 */ public class Eraser { + + public static final int OP_DELETE = 3; + public String deleteFiles(String relPath, List<String> fileNames, String base) { String result = null; try { @@ -42,7 +45,7 @@ //logger.fine(targetFile.getAbsolutePath()); if (targetFile.isDirectory()) { CopyMoveVisitor bearbeiter = new CopyMoveVisitor(); - bearbeiter.setOperation(Const.OP_DELETE); + bearbeiter.setOperation(OP_DELETE); Files.walkFileTree(targetFile.toPath(), bearbeiter); } else { /* @@ -51,9 +54,9 @@ die so heissen, also z.B. alle [Dateiname]*.jpg */ String fname = targetFile.getName().toLowerCase(); - if (fname.endsWith(Const.JPEG) - || fname.endsWith(Const.JPG) - || fname.endsWith(Const.PNG)) { + if (fname.endsWith(ImageFileFilter.JPEG) + || fname.endsWith(ImageFileFilter.JPG) + || fname.endsWith(ImageFileFilter.PNG)) { deleteImgFiles(targetDir, targetFile); } else { targetFile.delete(); diff --git a/src/de/uhilger/fm/ImageFileFilter.java b/src/de/uhilger/fm/ImageFileFilter.java index 5472799..fc222f7 100644 --- a/src/de/uhilger/fm/ImageFileFilter.java +++ b/src/de/uhilger/fm/ImageFileFilter.java @@ -27,15 +27,28 @@ * @version 1, 12. Mai 2021 */ public class ImageFileFilter implements FileFilter { + + public static final String JPG = ".jpg"; + public static final String JPEG = ".jpeg"; + public static final String PNG = ".png"; + + public static final String B64 = "_b64"; // Base64-Encoded + + public static final String TN = "_tn"; // 120 + public static final String KL = "_kl"; // 240 + public static final String SM = "_sm"; // 500 + public static final String MT = "_mt"; // 700 + public static final String GR = "_gr"; // 1200 + @Override public boolean accept(File pathname) { boolean pass = true; String fname = pathname.getName().toLowerCase(); - if(fname.endsWith(Const.JPEG) || - fname.endsWith(Const.JPG) || fname.endsWith(Const.PNG)) { - if(fname.contains(Const.GR) || fname.contains(Const.KL) || - fname.contains(Const.MT) || fname.contains(Const.SM) || - fname.contains(Const.TN) || fname.contains(Const.B64)) { + if(fname.endsWith(JPEG) || + fname.endsWith(JPG) || fname.endsWith(PNG)) { + if(fname.contains(GR) || fname.contains(KL) || + fname.contains(MT) || fname.contains(SM) || + fname.contains(TN) || fname.contains(B64)) { pass = false; } } diff --git a/src/de/uhilger/fm/Lister.java b/src/de/uhilger/fm/Lister.java index f237ac1..c54f4e9 100644 --- a/src/de/uhilger/fm/Lister.java +++ b/src/de/uhilger/fm/Lister.java @@ -56,13 +56,13 @@ datei.setTyp(Datei.TYP_DATEI); } String lowerName = dateiName.toLowerCase(); - if (lowerName.endsWith(Const.JPEG) - || lowerName.endsWith(Const.JPG) - || lowerName.endsWith(Const.PNG)) { + if (lowerName.endsWith(ImageFileFilter.JPEG) + || lowerName.endsWith(ImageFileFilter.JPG) + || lowerName.endsWith(ImageFileFilter.PNG)) { datei.setBild(true); String ext = dateiName.substring(dateiName.lastIndexOf(STR_DOT)); String ohneExt = dateiName.substring(0, dateiName.lastIndexOf(STR_DOT)); - datei.setMiniurl(ctxPath + /*"/" + */ fName + ohneExt + Const.TN + ext); + datei.setMiniurl(ctxPath + /*"/" + */ fName + ohneExt + ImageFileFilter.TN + ext); //buildImgSrc(file, datei, ohneExt, ext); } liste.add(datei); diff --git a/src/de/uhilger/fm/Mover.java b/src/de/uhilger/fm/Mover.java index f7b6ea6..66986aa 100644 --- a/src/de/uhilger/fm/Mover.java +++ b/src/de/uhilger/fm/Mover.java @@ -24,16 +24,34 @@ import java.nio.file.Path; /** - * Eine Klasse mit Methoden zum Kopieren und Verschieben von Dateien + * Die Klasse Mover verschiebt und kopiert Dateien und Ordner + * + * Handhabung von Bilddateien: + * + * Fuer jede Datei mit Endung jpg, jpeg und png werden alle Varianten wie zum Beispiel + * dateiname.jpg, dateiname_kl.jpg, dateiname_gr.jpg, dateiname_gr_b64.jpg usw. + * beruecksichtigt. * * @author Ulrich Hilger, 15. Janaur 2024 */ public class Mover extends FileHelper { - - public String copyOrMoveFiles(String fromPath, String toPath, String[] fileNames, + public static final int OP_COPY = 1; + public static final int OP_MOVE = 2; + + /** + * Dateien und Ordner verschieben oder kopieren + * + * @param fromPath der Pfad zur Quelle der Verschiebe- oder Kopieraktion + * @param toPath der Pfad zum Ziel der Verschiebe- oder Kopieraktion + * @param fileNames die Liste der Dateien und Ordner, die verschoben oder kopiert werden sollen + * @param operation die gewuenschte Dateioperation, OP_COPY oder OP_MOVE + * @param base der Basispfad, gegen den fromPath und toPath aufgeloest werden sollen + * @throws IOException wenn etwas schief geht + */ + public void copyOrMoveFiles(String fromPath, String toPath, String[] fileNames, int operation, String base) throws IOException { - String result = null; + //String result = null; File srcDir = new File(base, fromPath); File targetDir = new File(base, toPath); for (String fileName : fileNames) { @@ -51,12 +69,12 @@ if (destFile.exists()) { destFile = getNewFileName(destFile); } - if (operation == Const.OP_MOVE) { + if (operation == OP_MOVE) { String fname = srcFile.getName().toLowerCase(); - if (fname.endsWith(Const.JPEG) - || fname.endsWith(Const.JPG) - || fname.endsWith(Const.PNG)) { - moveImgFilesToDirectory(srcFile, srcDir, targetDir, false); + if (fname.endsWith(ImageFileFilter.JPEG) + || fname.endsWith(ImageFileFilter.JPG) + || fname.endsWith(ImageFileFilter.PNG)) { + moveImgFilesToDirectory(srcFile, srcDir, targetDir/*, false*/); } else { Files.move(source, destFile.toPath()); } @@ -65,11 +83,23 @@ } } } - return result; + //return result; } - private void moveImgFilesToDirectory(File srcFile, File srcDir, File targetDir, - boolean createDestDir) throws IOException { + /** + * Eine Bilddatei mit allen Varianten verschieben oder kopieren + * + * Fuer jede Datei mit Endung jpg, jpeg und png werden alle Varianten wie zum Beispiel + * dateiname.jpg, dateiname_kl.jpg, dateiname_gr.jpg, dateiname_gr_b64.jpg usw. + * beruecksichtigt, also dateiname*.jpg. + * + * @param srcFile die Bilddatei, deren Varianten beruecksichtigt werden sollen + * @param srcDir der Herkunftsort + * @param targetDir der Zielort + * @throws IOException wenn etwas schief geht + */ + private void moveImgFilesToDirectory(File srcFile, File srcDir, File targetDir/*, + boolean createDestDir*/) throws IOException { String fnameext = srcFile.getName(); int dotpos = fnameext.lastIndexOf("."); String fname = fnameext.substring(0, dotpos); diff --git a/src/de/uhilger/fm/Renamer.java b/src/de/uhilger/fm/Renamer.java index 75db53b..856ed88 100644 --- a/src/de/uhilger/fm/Renamer.java +++ b/src/de/uhilger/fm/Renamer.java @@ -33,12 +33,12 @@ public static final String STR_DOT = "."; - public String umbenennen(HttpExchange exchange, String relPfad, String neuerName, File file) throws IOException { + public String umbenennen(HttpExchange exchange, String relPfad, String neuerName, File file) + throws IOException { File neueDatei; - //String relPfad = helper.getFileName(exchange); - //File file = new File(exchange.getHttpContext().getAttributes().get(FileHandler.ATTR_FILE_BASE).toString(), relPfad); String fname = file.getName().toLowerCase(); - if(fname.endsWith(Const.JPEG) || fname.endsWith(Const.JPG) || fname.endsWith(Const.PNG)) { + if(fname.endsWith(ImageFileFilter.JPEG) || fname.endsWith(ImageFileFilter.JPG) || + fname.endsWith(ImageFileFilter.PNG)) { neueDatei = renameImgFiles(file.getParentFile(), file, neuerName); } else { neueDatei = new File(file.getParentFile(), neuerName); @@ -63,21 +63,21 @@ String ext = fnameext.substring(dotpos); //logger.fine("fname: " + fname + ", ext: " + ext); - DirectoryStream<Path> stream = Files.newDirectoryStream(targetDir.toPath(), fname + "*" + ext); //"*.{txt,doc,pdf,ppt}" + DirectoryStream<Path> stream = Files.newDirectoryStream(targetDir.toPath(), fname + "*" + ext); for (Path path : stream) { //logger.fine(path.getFileName().toString()); alt = path.getFileName().toString(); //logger.fine("alt: " + alt); - if(alt.contains(Const.TN)) { - neu = newfname + Const.TN + newext; - } else if (alt.contains(Const.KL)) { - neu = newfname + Const.KL + newext; - } else if(alt.contains(Const.GR)) { - neu = newfname + Const.GR + newext; - } else if(alt.contains(Const.MT)) { - neu = newfname + Const.MT + newext; - } else if(alt.contains(Const.SM)) { - neu = newfname + Const.SM + newext; + if(alt.contains(ImageFileFilter.TN)) { + neu = newfname + ImageFileFilter.TN + newext; + } else if (alt.contains(ImageFileFilter.KL)) { + neu = newfname + ImageFileFilter.KL + newext; + } else if(alt.contains(ImageFileFilter.GR)) { + neu = newfname + ImageFileFilter.GR + newext; + } else if(alt.contains(ImageFileFilter.MT)) { + neu = newfname + ImageFileFilter.MT + newext; + } else if(alt.contains(ImageFileFilter.SM)) { + neu = newfname + ImageFileFilter.SM + newext; } else { neu = newName; } -- Gitblit v1.9.3