/**
* Copyright (c) 2010 Darmstadt University of Technology.
* 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:
* Johannes Lerch - initial API and implementation.
* Olav Lenz - adapt for the use in the new api.
*/
package org.eclipse.recommenders.coordinates.osgi;
import static com.google.common.base.Optional.*;
import java.util.StringTokenizer;
import com.google.common.base.Optional;
public final class OsgiVersionParser {
public static Optional<String> parse(final String version) {
int major = 0;
int minor = 0;
int micro = 0;
try {
final StringTokenizer tokenizer = new StringTokenizer(version, ".", true);
major = parseInt(tokenizer);
if (tokenizer.hasMoreTokens()) {
consumeDelimiter(tokenizer);
minor = parseInt(tokenizer);
if (tokenizer.hasMoreTokens()) {
consumeDelimiter(tokenizer);
micro = parseInt(tokenizer);
}
}
} catch (final RuntimeException e) {
return absent();
}
return of(major + "." + minor + "." + micro);
}
private static int parseInt(final StringTokenizer st) {
String token = st.nextToken();
return Integer.parseInt(token);
}
private static void consumeDelimiter(final StringTokenizer st) {
st.nextToken();
}
private OsgiVersionParser() {
}
}