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
Un SemVer est en plusieurs elements dont chaque element peut avoir plusieurs composant. Les composants sont utilise le meme separateur '.'.
  • 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 '-'
Le mieux pour construire ou modifier un SemVer est d'utilise une methode creator:
  • 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 class  SemVer.SemVerCreator
    Construit 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.String build  
    static java.lang.String BUILD_SEPARATOR
    Separateur utiliser devant l'element build
    static java.lang.String PATTERN_BUILD
    pattern pour une partir de l'element build
    static java.lang.String PATTERN_PRERELEASE
    pattern pour une partie de l'element prerelease
    static java.lang.String PATTERN_VERSION
    pattern pour une partie de l'element version
    protected java.lang.String prerelease  
    static java.lang.String PRERELEASE_SEPARATOR
    Seperateur entre la version et l'element prerelease
    static java.lang.String SERIES_SEPARATOR
    Separateur utiliser entre chaque element d'une partie
    protected java.lang.String snapshot  
    static java.lang.String SNAPSHOT
    la chaine de caractere representant le SNAPSHOT
    static java.lang.String SNAPSHOT_SEPARATOR
    Separateur de SNAPSHOT
    protected java.lang.String version  
  • 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
    boolean after​(SemVer o)  
    boolean before​(SemVer o)  
    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
    int compareTo​(SemVer other)  
    static SemVer.SemVerCreator creator()
    Retourne un Createur sans aucune information.
    static SemVer.SemVerCreator creator​(int... v)
    Createur qui permet de passer en parametre les different composante de l'element version
    static SemVer.SemVerCreator creator​(java.lang.String... v)
    Permet de creer un objet version.
    static SemVer.SemVerCreator creator​(SemVer v)
    Create creator initialized with SemVer value, you can change some Element by puting null value.
    boolean equals​(java.lang.Object o)  
    java.lang.String getBuild()  
    java.lang.String getBuild​(int i)
    Retourne un des composants de l'element version
    int getBuildCount()
    Donne le nombre de composante de la Prerelease 1.2.3 retourne 3 99.100 retourne 2
    protected java.lang.String getComposant​(java.lang.String element, int i)
    Retourne un des composants de l'element version
    protected int getComposantCount​(java.lang.String element)
    Donne le nombre de composante de l'element 1.2.3 retourne 3 99.100 retourne 2
    SemVer.SemVerCreator 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
    java.lang.String getMajor()  
    java.lang.String getMinor()  
    java.lang.String getPatch()  
    java.lang.String getPrerelease()  
    java.lang.String getPrerelease​(int i)
    Retourne un des composants de l'element version
    int getPrereleaseCount()
    Donne le nombre de composante de la Prerelease 1.2.3 retourne 3 99.100 retourne 2
    java.lang.String getSnapshot()  
    java.lang.String getVersion()  
    java.lang.String getVersion​(int i)
    Retourne un des composants de l'element version
    int getVersionCount()
    Donne le nombre de composante de la version 1.2.3 retourne 3 99.100 retourne 2
    int hashCode()  
    protected static java.lang.String ifNotNull​(java.lang.String prefix, java.lang.String s)  
    static boolean isSemVer​(java.lang.String version)
    Indique si la chaine represente bien une version au format SemVer
    boolean isSnapshot()  
    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
    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
    java.lang.String toJavaIdentifier()
    Convertit la representation textuelle de la version en identifiant java valide : - en java : "-" "." "+" interdit
    java.lang.String toString()  

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

  • 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

      public boolean before​(SemVer o)
      Parameters:
      o - the other version to test
      Returns:
      true if current version is before the given one
    • after

      public boolean after​(SemVer o)
      Parameters:
      o - the other version to test
      Returns:
      true if current version is after the given one
    • compareTo

      public int compareTo​(SemVer other)
      Specified by:
      compareTo in interface java.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 - FIXME
      b - FIXME
      nullIsHigh - 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 - FIXME
      b - 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 - FIXME
      b - 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 - FIXME
      i - 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:
      equals in class java.lang.Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class java.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:
      toString in class java.lang.Object
    • getCreator

      public SemVer.SemVerCreator 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

      public static SemVer.SemVerCreator creator​(java.lang.String... v)
      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 snapshot
       SemVer 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

      public static SemVer.SemVerCreator creator​(int... v)
      Createur qui permet de passer en parametre les different composante de l'element version
      Parameters:
      v - FIXME
      Returns:
      FIXME
    • creator

      public static SemVer.SemVerCreator creator​(SemVer v)
      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

      public static SemVer.SemVerCreator 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