private boolean moveFile()

in plugins/actions/movefiles/src/main/java/org/apache/hop/workflow/actions/movefiles/ActionMoveFiles.java [795:1043]


  private boolean moveFile(
      String shortfilename,
      FileObject sourcefilename,
      FileObject destinationfilename,
      FileObject movetofolderfolder,
      IWorkflowEngine<WorkflowMeta> parentWorkflow,
      Result result) {

    FileObject destinationfile = null;
    boolean retval = false;
    try {
      if (!destinationfilename.exists()) {

        if (includeSubfolders) {
          // Check if
          FileObject destinationFilePath =
              HopVfs.getFileObject(
                  destinationfilename.getName().getParent().toString(), getVariables());
          if (!destinationFilePath.exists()) destinationFilePath.createFolder();
        }

        if (!simulate) {
          destinationfilename.createFile();
          sourcefilename.moveTo(destinationfilename);
        }

        if (isDetailed()) {
          logDetailed(
              BaseMessages.getString(
                  PKG,
                  CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
                  sourcefilename.getName().toString(),
                  destinationfilename.getName().toString()));
        }

        // add filename to result filename
        if (addResultFilenames
            && !ifFileExists.equals("fail")
            && !ifFileExists.equals(CONST_DO_NOTHING)) {
          addFileToResultFilenames(destinationfilename.toString(), result, parentWorkflow);
        }

        updateSuccess();
        retval = true;

      } else {
        if (isDetailed()) {
          logDetailed(
              BaseMessages.getString(
                  PKG, "ActionMoveFiles.Log.FileExists", destinationfilename.toString()));
        }
        if (ifFileExists.equals("overwrite_file")) {
          if (!simulate) {
            sourcefilename.moveTo(destinationfilename);
          }
          if (isDetailed()) {
            logDetailed(
                BaseMessages.getString(
                    PKG,
                    "ActionMoveFiles.Log.FileOverwrite",
                    destinationfilename.getName().toString()));
          }

          // add filename to result filename
          if (addResultFilenames
              && !ifFileExists.equals("fail")
              && !ifFileExists.equals(CONST_DO_NOTHING)) {
            addFileToResultFilenames(destinationfilename.toString(), result, parentWorkflow);
          }

          updateSuccess();
          retval = true;

        } else if (ifFileExists.equals("unique_name")) {
          String shortFilename = shortfilename;

          // return destination short filename
          try {
            shortFilename = getMoveDestinationFilename(shortFilename, "ddMMyyyy_HHmmssSSS");
          } catch (Exception e) {
            logError(
                BaseMessages.getString(
                    PKG,
                    BaseMessages.getString(
                        PKG, CONST_ACTION_MOVE_FILES_ERROR_GETTING_FILENAME, shortFilename)),
                e);
            return retval;
          }

          String movetofilenamefull =
              destinationfilename.getParent().toString() + Const.FILE_SEPARATOR + shortFilename;
          destinationfile = HopVfs.getFileObject(movetofilenamefull, getVariables());

          if (!simulate) {
            sourcefilename.moveTo(destinationfile);
          }
          if (isDetailed()) {
            logDetailed(
                BaseMessages.getString(
                    PKG,
                    CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
                    sourcefilename.getName().toString(),
                    destinationfile.getName().toString()));
          }

          // add filename to result filename
          if (addResultFilenames
              && !ifFileExists.equals("fail")
              && !ifFileExists.equals(CONST_DO_NOTHING)) {
            addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
          }

          updateSuccess();
          retval = true;
        } else if (ifFileExists.equals("delete_file")) {
          if (!simulate) {
            sourcefilename.delete();
          }
          if (isDetailed()) {
            logDetailed(
                BaseMessages.getString(
                    PKG,
                    "ActionMoveFiles.Log.FileDeleted",
                    destinationfilename.getName().toString()));
          }
          updateSuccess();
          retval = true;
        } else if (ifFileExists.equals("move_file")) {
          String shortFilename = shortfilename;
          // return destination short filename
          try {
            shortFilename = getMoveDestinationFilename(shortFilename, null);
          } catch (Exception e) {
            logError(
                BaseMessages.getString(
                    PKG,
                    BaseMessages.getString(
                        PKG, CONST_ACTION_MOVE_FILES_ERROR_GETTING_FILENAME, shortFilename)),
                e);
            return retval;
          }

          String movetofilenamefull =
              movetofolderfolder.toString() + Const.FILE_SEPARATOR + shortFilename;
          destinationfile = HopVfs.getFileObject(movetofilenamefull, getVariables());
          if (!destinationfile.exists()) {
            if (!simulate) {
              sourcefilename.moveTo(destinationfile);
            }
            if (isDetailed()) {
              logDetailed(
                  BaseMessages.getString(
                      PKG,
                      CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
                      sourcefilename.getName().toString(),
                      destinationfile.getName().toString()));
            }

            // add filename to result filename
            if (addResultFilenames
                && !ifFileExists.equals("fail")
                && !ifFileExists.equals(CONST_DO_NOTHING)) {
              addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
            }

          } else {
            if (ifMovedFileExists.equals("overwrite_file")) {
              if (!simulate) {
                sourcefilename.moveTo(destinationfile);
              }
              if (isDetailed()) {
                logDetailed(
                    BaseMessages.getString(
                        PKG,
                        "ActionMoveFiles.Log.FileOverwrite",
                        destinationfile.getName().toString()));
              }

              // add filename to result filename
              if (addResultFilenames
                  && !ifFileExists.equals("fail")
                  && !ifFileExists.equals(CONST_DO_NOTHING)) {
                addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
              }

              updateSuccess();
              retval = true;
            } else if (ifMovedFileExists.equals("unique_name")) {
              SimpleDateFormat daf = new SimpleDateFormat();
              Date now = new Date();
              daf.applyPattern("ddMMyyyy_HHmmssSSS");
              String dt = daf.format(now);
              shortFilename += "_" + dt;

              String destinationfilenamefull =
                  movetofolderfolder.toString() + Const.FILE_SEPARATOR + shortFilename;
              destinationfile = HopVfs.getFileObject(destinationfilenamefull, getVariables());

              if (!simulate) {
                sourcefilename.moveTo(destinationfile);
              }
              if (isDetailed()) {
                logDetailed(
                    BaseMessages.getString(
                        PKG,
                        CONST_ACTION_MOVE_FILES_LOG_FILE_MOVED,
                        destinationfile.getName().toString()));
              }

              // add filename to result filename
              if (addResultFilenames
                  && !ifFileExists.equals("fail")
                  && !ifFileExists.equals(CONST_DO_NOTHING)) {
                addFileToResultFilenames(destinationfile.toString(), result, parentWorkflow);
              }

              updateSuccess();
              retval = true;
            } else if (ifMovedFileExists.equals("fail")) {
              // Update Errors
              updateErrors();
            }
          }

        } else if (ifFileExists.equals("fail")) {
          // Update Errors
          updateErrors();
        }
      }
    } catch (Exception e) {
      logError(
          BaseMessages.getString(
              PKG,
              "ActionMoveFiles.Error.Exception.MoveProcessError",
              sourcefilename.toString(),
              destinationfilename.toString(),
              e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName()));
      updateErrors();
    } finally {
      if (destinationfile != null) {
        try {
          destinationfile.close();
        } catch (IOException ex) {
          /* Ignore */
        }
      }
    }
    return retval;
  }