1. /*
  2. * Copyright 2001-2004 The Apache Software Foundation
  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. */
  17. /*
  18. * Portions of this software are based upon public domain software
  19. * originally written at the National Center for Supercomputing Applications,
  20. * University of Illinois, Urbana-Champaign.
  21. */
  22. package org.apache.tools.ant.taskdefs.optional.perforce;
  23. import org.apache.tools.ant.BuildException;
  24. /**
  25. * Revert Perforce open files or files in a changelist
  26. *
  27. *
  28. * @ant.task category="scm"
  29. */
  30. public class P4Revert extends P4Base {
  31. private String revertChange = null;
  32. private boolean onlyUnchanged = false;
  33. /**
  34. * The changelist to revert; optional.
  35. * @param revertChange : the change list to revert
  36. * @throws BuildException if the change list is null or empty string
  37. */
  38. public void setChange(String revertChange) throws BuildException {
  39. if (revertChange == null && !revertChange.equals("")) {
  40. throw new BuildException("P4Revert: change cannot be null or empty");
  41. }
  42. this.revertChange = revertChange;
  43. }
  44. /**
  45. * flag to revert only unchanged files (p4 revert -a); optional, default false.
  46. * @param onlyUnchanged if set to true revert only unchanged files
  47. */
  48. public void setRevertOnlyUnchanged(boolean onlyUnchanged) {
  49. this.onlyUnchanged = onlyUnchanged;
  50. }
  51. /**
  52. * do the work
  53. * @throws BuildException if an error occurs during the execution of the Perforce command
  54. * and failonError is set to true
  55. */
  56. public void execute() throws BuildException {
  57. /* Here we can either revert any unchanged files in a changelist
  58. * or
  59. * any files regardless of whether they have been changed or not
  60. *
  61. *
  62. * The whole process also accepts a p4 filespec
  63. */
  64. String p4cmd = "-s revert";
  65. if (onlyUnchanged) {
  66. p4cmd += " -a";
  67. }
  68. if (revertChange != null) {
  69. p4cmd += " -c " + revertChange;
  70. }
  71. execP4Command(p4cmd + " " + P4View, new SimpleP4OutputHandler(this));
  72. }
  73. }