View Javadoc
1   /*
2    * @(#)VersionString.java	1.6 05/11/17
3    * 
4    * Copyright (c) 2006 Sun Microsystems, Inc. All Rights Reserved.
5    *
6    * Redistribution and use in source and binary forms, with or without
7    * modification, are permitted provided that the following conditions are met:
8    *
9    * -Redistribution of source code must retain the above copyright notice, this
10   *  list of conditions and the following disclaimer.
11   *
12   * -Redistribution in binary form must reproduce the above copyright notice,
13   *  this list of conditions and the following disclaimer in the documentation
14   *  and/or other materials provided with the distribution.
15   *
16   * Neither the name of Sun Microsystems, Inc. or the names of contributors may
17   * be used to endorse or promote products derived from this software without
18   * specific prior written permission.
19   *
20   * This software is provided "AS IS," without a warranty of any kind. ALL
21   * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
22   * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
23   * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN")
24   * AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE
25   * AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
26   * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST
27   * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL,
28   * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY
29   * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
30   * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
31   *
32   * You acknowledge that this software is not designed, licensed or intended
33   * for use in the design, construction, operation or maintenance of any
34   * nuclear facility.
35   */
36  
37  package jnlp.sample.util;
38  
39  import java.util.ArrayList;
40  import java.util.List;
41  import java.util.StringTokenizer;
42  
43  /*
44   * Utility class that knows to handle version strings
45   * A version string is of the form:
46   *
47   *  (version-id ('+'?) ' ') *
48   *
49   */
50  public class VersionString
51  {
52      private List<VersionID> _versionIds;
53  
54      /**
55       * Constructs a VersionString object from string
56       */
57      public VersionString( String vs )
58      {
59          _versionIds = new ArrayList<VersionID>();
60          if ( vs != null )
61          {
62              StringTokenizer st = new StringTokenizer( vs, " ", false );
63              while ( st.hasMoreElements() )
64              {
65                  // Note: The VersionID class takes care of a postfixed '+'
66                  _versionIds.add( new VersionID( st.nextToken() ) );
67              }
68          }
69      }
70  
71      /**
72       * Check if this VersionString object contains the VersionID m
73       */
74      public boolean contains( VersionID m )
75      {
76          for ( Object _versionId : _versionIds )
77          {
78              VersionID vi = (VersionID) _versionId;
79              boolean check = vi.match( m );
80              if ( check )
81              {
82                  return true;
83              }
84          }
85          return false;
86      }
87  
88      /**
89       * Check if this VersionString object contains the VersionID m, given as a string
90       */
91      public boolean contains( String versionid )
92      {
93          return contains( new VersionID( versionid ) );
94      }
95  
96      /**
97       * Check if this VersionString object contains anything greater than m
98       */
99      public boolean containsGreaterThan( VersionID m )
100     {
101         for ( Object _versionId : _versionIds )
102         {
103             VersionID vi = (VersionID) _versionId;
104             boolean check = vi.isGreaterThan( m );
105             if ( check )
106             {
107                 return true;
108             }
109         }
110         return false;
111     }
112 
113     /**
114      * Check if this VersionString object contains anything greater than the VersionID m, given as a string
115      */
116     public boolean containsGreaterThan( String versionid )
117     {
118         return containsGreaterThan( new VersionID( versionid ) );
119     }
120 
121     /**
122      * Check if the versionString 'vs' contains the VersionID 'vi'
123      */
124     static public boolean contains( String vs, String vi )
125     {
126         return ( new VersionString( vs ) ).contains( vi );
127     }
128 
129     /**
130      * Pretty-print object
131      */
132     public String toString()
133     {
134         StringBuilder sb = new StringBuilder();
135         for ( Object _versionId : _versionIds )
136         {
137             sb.append( _versionId.toString() );
138             sb.append( ' ' );
139         }
140         return sb.toString();
141     }
142 }
143 
144 
145