package com.feisystems.tools.maven;
import java.io.File;
import java.util.Scanner;
public class Version {
private int major;
private int minor;
private int revision;
private String qualifier;
private File file;
public Version() {
super();
this.major = Config.DEFAULT_VERSION;
this.minor = Config.DEFAULT_VERSION;
this.revision = Config.DEFAULT_VERSION;
this.qualifier = null;
this.file = null;
}
public int getMajor() {
return major;
}
public void setMajor(int major) {
this.major = major;
}
public int getMinor() {
return minor;
}
public void setMinor(int minor) {
this.minor = minor;
}
public int getRevision() {
return revision;
}
public void setRevision(int revision) {
this.revision = revision;
}
public String getQualifier() {
return qualifier;
}
public void setQualifier(String qualifier) {
this.qualifier = qualifier;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public static Version newVersion(File file) {
String unparsedVersion = file.getName();
final String environmentDelimiter = "-";
final String versionDelimiter = ".";
int major = Config.DEFAULT_VERSION;
int minor = Config.DEFAULT_VERSION;
int revision = Config.DEFAULT_VERSION;
String truncated = unparsedVersion;
String qualifier = null;
if (unparsedVersion.contains(environmentDelimiter)) {
int environmentDelimiterIndex = unparsedVersion
.indexOf(environmentDelimiter);
qualifier = unparsedVersion
.substring(environmentDelimiterIndex + 1);
truncated = unparsedVersion.substring(0, environmentDelimiterIndex);
}
Scanner versionScanner = new Scanner(truncated.replace(
versionDelimiter, environmentDelimiter));
versionScanner.useDelimiter(environmentDelimiter);
try {
if (versionScanner.hasNext())
major = Integer.parseInt(versionScanner.next());
if (versionScanner.hasNext())
minor = Integer.parseInt(versionScanner.next());
if (versionScanner.hasNext())
revision = Integer.parseInt(versionScanner.next());
} catch (NumberFormatException e) {
// do nothing
}
versionScanner.close();
Version version = new Version();
version.setMajor(major);
version.setMinor(minor);
version.setRevision(revision);
version.setQualifier(qualifier);
version.setFile(file);
return version;
}
@Override
public String toString() {
StringBuilder b = new StringBuilder();
if (this.major != Config.DEFAULT_VERSION)
append(b, this.major);
if (this.minor != Config.DEFAULT_VERSION)
append(b, this.minor);
if (this.revision != Config.DEFAULT_VERSION)
append(b, this.revision);
if (this.qualifier != null)
append(b, this.qualifier);
return b.toString();
}
private void append(StringBuilder stringBuilder, int i) {
stringBuilder.append((stringBuilder.length() > 0 ? "-" : "") + i);
}
private void append(StringBuilder stringBuilder, String s) {
stringBuilder.append((stringBuilder.length() > 0 ? "-" : "") + s);
}
}