| | |
| | | import de.uhilger.filecms.data.FileRef; |
| | | import de.uhilger.filecms.web.Initialiser; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.FileNotFoundException; |
| | | import java.io.FileReader; |
| | | import java.io.FileWriter; |
| | | import java.io.IOException; |
| | | import java.io.InputStreamReader; |
| | | import java.io.Reader; |
| | | import java.security.Principal; |
| | | import java.util.ArrayList; |
| | | import java.util.Iterator; |
| | |
| | | import java.util.logging.Level; |
| | | import java.util.logging.Logger; |
| | | import org.apache.commons.io.FileUtils; |
| | | import org.apache.commons.lang.StringEscapeUtils; |
| | | |
| | | /** |
| | | * |
| | |
| | | |
| | | Object p = getRequest().getUserPrincipal(); |
| | | if(p instanceof Principal) { |
| | | FileReader reader = null; |
| | | Reader reader = null; |
| | | try { |
| | | File targetFile = new File(getTargetDir(relPath), fileName); |
| | | |
| | | //reader = new InputStreamReader(new FileInputStream(targetFile), "UTF8"); |
| | | |
| | | reader = new FileReader(targetFile); |
| | | StringBuffer buf = new StringBuffer(); |
| | | char[] readBuffer = new char[1024]; |
| | |
| | | } |
| | | |
| | | public String copyFiles(String fromPath, String toPath, List fileNames) { |
| | | return copyOrMoveFiles(fromPath, toPath, fileNames, OP_COPY); |
| | | } |
| | | |
| | | public String moveFiles(String fromPath, String toPath, List fileNames) { |
| | | return copyOrMoveFiles(fromPath, toPath, fileNames, OP_MOVE); |
| | | } |
| | | |
| | | private String copyOrMoveFiles(String fromPath, String toPath, List fileNames, int operation) { |
| | | String result = null; |
| | | try { |
| | | File srcDir = getTargetDir(fromPath); |
| | |
| | | ArrayList al = (ArrayList) o; |
| | | File srcFile = new File(srcDir, al.get(0).toString()); |
| | | if(srcFile.isDirectory()) { |
| | | logger.fine("copy dir " + srcFile.getAbsolutePath() + " to dir " + targetDir.getAbsolutePath()); |
| | | FileUtils.copyDirectoryToDirectory(srcFile, targetDir); |
| | | if(operation == OP_MOVE) { |
| | | FileUtils.moveDirectoryToDirectory(srcFile, targetDir, false); |
| | | } else { |
| | | FileUtils.copyDirectoryToDirectory(srcFile, targetDir); |
| | | } |
| | | } else { |
| | | logger.fine("copy srcFile " + srcFile.getAbsolutePath() + " to dir " + targetDir.getAbsolutePath()); |
| | | FileUtils.copyFileToDirectory(srcFile, targetDir); |
| | | if(operation == OP_MOVE) { |
| | | FileUtils.moveFileToDirectory(srcFile, targetDir, false); |
| | | } else { |
| | | FileUtils.copyFileToDirectory(srcFile, targetDir); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | return result; |
| | | } |
| | | |
| | | public String moveFiles(String fromPath, String toPath, List fileNames) { |
| | | String result = null; |
| | | try { |
| | | File srcDir = getTargetDir(fromPath); |
| | | File targetDir = getTargetDir(toPath); |
| | | Iterator i = fileNames.iterator(); |
| | | while(i.hasNext()) { |
| | | Object o = i.next(); |
| | | if (o instanceof ArrayList) { |
| | | ArrayList al = (ArrayList) o; |
| | | File srcFile = new File(srcDir, al.get(0).toString()); |
| | | if(srcFile.isDirectory()) { |
| | | FileUtils.moveDirectoryToDirectory(srcFile, targetDir, false); |
| | | } else { |
| | | FileUtils.moveFileToDirectory(srcFile, targetDir, false); |
| | | } |
| | | } |
| | | public FileRef saveTextFileAs(String relPath, String fileName, String contents) { |
| | | FileRef savedFile = null; |
| | | logger.fine(relPath + " " + fileName); |
| | | //FileRef datenRef = getBase(); |
| | | Object p = getRequest().getUserPrincipal(); |
| | | if(p instanceof Principal) { |
| | | File targetFile = new File(getTargetDir(relPath), fileName); |
| | | if(targetFile.exists()) { |
| | | targetFile = getNewFileName(targetFile); |
| | | } else { |
| | | targetFile.getParentFile().mkdirs(); |
| | | } |
| | | saveToFile(targetFile, contents); |
| | | } |
| | | return savedFile; |
| | | } |
| | | |
| | | private File getNewFileName(File file) { |
| | | File dir = file.getParentFile(); |
| | | String targetName = file.getName(); |
| | | logger.fine("targetName: " + targetName); |
| | | String ext = ""; |
| | | int dotpos = targetName.indexOf("."); |
| | | if(dotpos > -1) { |
| | | ext = targetName.substring(dotpos); |
| | | targetName = targetName.substring(0, dotpos); |
| | | } |
| | | logger.fine("targetName: " + targetName + ", ext: " + ext); |
| | | int i = 1; |
| | | while(file.exists()) { |
| | | StringBuffer buf = new StringBuffer(); |
| | | buf.append(targetName); |
| | | buf.append("-"); |
| | | buf.append(i); |
| | | if(ext.length() > 0) { |
| | | buf.append(ext); |
| | | } |
| | | file = new File(dir, buf.toString()); |
| | | i++; |
| | | } |
| | | logger.fine("new file: " + file.getName()); |
| | | return file; |
| | | } |
| | | |
| | | private FileRef saveToFile(File targetFile, String contents) { |
| | | FileRef savedFile = null; |
| | | try { |
| | | targetFile.createNewFile(); |
| | | FileWriter w = new FileWriter(targetFile); |
| | | //w.write(StringEscapeUtils.unescapeHtml(contents)); |
| | | w.write(contents); |
| | | w.flush(); |
| | | w.close(); |
| | | savedFile = new FileRef( |
| | | targetFile.getAbsolutePath(), |
| | | targetFile.isDirectory(), |
| | | targetFile.isHidden(), |
| | | targetFile.lastModified(), |
| | | targetFile.length()); |
| | | } catch (IOException ex) { |
| | | logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); |
| | | } |
| | | return result; |
| | | return savedFile; |
| | | } |
| | | |
| | | public FileRef saveTextFile(String relPath, String fileName, String contents) { |
| | | FileRef savedFile = null; |
| | | try { |
| | | FileRef datenRef = getBase(); |
| | | Object p = getRequest().getUserPrincipal(); |
| | | if(p instanceof Principal) { |
| | | File targetFile = new File(getTargetDir(relPath), fileName); |
| | | if(targetFile.exists()) { |
| | | /* |
| | | muss delete() sein? |
| | | pruefen: ueberschreibt der FileWriter den alteen Inhalt oder |
| | | entsteht eine unerwuenschte Mischung aus altem und neuem |
| | | Inhalt? |
| | | */ |
| | | targetFile.delete(); |
| | | } else { |
| | | targetFile.getParentFile().mkdirs(); |
| | | } |
| | | targetFile.createNewFile(); |
| | | FileWriter w = new FileWriter(targetFile); |
| | | w.write(contents); |
| | | w.flush(); |
| | | w.close(); |
| | | savedFile = new FileRef( |
| | | targetFile.getAbsolutePath(), |
| | | targetFile.isDirectory(), |
| | | targetFile.isHidden(), |
| | | targetFile.lastModified(), |
| | | targetFile.length()); |
| | | logger.fine(relPath + " " + fileName); |
| | | //FileRef datenRef = getBase(); |
| | | Object p = getRequest().getUserPrincipal(); |
| | | if(p instanceof Principal) { |
| | | File targetFile = new File(getTargetDir(relPath), fileName); |
| | | if(targetFile.exists()) { |
| | | /* |
| | | muss delete() sein? |
| | | pruefen: ueberschreibt der FileWriter den alteen Inhalt oder |
| | | entsteht eine unerwuenschte Mischung aus altem und neuem |
| | | Inhalt? |
| | | */ |
| | | targetFile.delete(); |
| | | } else { |
| | | targetFile.getParentFile().mkdirs(); |
| | | } |
| | | } catch (IOException ex) { |
| | | logger.log(Level.SEVERE, null, ex); |
| | | saveToFile(targetFile, contents); |
| | | } |
| | | return savedFile; |
| | | } |