public static VersionConstraint valueOf()

in nuget-common/src/jetbrains/buildServer/nuget/common/version/VersionConstraint.java [22:89]


  public static VersionConstraint valueOf(@Nullable String value) {
    if(StringUtil.isEmpty(value)) return null;
    value = value.trim();
    final VersionConstraint versionSpec = new VersionConstraint();

    final SemanticVersion version = SemanticVersion.valueOf(value);
    if ( version != null )
    {
      versionSpec.myIsMinInclusive = true;
      versionSpec.myMinVersion = version;
      return versionSpec;
    }

    if ( value.length() < 3 ) return null;

    switch ( value.charAt( 0 ) )
    {
      case '[':
        versionSpec.myIsMinInclusive = true;
        break;
      case '(':
        versionSpec.myIsMinInclusive = false;
        break;
      default:
        return null;
    }

    switch ( value.charAt( value.length() - 1 ) )
    {
      case ']':
        versionSpec.myIsMaxInclusive = true;
        break;
      case ')':
        versionSpec.myIsMaxInclusive = false;
        break;
      default:
        return null;
    }

    final String valueTrimmed = value.substring(1, value.length() - 1);
    final List<String> parts = StringUtil.split(valueTrimmed, ",");
    String minVersionString = "";
    String maxVersionString = "";
    if(parts.size() == 2){
      minVersionString = parts.get(0);
      maxVersionString = parts.get(1);
    } else if (parts.size() == 1){
      if(valueTrimmed.indexOf(',') == -1){
        minVersionString = maxVersionString = parts.get(0);
      } else{
        if(valueTrimmed.startsWith(",")){
          maxVersionString = parts.get(0);
        } else if(valueTrimmed.endsWith(",")){
          minVersionString = parts.get(0);
        } else return null;
      }
    } else return null;

    SemanticVersion minVersion = SemanticVersion.valueOf(minVersionString);
    SemanticVersion maxVersion = SemanticVersion.valueOf(maxVersionString);

    if ( minVersion == null && maxVersion == null ) return null;

    versionSpec.myMinVersion = minVersion;
    versionSpec.myMaxVersion = maxVersion;

    return versionSpec;
  }