/* * Copyright (C) 2010, Mathias Kinzler and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.api; import java.util.ArrayList; import java.util.List; /** * Encapsulates the result of a {@link org.eclipse.jgit.api.CheckoutCommand} */ public class CheckoutResult { /** * The {@link Status#ERROR} result; */ public static final CheckoutResult ERROR_RESULT = new CheckoutResult( Status.ERROR, null); /** * The {@link Status#NOT_TRIED} result; */ public static final CheckoutResult NOT_TRIED_RESULT = new CheckoutResult( Status.NOT_TRIED, null); /** * The status */ public enum Status { /** * The call() method has not yet been executed */ NOT_TRIED, /** * Checkout completed normally */ OK, /** * Checkout has not completed because of checkout conflicts */ CONFLICTS, /** * Checkout has completed, but some files could not be deleted */ NONDELETED, /** * An Exception occurred during checkout */ ERROR; } private final Status myStatus; private final List conflictList; private final List undeletedList; private final List modifiedList; private final List removedList; /** * Create a new fail result. If status is {@link Status#CONFLICTS}, * fileList is a list of conflicting files, if status is * {@link Status#NONDELETED}, fileList is a list of not deleted * files. All other values ignore fileList. To create a result * for {@link Status#OK}, see {@link #CheckoutResult(List, List)}. * * @param status * the failure status * @param fileList * the list of files to store, status has to be either * {@link Status#CONFLICTS} or {@link Status#NONDELETED}. */ CheckoutResult(Status status, List fileList) { this(status, fileList, null, null); } /** * Create a new fail result. If status is {@link Status#CONFLICTS}, * fileList is a list of conflicting files, if status is * {@link Status#NONDELETED}, fileList is a list of not deleted * files. All other values ignore fileList. To create a result * for {@link Status#OK}, see {@link #CheckoutResult(List, List)}. * * @param status * the failure status * @param fileList * the list of files to store, status has to be either * {@link Status#CONFLICTS} or {@link Status#NONDELETED}. * @param modified * the modified files * @param removed * the removed files. */ CheckoutResult(Status status, List fileList, List modified, List removed) { myStatus = status; if (status == Status.CONFLICTS) this.conflictList = fileList; else this.conflictList = new ArrayList<>(0); if (status == Status.NONDELETED) this.undeletedList = fileList; else this.undeletedList = new ArrayList<>(0); this.modifiedList = modified; this.removedList = removed; } /** * Create a new OK result with modified and removed files. * * @param modified * the modified files * @param removed * the removed files. */ CheckoutResult(List modified, List removed) { myStatus = Status.OK; this.conflictList = new ArrayList<>(0); this.undeletedList = new ArrayList<>(0); this.modifiedList = modified; this.removedList = removed; } /** * Get status * * @return the status */ public Status getStatus() { return myStatus; } /** * Get list of file that created a checkout conflict * * @return the list of files that created a checkout conflict, or an empty * list if {@link #getStatus()} is not * {@link org.eclipse.jgit.api.CheckoutResult.Status#CONFLICTS}; */ public List getConflictList() { return conflictList; } /** * Get the list of files that could not be deleted during checkout * * @return the list of files that could not be deleted during checkout, or * an empty list if {@link #getStatus()} is not * {@link org.eclipse.jgit.api.CheckoutResult.Status#NONDELETED}; */ public List getUndeletedList() { return undeletedList; } /** * Get the list of files that where modified during checkout * * @return the list of files that where modified during checkout, or an * empty list if {@link #getStatus()} is not * {@link org.eclipse.jgit.api.CheckoutResult.Status#OK} */ public List getModifiedList() { return modifiedList; } /** * Get the list of files that where removed during checkout * * @return the list of files that where removed during checkout, or an empty * list if {@link #getStatus()} is not * {@link org.eclipse.jgit.api.CheckoutResult.Status#OK} */ public List getRemovedList() { return removedList; } }