01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * 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: /*
19: * Portions of this software are based upon public domain software
20: * originally written at the National Center for Supercomputing Applications,
21: * University of Illinois, Urbana-Champaign.
22: */
23:
24: package org.apache.tools.ant.taskdefs.optional.perforce;
25:
26: import org.apache.tools.ant.BuildException;
27:
28: /**
29: * Revert Perforce open files or files in a changelist
30: *
31: * @ant.task category="scm"
32: */
33: public class P4Revert extends P4Base {
34:
35: private String revertChange = null;
36: private boolean onlyUnchanged = false;
37:
38: /**
39: * The changelist to revert; optional.
40: * @param revertChange : the change list to revert
41: * @throws BuildException if the change list is null or empty string
42: */
43: public void setChange(String revertChange) throws BuildException {
44: if (revertChange == null || revertChange.equals("")) {
45: throw new BuildException(
46: "P4Revert: change cannot be null or empty");
47: }
48:
49: this .revertChange = revertChange;
50:
51: }
52:
53: /**
54: * flag to revert only unchanged files (p4 revert -a); optional, default false.
55: * @param onlyUnchanged if set to true revert only unchanged files
56: */
57: public void setRevertOnlyUnchanged(boolean onlyUnchanged) {
58: this .onlyUnchanged = onlyUnchanged;
59: }
60:
61: /**
62: * do the work
63: * @throws BuildException if an error occurs during the execution of the Perforce command
64: * and failonError is set to true
65: */
66: public void execute() throws BuildException {
67:
68: /* Here we can either revert any unchanged files in a changelist
69: * or
70: * any files regardless of whether they have been changed or not
71: *
72: *
73: * The whole process also accepts a p4 filespec
74: */
75: String p4cmd = "-s revert";
76: if (onlyUnchanged) {
77: p4cmd += " -a";
78: }
79:
80: if (revertChange != null) {
81: p4cmd += " -c " + revertChange;
82: }
83:
84: execP4Command(p4cmd + " " + P4View, new SimpleP4OutputHandler(
85: this));
86: }
87: }
|