code: @Override
    protected void addWriterOutputToExistingDir(Path writerOutput, Path publisherOutput, WorkUnitState workUnitState,
        int branchId, ParallelRunner parallelRunner) throws IOException {
  
      for (FileStatus status : FileListUtils.listFilesRecursively(this.writerFileSystemByBranches.get(branchId),
          writerOutput)) {
        String filePathStr = status.getPath().toString();
        String pathSuffix =
            filePathStr.substring(filePathStr.indexOf(writerOutput.toString()) + writerOutput.toString().length() + 1);
        Path outputPath = new Path(publisherOutput, pathSuffix);
  
        WriterUtils.mkdirsWithRecursivePermissionWithRetry(this.publisherFileSystemByBranches.get(branchId), outputPath.getParent(),
              this.permissions.get(branchId), this.retrierConfig);
  
        movePath(parallelRunner, workUnitState, status.getPath(), outputPath, branchId);
      }
    }
docs: This method needs to be overridden for TimePartitionedDataPublisher, since the output folder structure
  contains timestamp, we have to move the files recursively.
  
  For example, move {writerOutput}/2015/04/08/15/output.avro to {publisherOutput}/2015/04/08/15/output.avro