/******************************************************************************* * Copyright (c) 2011, 2012 Red Hat, Inc. * 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: * Red Hat Incorporated - initial API and implementation *******************************************************************************/ package org.eclipse.cdt.internal.autotools.core; public class VersionComparator { /** * Compare two version numbers if * return -1 if v1 is older than v2 0 if they are the same and +1 * if v1 is newer than v2 * * Version numbers are expected to be in the format x.y.z... * * So: * VersionComparator.compare("1.0", "1.2") return -1 * VersionComparator.compare("1.5", "1.2") returns 1 * VersionComparator.compare("1.5.1", "1.5.5") returns -1 * VersionComparator.compare("1.5", "1.5.1") returns 1 * VersionComparator.compare("1.5.1", "1.5.1") returns 0 */ public static int compare(String v1, String v2) { String[] v1digits = v1.split("\\."); String[] v2digits = v2.split("\\."); for (int i = 0; i < v1digits.length && i < v2digits.length; i++) { int d1 = Integer.valueOf(v1digits[i]); int d2 = Integer.valueOf(v2digits[i]); if (d1 < d2) return -1; if (d1 > d2) return 1; } // At this point all digits have the same value // so the version with the longer string wins if (v1digits.length < v2digits.length) return -1; if (v1digits.length > v2digits.length) return 1; return 0; } }