View Javadoc
1   /*
2    * Copyright (C) 2007-2012 Argeo GmbH
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *         http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.argeo.maintenance.backup.vfs;
17  
18  import java.io.File;
19  
20  import org.apache.commons.vfs2.FileObject;
21  
22  /** Backups a Subversion repository using svnadmin. */
23  public class SvnBackup extends OsCallBackup {
24  	private String svnadminLocation = "/usr/bin/svnadmin";
25  
26  	private String repoLocation;
27  	private String repoName;
28  
29  	public SvnBackup() {
30  	}
31  
32  	public SvnBackup(String repoLocation) {
33  		this.repoLocation = repoLocation;
34  		init();
35  	}
36  
37  	@Override
38  	public void init() {
39  		// use directory as repo name
40  		if (repoName == null)
41  			repoName = new File(repoLocation).getName();
42  
43  		if (getName() == null)
44  			setName(repoName + ".svndump");
45  		super.init();
46  	}
47  
48  	@Override
49  	public void writeBackup(FileObject targetFo) {
50  		if (getCommand() == null) {
51  			setCommand(svnadminLocation + " dump " + " ${repoLocation}");
52  		}
53  		getVariables().put("repoLocation", repoLocation);
54  
55  		super.writeBackup(targetFo);
56  	}
57  
58  	public void setRepoLocation(String repoLocation) {
59  		this.repoLocation = repoLocation;
60  	}
61  
62  	public void setRepoName(String repoName) {
63  		this.repoName = repoName;
64  	}
65  
66  	public void setSvnadminLocation(String mysqldumpLocation) {
67  		this.svnadminLocation = mysqldumpLocation;
68  	}
69  
70  }