package sk.stuba.fiit.perconik.osgi.framework;
import java.util.List;
import com.google.common.base.Joiner;
import org.osgi.framework.Version;
import static com.google.common.collect.Lists.newArrayListWithCapacity;
public final class Versions {
private static final String separator = ".";
private Versions() {}
public enum Component {
MAJOR {
@Override
public Integer get(final Version version) {
return version.getMajor();
}
},
MINOR {
@Override
public Integer get(final Version version) {
return version.getMinor();
}
},
MICRO {
@Override
public Integer get(final Version version) {
return version.getMicro();
}
},
QUALIFIER {
@Override
public String get(final Version version) {
return version.getQualifier();
}
};
public abstract Object get(final Version version);
@Override
public final String toString() {
return this.name().toLowerCase();
}
}
public static String separator() {
return separator;
}
public static Version parse(final String value) {
return Version.parseVersion(value);
}
public static String toString(final Version version, final Component ... components) {
List<Object> values = newArrayListWithCapacity(components.length);
for (Component component: components) {
values.add(component.get(version));
}
return Joiner.on(separator).join(values);
}
public static Version toVersion(final String value) {
try {
return Version.parseVersion(value);
} catch (RuntimeException e) {
return Version.emptyVersion;
}
}
}