/******************************************************************************* * Copyright (c) 2012 Pivotal Software, 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: * Pivotal Software, Inc. - initial API and implementation *******************************************************************************/ package com.vmware.vfabric.ide.eclipse.tcserver.internal.core; /** * @author Steffen Pingel * @author Christian Dupuis */ public class TcServerVersion { private final int major; private final int minor; private final int micro; private final String qualifier; public TcServerVersion(String version) { String[] segments = version == null ? new String[0] : version.split("\\.", 4); //$NON-NLS-1$ major = segments.length > 0 ? parse(segments[0]) : 0; minor = segments.length > 1 ? parse(segments[1]) : 0; micro = segments.length > 2 ? parse(segments[2]) : 0; qualifier = segments.length > 3 ? segments[3] : ""; } public int compareTo(TcServerVersion v) { if (major < v.major) { return -1; } else if (major > v.major) { return 1; } if (minor < v.minor) { return -1; } else if (minor > v.minor) { return 1; } if (micro < v.micro) { return -1; } else if (micro > v.micro) { return 1; } return qualifier.compareTo(v.qualifier); } private int parse(String segment) { try { return segment.length() == 0 ? 0 : Integer.parseInt(segment); } catch (NumberFormatException e) { return 0; } } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(Integer.toString(major)); sb.append(".").append(Integer.toString(minor)); //$NON-NLS-1$ if (micro > 0) { sb.append(".").append(Integer.toString(micro)); //$NON-NLS-1$ } if (qualifier.length() > 0) { sb.append(".").append(qualifier); //$NON-NLS-1$ } return sb.toString(); } }