/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.data.postgis; import java.io.IOException; import org.geotools.data.DataSourceException; /** * Simple struct used to specify with revision must be extracted, and eventually * from which branch (even if at the moment we don't have branches around). * * @author aaime * @since 2.4 * */ class RevisionInfo { long revision; String version; /** * RevisionInfo for the last revision in "trunk" */ public RevisionInfo() { revision = Long.MAX_VALUE; } public RevisionInfo(long revision) { this.revision = revision; } /** * Parses a version specification into a RevisionInfo object * * @param version * @throws IOException */ public RevisionInfo(String version) throws IOException { this.version = version; if (version == null || version.trim().equals("") || version.trim().equals("CURRENT") || version.trim().equals("LAST")) { revision = Long.MAX_VALUE; this.version = "LAST"; } else if(version.trim().equals("FIRST")) { revision = 1; this.version = "FIRST"; } else { try { revision = Long.parseLong(version); } catch (NumberFormatException e) { throw new DataSourceException("Unsupported revision format '" + version + "'", e); } } } public boolean isLast() { return revision == Long.MAX_VALUE; } public boolean isFirst() { return revision == 1; } /** * Returns the version in canonical form, that is, revision or "" if it's * the last revision * * @return */ public String getCanonicalVersion() { if (isLast()) return "LAST"; else if(isFirst()) return "FIRST"; else return String.valueOf(revision); } /** * Returns the original version used to create this revision info * * @return */ public String getVersion() { return version; } public String toString() { return getCanonicalVersion(); } }