Dateiverwaltung für die WebBox
ulrich
2017-03-06 47e9d48f23fb2803f9c6cc80e48b2b3884d4841f
src/java/de/uhilger/filecms/api/FileMgr.java
@@ -205,38 +205,89 @@
    return result;
  }
  
  public FileRef saveTextFile(String relPath, String fileName, String contents) {
  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 {
      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());
      }
      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());
    } catch (IOException ex) {
      logger.log(Level.SEVERE, null, ex);
      logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
    }
    return savedFile;
  }
  public FileRef saveTextFile(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()) {
        /*
          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();
      }
      saveToFile(targetFile, contents);
    }
    return savedFile;
  }