View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  
18  package org.apache.log4j.rolling.helper;
19  
20  import java.io.File;
21  
22  
23  /***
24   * File rename action.
25   *
26   * @author Curt Arnold
27   */
28  public final class FileRenameAction extends ActionBase {
29    /***
30     * Source.
31     */
32    private final File source;
33  
34    /***
35     * Destination.
36     */
37    private final File destination;
38  
39    /***
40     * If true, rename empty files, otherwise delete empty files.
41     */
42    private final boolean renameEmptyFiles;
43  
44    /***
45     * Creates an FileRenameAction.
46     *
47     * @param src current file name.
48     * @param dst new file name.
49     * @param renameEmptyFiles if true, rename file even if empty, otherwise delete empty files.
50     */
51    public FileRenameAction(
52      final File src, final File dst, boolean renameEmptyFiles) {
53      source = src;
54      destination = dst;
55      this.renameEmptyFiles = renameEmptyFiles;
56    }
57  
58    /***
59     * Rename file.
60     *
61     * @return true if successfully renamed.
62     */
63    public boolean execute() {
64      return execute(source, destination, renameEmptyFiles);
65    }
66  
67    /***
68     * Rename file.
69     * @param source current file name.
70     * @param destination new file name.
71     * @param renameEmptyFiles if true, rename file even if empty, otherwise delete empty files.
72     * @return true if successfully renamed.
73     */
74    public static boolean execute(
75      final File source, final File destination, boolean renameEmptyFiles) {
76      if (renameEmptyFiles || (source.length() > 0)) {
77        return source.renameTo(destination);
78      }
79  
80      return source.delete();
81    }
82  }