1 /* 2 * Copyright (C) 2010, Mathias Kinzler <mathias.kinzler@sap.com> and others 3 * 4 * This program and the accompanying materials are made available under the 5 * terms of the Eclipse Distribution License v. 1.0 which is available at 6 * https://www.eclipse.org/org/documents/edl-v10.php. 7 * 8 * SPDX-License-Identifier: BSD-3-Clause 9 */ 10 package org.eclipse.jgit.api; 11 12 import java.util.ArrayList; 13 import java.util.List; 14 15 /** 16 * Encapsulates the result of a {@link org.eclipse.jgit.api.CheckoutCommand} 17 */ 18 public class CheckoutResult { 19 20 /** 21 * The {@link Status#ERROR} result; 22 */ 23 public static final CheckoutResultheckoutResult">CheckoutResult ERROR_RESULT = new CheckoutResult( 24 Status.ERROR, null); 25 26 /** 27 * The {@link Status#NOT_TRIED} result; 28 */ 29 public static final CheckoutResultoutResult">CheckoutResult NOT_TRIED_RESULT = new CheckoutResult( 30 Status.NOT_TRIED, null); 31 32 /** 33 * The status 34 */ 35 public enum Status { 36 /** 37 * The call() method has not yet been executed 38 */ 39 NOT_TRIED, 40 /** 41 * Checkout completed normally 42 */ 43 OK, 44 /** 45 * Checkout has not completed because of checkout conflicts 46 */ 47 CONFLICTS, 48 /** 49 * Checkout has completed, but some files could not be deleted 50 */ 51 NONDELETED, 52 /** 53 * An Exception occurred during checkout 54 */ 55 ERROR; 56 } 57 58 private final Status myStatus; 59 60 private final List<String> conflictList; 61 62 private final List<String> undeletedList; 63 64 private final List<String> modifiedList; 65 66 private final List<String> removedList; 67 68 /** 69 * Create a new fail result. If status is {@link Status#CONFLICTS}, 70 * <code>fileList</code> is a list of conflicting files, if status is 71 * {@link Status#NONDELETED}, <code>fileList</code> is a list of not deleted 72 * files. All other values ignore <code>fileList</code>. To create a result 73 * for {@link Status#OK}, see {@link #CheckoutResult(List, List)}. 74 * 75 * @param status 76 * the failure status 77 * @param fileList 78 * the list of files to store, status has to be either 79 * {@link Status#CONFLICTS} or {@link Status#NONDELETED}. 80 */ 81 CheckoutResult(Status status, List<String> fileList) { 82 this(status, fileList, null, null); 83 } 84 85 /** 86 * Create a new fail result. If status is {@link Status#CONFLICTS}, 87 * <code>fileList</code> is a list of conflicting files, if status is 88 * {@link Status#NONDELETED}, <code>fileList</code> is a list of not deleted 89 * files. All other values ignore <code>fileList</code>. To create a result 90 * for {@link Status#OK}, see {@link #CheckoutResult(List, List)}. 91 * 92 * @param status 93 * the failure status 94 * @param fileList 95 * the list of files to store, status has to be either 96 * {@link Status#CONFLICTS} or {@link Status#NONDELETED}. 97 * @param modified 98 * the modified files 99 * @param removed 100 * the removed files. 101 */ 102 CheckoutResult(Status status, List<String> fileList, List<String> modified, 103 List<String> removed) { 104 myStatus = status; 105 if (status == Status.CONFLICTS) 106 this.conflictList = fileList; 107 else 108 this.conflictList = new ArrayList<>(0); 109 if (status == Status.NONDELETED) 110 this.undeletedList = fileList; 111 else 112 this.undeletedList = new ArrayList<>(0); 113 114 this.modifiedList = modified; 115 this.removedList = removed; 116 } 117 118 /** 119 * Create a new OK result with modified and removed files. 120 * 121 * @param modified 122 * the modified files 123 * @param removed 124 * the removed files. 125 */ 126 CheckoutResult(List<String> modified, List<String> removed) { 127 myStatus = Status.OK; 128 129 this.conflictList = new ArrayList<>(0); 130 this.undeletedList = new ArrayList<>(0); 131 132 this.modifiedList = modified; 133 this.removedList = removed; 134 } 135 136 /** 137 * Get status 138 * 139 * @return the status 140 */ 141 public Status getStatus() { 142 return myStatus; 143 } 144 145 /** 146 * Get list of file that created a checkout conflict 147 * 148 * @return the list of files that created a checkout conflict, or an empty 149 * list if {@link #getStatus()} is not 150 * {@link org.eclipse.jgit.api.CheckoutResult.Status#CONFLICTS}; 151 */ 152 public List<String> getConflictList() { 153 return conflictList; 154 } 155 156 /** 157 * Get the list of files that could not be deleted during checkout 158 * 159 * @return the list of files that could not be deleted during checkout, or 160 * an empty list if {@link #getStatus()} is not 161 * {@link org.eclipse.jgit.api.CheckoutResult.Status#NONDELETED}; 162 */ 163 public List<String> getUndeletedList() { 164 return undeletedList; 165 } 166 167 /** 168 * Get the list of files that where modified during checkout 169 * 170 * @return the list of files that where modified during checkout, or an 171 * empty list if {@link #getStatus()} is not 172 * {@link org.eclipse.jgit.api.CheckoutResult.Status#OK} 173 */ 174 public List<String> getModifiedList() { 175 return modifiedList; 176 } 177 178 /** 179 * Get the list of files that where removed during checkout 180 * 181 * @return the list of files that where removed during checkout, or an empty 182 * list if {@link #getStatus()} is not 183 * {@link org.eclipse.jgit.api.CheckoutResult.Status#OK} 184 */ 185 public List<String> getRemovedList() { 186 return removedList; 187 } 188 }