tikhomirov@445: /* tikhomirov@649: * Copyright (c) 2012-2013 TMate Software Ltd tikhomirov@445: * tikhomirov@445: * This program is free software; you can redistribute it and/or modify tikhomirov@445: * it under the terms of the GNU General Public License as published by tikhomirov@445: * the Free Software Foundation; version 2 of the License. tikhomirov@445: * tikhomirov@445: * This program is distributed in the hope that it will be useful, tikhomirov@445: * but WITHOUT ANY WARRANTY; without even the implied warranty of tikhomirov@445: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the tikhomirov@445: * GNU General Public License for more details. tikhomirov@445: * tikhomirov@445: * For information on how to redistribute this software under tikhomirov@445: * the terms of a license other than GNU General Public License tikhomirov@445: * contact TMate Software at support@hg4j.com tikhomirov@445: */ tikhomirov@445: package org.tmatesoft.hg.repo; tikhomirov@445: tikhomirov@445: /** tikhomirov@445: * Phases for a changeset is a new functionality in Mercurial 2.1 tikhomirov@445: * tikhomirov@626: * @since 1.1 tikhomirov@445: * @author Artem Tikhomirov tikhomirov@445: * @author TMate Software Ltd. tikhomirov@445: */ tikhomirov@445: public enum HgPhase { tikhomirov@445: tikhomirov@445: Public("public"), Draft("draft"), Secret("secret"), Undefined(""); tikhomirov@445: tikhomirov@445: private final String hgString; tikhomirov@445: tikhomirov@445: private HgPhase(String stringRepresentation) { tikhomirov@445: hgString = stringRepresentation; tikhomirov@445: } tikhomirov@445: tikhomirov@445: // public String toMercurialString() { tikhomirov@445: // return hgString; tikhomirov@445: // } tikhomirov@445: tikhomirov@445: public static HgPhase parse(int value) { tikhomirov@445: switch (value) { tikhomirov@445: case 0 : return Public; tikhomirov@445: case 1 : return Draft; tikhomirov@445: case 2 : return Secret; tikhomirov@445: } tikhomirov@445: throw new IllegalArgumentException(String.format("Bad phase index: %d", value)); tikhomirov@445: } tikhomirov@474: tikhomirov@474: public static HgPhase parse(String value) { tikhomirov@474: if (Public.hgString.equals(value)) { tikhomirov@474: return Public; tikhomirov@474: } tikhomirov@474: if (Draft.hgString.equals(value)) { tikhomirov@474: return Draft; tikhomirov@474: } tikhomirov@474: if (Secret.hgString.equals(value)) { tikhomirov@474: return Secret; tikhomirov@474: } tikhomirov@474: throw new IllegalArgumentException(String.format("Bad phase name: %d", value)); tikhomirov@474: } tikhomirov@649: tikhomirov@649: /** tikhomirov@649: * @return integer value Mercurial uses to identify the phase tikhomirov@649: */ tikhomirov@649: public int mercurialOrdinal() { tikhomirov@649: if (this == Undefined) { tikhomirov@649: throw new IllegalStateException("Undefined phase is an artifical value, which doesn't possess a valid native mercurial ordinal"); tikhomirov@649: } tikhomirov@649: return ordinal(); // what a coincidence tikhomirov@649: } tikhomirov@652: tikhomirov@652: public String mercurialString() { tikhomirov@652: return hgString; tikhomirov@652: } tikhomirov@445: }