Class SemVer

  • All Implemented Interfaces:
    Comparable<SemVer>

    public class SemVer
    extends Object
    implements 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
    • Constructor Detail

      • SemVer

        public SemVer​(String versionString)
        Create new Version object, strip is done on argument to remove extra space
        Parameters:
        versionString - FIXME
        Throws:
        IllegalArgumentException - if argument isn't valid version string
    • Method Detail

      • 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
      • compare

        protected int compare​(String a,
                              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​(String a,
                                 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​(String a,
                                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​(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 String getComposant​(String element,
                                      int i)
        Retourne un des composants de l'element version
        Parameters:
        element - FIXME
        i - FIXME
        Returns:
        FIXME
      • getVersion

        public 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 String getVersion​(int i)
        Retourne un des composants de l'element version
        Parameters:
        i - FIXME
        Returns:
        FIXME
      • getMajor

        public String getMajor()
      • getMinor

        public String getMinor()
      • getPatch

        public String getPatch()
      • getPrerelease

        public 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 String getPrerelease​(int i)
        Retourne un des composants de l'element version
        Parameters:
        i - FIXME
        Returns:
        FIXME
      • getBuild

        public 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 String getBuild​(int i)
        Retourne un des composants de l'element version
        Parameters:
        i - FIXME
        Returns:
        FIXME
      • getSnapshot

        public String getSnapshot()
      • isSnapshot

        public boolean isSnapshot()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • toJavaIdentifier

        public 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 '_'
      • 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​(String version)
        Indique si la chaine represente bien une version au format SemVer
        Parameters:
        version - FIXME
        Returns:
        FIXME
      • creator

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