/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.svn.shared; /** * Represents the status of a path. */ public class StatusItem { public enum FileState { ADDED("A"), CONFLICTED("C"), DELETED("D"), IGNORED("I"), MISSING("!"), MODIFIED("M"), OBSTRUCTED("~"), REPLACED("R"), UNCHANGED(" "), UNVERSIONED("?"), UNVERSIONED_EXTERNAL_DIRECTORY("X"); private String value; FileState(String value) { this.value = value; } public String getValue() { return value; } public static FileState fromChar(final char state) { switch (state) { case ' ': return UNCHANGED; case 'A': return ADDED; case 'C': return CONFLICTED; case 'D': return DELETED; case 'I': return IGNORED; case '!': return MISSING; case 'M': return MODIFIED; case '~': return OBSTRUCTED; case 'R': return REPLACED; case '?': return UNVERSIONED; case 'X': return UNVERSIONED_EXTERNAL_DIRECTORY; default: throw new IllegalArgumentException("'" + state + "' is not a valid file state"); } } } public enum PropertyState { CONFLICTED, MODIFIED, UNCHANGED; public static PropertyState fromChar(final char state) { switch (state) { case 'C': return CONFLICTED; case 'M': return MODIFIED; case ' ': return UNCHANGED; default: throw new IllegalArgumentException("'" + state + "' is not a valid property state"); } } } public enum LockState { LOCKED, UNLOCKED; public static LockState fromChar(final char state) { switch (state) { case 'L': return LOCKED; case ' ': return UNLOCKED; default: throw new IllegalArgumentException("'" + state + "' is not a valid lock state"); } } } public enum HistoryState { HISTORY, NO_HISTORY; public static HistoryState fromChar(final char state) { switch (state) { case '+': return HISTORY; case ' ': return NO_HISTORY; default: throw new IllegalArgumentException("'" + state + "' is not a valid history state"); } } } public enum RemoteState { EXTERNAL, NORMAL, SWITCHED; public static RemoteState fromChar(final char state) { switch (state) { case 'X': return EXTERNAL; case ' ': return NORMAL; case 'S': return SWITCHED; default: throw new IllegalArgumentException("'" + state + "' is not a valid remote state"); } } } public enum RepositoryLockState { LOCKED, NO_LOCK; public static RepositoryLockState fromChar(final char state) { switch (state) { case 'L': return LOCKED; case ' ': return NO_LOCK; default: throw new IllegalArgumentException("'" + state + "' is not a valid repository lock state"); } } } public enum TreeConflictState { CONFLICTED, NORMAL; public static TreeConflictState fromChar(final char state) { switch (state) { case 'C': return CONFLICTED; case ' ': return NORMAL; default: throw new IllegalArgumentException("'" + state + "' is not a valid tree conflict state"); } } } private FileState fileState; private PropertyState propertyState; private LockState lockState; private HistoryState historyState; private RemoteState remoteState; private RepositoryLockState repositoryLockState; private TreeConflictState treeConflictState; private String path; public StatusItem(final String cliLine) { final char[] states = cliLine.substring(0, 7).toCharArray(); fileState = FileState.fromChar(states[0]); propertyState = PropertyState.fromChar(states[1]); lockState = LockState.fromChar(states[2]); historyState = HistoryState.fromChar(states[3]); remoteState = RemoteState.fromChar(states[4]); repositoryLockState = RepositoryLockState.fromChar(states[5]); treeConflictState = TreeConflictState.fromChar(states[6]); path = cliLine.substring(8); } public FileState getFileState() { return fileState; } public void setFileState(final FileState fileState) { this.fileState = fileState; } public PropertyState getPropertyState() { return propertyState; } public void setPropertyState(final PropertyState propertyState) { this.propertyState = propertyState; } public LockState getLockState() { return lockState; } public void setLockState(final LockState lockState) { this.lockState = lockState; } public HistoryState getHistoryState() { return historyState; } public void setHistoryState(final HistoryState historyState) { this.historyState = historyState; } public RemoteState getRemoteState() { return remoteState; } public void setRemoteState(final RemoteState remoteState) { this.remoteState = remoteState; } public RepositoryLockState getRepositoryLockState() { return repositoryLockState; } public void setRepositoryLockState(final RepositoryLockState repositoryLockState) { this.repositoryLockState = repositoryLockState; } public TreeConflictState getTreeConflictState() { return treeConflictState; } public void setTreeConflictState(final TreeConflictState treeConflictState) { this.treeConflictState = treeConflictState; } public String getPath() { return path; } public void setPath(final String path) { this.path = path; } }