Package org.nuiton.version
Class SemVer
java.lang.Object
org.nuiton.version.SemVer
- All Implemented Interfaces:
java.lang.Comparable<SemVer>
public class SemVer extends java.lang.Object implements java.lang.Comparable<SemVer>
Implantation de http://semver.org/.
Cette objet est immutable, Il faut utiliser
getCreator()
pour modifier un de ses elements
Quelques changement par rapport au site:
- le numero de version peut avoir entre 1 et N element, et non pas 3 obligatoirement
- on peut avoir un -SNAPSHOT ajoute en toute fin de la version
- version: 1 à N composant numerique, les 3 premiers sont nomme
- major
- minor
- patch
- prerelease: 0 à N composant alphanumerique, le prefix est '-'
- build: 0 à N composant alphanumerique, le prefix est '+'
- SNAPSHOT: 0 ou 1 composant dont le nom est fixe le prefix est '-'
- SemVer.creator(1,2,3).done() → "1.2.3"
- SemVer.creator("1.2.3","rc2").done() → "1.2.3-rc2"
- SemVer.creator().setVersion(2.3.4).setBuild("r223").done() → "2.3.4+r223"
- SemVer.creator().setVersion(2.3.4).setSnapshot(true).done() → "2.3.4-SNAPSHOT"
- SemVer.creator(new SemVer("1.2.3")).incMajor().done() → "2.2.2"
- new SemVer("1.2.3").getCreator().incMinor().setPrerelease(beta).done() → "1.3.3-beta"
- Since:
- 1.0
- Author:
- Benjamin Poussin - poussin@codelutin.com
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classSemVer.SemVerCreatorConstruit un objet version, la verification de la coherence est faite lors de l'appel du create. -
Field Summary
Fields Modifier and Type Field Description protected java.lang.Stringbuildstatic java.lang.StringBUILD_SEPARATORSeparateur utiliser devant l'element buildstatic java.lang.StringPATTERN_BUILDpattern pour une partir de l'element buildstatic java.lang.StringPATTERN_PRERELEASEpattern pour une partie de l'element prereleasestatic java.lang.StringPATTERN_VERSIONpattern pour une partie de l'element versionprotected java.lang.Stringprereleasestatic java.lang.StringPRERELEASE_SEPARATORSeperateur entre la version et l'element prereleasestatic java.lang.StringSERIES_SEPARATORSeparateur utiliser entre chaque element d'une partieprotected java.lang.Stringsnapshotstatic java.lang.StringSNAPSHOTla chaine de caractere representant le SNAPSHOTstatic java.lang.StringSNAPSHOT_SEPARATORSeparateur de SNAPSHOTprotected java.lang.Stringversion -
Constructor Summary
Constructors Constructor Description SemVer(java.lang.String versionString)Create new Version object, strip is done on argument to remove extra space -
Method Summary
Modifier and Type Method Description booleanafter(SemVer o)booleanbefore(SemVer o)protected intcompare(java.lang.String a, java.lang.String b, boolean nullIsHigh)Compare deux elements de meme semantique (version, prerelease, build, snapshot) sinon le comportement est non predictibleintcompareTo(SemVer other)static SemVer.SemVerCreatorcreator()Retourne un Createur sans aucune information.static SemVer.SemVerCreatorcreator(int... v)Createur qui permet de passer en parametre les different composante de l'element versionstatic SemVer.SemVerCreatorcreator(java.lang.String... v)Permet de creer un objet version.static SemVer.SemVerCreatorcreator(SemVer v)Create creator initialized with SemVer value, you can change some Element by puting null value.booleanequals(java.lang.Object o)java.lang.StringgetBuild()java.lang.StringgetBuild(int i)Retourne un des composants de l'element versionintgetBuildCount()Donne le nombre de composante de la Prerelease 1.2.3 retourne 3 99.100 retourne 2protected java.lang.StringgetComposant(java.lang.String element, int i)Retourne un des composants de l'element versionprotected intgetComposantCount(java.lang.String element)Donne le nombre de composante de l'element 1.2.3 retourne 3 99.100 retourne 2SemVer.SemVerCreatorgetCreator()Retourne un objet creator initialise avec les donnees de ce SemVer ce qui permet de creer un nouveau SemVer en modifiant un des elementsjava.lang.StringgetMajor()java.lang.StringgetMinor()java.lang.StringgetPatch()java.lang.StringgetPrerelease()java.lang.StringgetPrerelease(int i)Retourne un des composants de l'element versionintgetPrereleaseCount()Donne le nombre de composante de la Prerelease 1.2.3 retourne 3 99.100 retourne 2java.lang.StringgetSnapshot()java.lang.StringgetVersion()java.lang.StringgetVersion(int i)Retourne un des composants de l'element versionintgetVersionCount()Donne le nombre de composante de la version 1.2.3 retourne 3 99.100 retourne 2inthashCode()protected static java.lang.StringifNotNull(java.lang.String prefix, java.lang.String s)static booleanisSemVer(java.lang.String version)Indique si la chaine represente bien une version au format SemVerbooleanisSnapshot()protected intnullIsHigh(java.lang.String a, java.lang.String b)Ne compare par le chaine, seulement la nullite, si un des arguments est null, alors il est plus grand que l'autre. 1.0 est plus grand que 1.0-Betaprotected intnullIsLow(java.lang.String a, java.lang.String b)Ne compare par le chaine, seulement la nullite, si un des arguments est null, alors il est plus petit que l'autre. 1.0+r123 est plus grand que 1.0java.lang.StringtoJavaIdentifier()Convertit la representation textuelle de la version en identifiant java valide : - en java : "-" "." "+" interditjava.lang.StringtoString()
-
Field Details
-
SERIES_SEPARATOR
public static final java.lang.String SERIES_SEPARATORSeparateur utiliser entre chaque element d'une partie- See Also:
- Constant Field Values
-
PRERELEASE_SEPARATOR
public static final java.lang.String PRERELEASE_SEPARATORSeperateur entre la version et l'element prerelease- See Also:
- Constant Field Values
-
BUILD_SEPARATOR
public static final java.lang.String BUILD_SEPARATORSeparateur utiliser devant l'element build- See Also:
- Constant Field Values
-
PATTERN_VERSION
public static final java.lang.String PATTERN_VERSIONpattern pour une partie de l'element version- See Also:
- Constant Field Values
-
PATTERN_PRERELEASE
public static final java.lang.String PATTERN_PRERELEASEpattern pour une partie de l'element prerelease- See Also:
- Constant Field Values
-
PATTERN_BUILD
public static final java.lang.String PATTERN_BUILDpattern pour une partir de l'element build- See Also:
- Constant Field Values
-
SNAPSHOT_SEPARATOR
public static final java.lang.String SNAPSHOT_SEPARATORSeparateur de SNAPSHOT- See Also:
- Constant Field Values
-
SNAPSHOT
public static final java.lang.String SNAPSHOTla chaine de caractere representant le SNAPSHOT- See Also:
- Constant Field Values
-
version
protected java.lang.String version -
prerelease
protected java.lang.String prerelease -
build
protected java.lang.String build -
snapshot
protected java.lang.String snapshot
-
-
Constructor Details
-
SemVer
public SemVer(java.lang.String versionString)Create new Version object, strip is done on argument to remove extra space- Parameters:
versionString- FIXME- Throws:
java.lang.IllegalArgumentException- if argument isn't valid version string
-
-
Method Details
-
before
- Parameters:
o- the other version to test- Returns:
trueif current version is before the given one
-
after
- Parameters:
o- the other version to test- Returns:
trueif current version is after the given one
-
compareTo
- Specified by:
compareToin interfacejava.lang.Comparable<SemVer>
-
compare
protected int compare(java.lang.String a, java.lang.String b, boolean nullIsHigh)Compare deux elements de meme semantique (version, prerelease, build, snapshot) sinon le comportement est non predictible- Parameters:
a- FIXMEb- FIXMEnullIsHigh- indique si un des elements est null, s'il est plus grand ou plus petit que l'autre- Returns:
- negatif si a inferieur b, 0 si a == b, positif si a superieur a b
-
nullIsHigh
protected int nullIsHigh(java.lang.String a, java.lang.String b)Ne compare par le chaine, seulement la nullite, si un des arguments est null, alors il est plus grand que l'autre. 1.0 est plus grand que 1.0-Beta- Parameters:
a- FIXMEb- FIXME- Returns:
- FIXME
-
nullIsLow
protected int nullIsLow(java.lang.String a, java.lang.String b)Ne compare par le chaine, seulement la nullite, si un des arguments est null, alors il est plus petit que l'autre. 1.0+r123 est plus grand que 1.0- Parameters:
a- FIXMEb- FIXME- Returns:
- FIXME
-
getComposantCount
protected int getComposantCount(java.lang.String element)Donne le nombre de composante de l'element- 1.2.3 retourne 3
- 99.100 retourne 2
- Parameters:
element- FIXME- Returns:
- FIXME
-
getComposant
protected java.lang.String getComposant(java.lang.String element, int i)Retourne un des composants de l'element version- Parameters:
element- FIXMEi- FIXME- Returns:
- FIXME
-
getVersion
public java.lang.String getVersion() -
getVersionCount
public int getVersionCount()Donne le nombre de composante de la version- 1.2.3 retourne 3
- 99.100 retourne 2
- Returns:
- FIXME
-
getVersion
public java.lang.String getVersion(int i)Retourne un des composants de l'element version- Parameters:
i- FIXME- Returns:
- FIXME
-
getMajor
public java.lang.String getMajor() -
getMinor
public java.lang.String getMinor() -
getPatch
public java.lang.String getPatch() -
getPrerelease
public java.lang.String getPrerelease() -
getPrereleaseCount
public int getPrereleaseCount()Donne le nombre de composante de la Prerelease- 1.2.3 retourne 3
- 99.100 retourne 2
- Returns:
- FIXME
-
getPrerelease
public java.lang.String getPrerelease(int i)Retourne un des composants de l'element version- Parameters:
i- FIXME- Returns:
- FIXME
-
getBuild
public java.lang.String getBuild() -
getBuildCount
public int getBuildCount()Donne le nombre de composante de la Prerelease- 1.2.3 retourne 3
- 99.100 retourne 2
- Returns:
- FIXME
-
getBuild
public java.lang.String getBuild(int i)Retourne un des composants de l'element version- Parameters:
i- FIXME- Returns:
- FIXME
-
getSnapshot
public java.lang.String getSnapshot() -
isSnapshot
public boolean isSnapshot() -
ifNotNull
protected static java.lang.String ifNotNull(java.lang.String prefix, java.lang.String s) -
equals
public boolean equals(java.lang.Object o)- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()- Overrides:
hashCodein classjava.lang.Object
-
toJavaIdentifier
public java.lang.String toJavaIdentifier()Convertit la representation textuelle de la version en identifiant java valide : - en java : "-" "." "+" interdit- Returns:
- la valeur ou les carateres interdits sont remplaces par '_'
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-
getCreator
Retourne un objet creator initialise avec les donnees de ce SemVer ce qui permet de creer un nouveau SemVer en modifiant un des elements- Returns:
- FIXME
-
isSemVer
public static boolean isSemVer(java.lang.String version)Indique si la chaine represente bien une version au format SemVer- Parameters:
version- FIXME- Returns:
- FIXME
-
creator
Permet de creer un objet version. Si des arguments sont passer en parametre ils sont pris dans l'ordre pour: la version, la prerelease, le build, le snapshotSemVer v = SemVer.creator().setVersion("1.2").setPrerelease("beta.1").setBuild("r123").done(); SemVer v = SemVer.creator("1.2", "beta.1","r123", SemVer.SNAPSHOT).done();- Parameters:
v- FIXME- Returns:
- FIXME
-
creator
Createur qui permet de passer en parametre les different composante de l'element version- Parameters:
v- FIXME- Returns:
- FIXME
-
creator
Create creator initialized with SemVer value, you can change some Element by puting null value. SemVer n = SemVer.creator(v).setBuild("r123").setSnapshot(false).done();- Parameters:
v- FIXME- Returns:
- FIXME
-
creator
Retourne un Createur sans aucune information. Cette methode permet aussi de desambiguise les deux autres methode creator qui si elle n'ont pas de parametre sont semblable- Returns:
- FIXME
-