Clover Coverage Report
Coverage timestamp: Sun Mar 23 2008 08:24:39 GMT
23   140   8   7.67
10   46   0.43   3
3     3.33  
1    
 
 
  Version       Line # 59 23 8 13.9% 0.1388889
 
No Tests
 
1    /*
2    * Copyright (c) 2006, University of Kent
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are met:
7    *
8    * Redistributions of source code must retain the above copyright notice, this
9    * list of conditions and the following disclaimer.
10    *
11    * Redistributions in binary form must reproduce the above copyright notice,
12    * this list of conditions and the following disclaimer in the documentation
13    * and/or other materials provided with the distribution.
14    *
15    * 1. Neither the name of the University of Kent nor the names of its
16    * contributors may be used to endorse or promote products derived from this
17    * software without specific prior written permission.
18    *
19    * 2. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
20    * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
21    * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22    * PURPOSE ARE DISCLAIMED.
23    *
24    * 3. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25    * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26    * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27    * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28    * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29    * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30    * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31    * POSSIBILITY OF SUCH DAMAGE.
32    *
33    * 4. YOU AGREE THAT THE EXCLUSIONS IN PARAGRAPHS 2 AND 3 ABOVE ARE REASONABLE
34    * IN THE CIRCUMSTANCES. IN PARTICULAR, YOU ACKNOWLEDGE (1) THAT THIS
35    * SOFTWARE HAS BEEN MADE AVAILABLE TO YOU FREE OF CHARGE, (2) THAT THIS
36    * SOFTWARE IS NOT "PRODUCT" QUALITY, BUT HAS BEEN PRODUCED BY A RESEARCH
37    * GROUP WHO DESIRE TO MAKE THIS SOFTWARE FREELY AVAILABLE TO PEOPLE WHO WISH
38    * TO USE IT, AND (3) THAT BECAUSE THIS SOFTWARE IS NOT OF "PRODUCT" QUALITY
39    * IT IS INEVITABLE THAT THERE WILL BE BUGS AND ERRORS, AND POSSIBLY MORE
40    * SERIOUS FAULTS, IN THIS SOFTWARE.
41    *
42    * 5. This license is governed, except to the extent that local laws
43    * necessarily apply, by the laws of England and Wales.
44    */
45    package issrg.utils;
46   
47    import java.util.ResourceBundle;
48    import java.util.MissingResourceException;
49    import java.util.Date;
50    import java.text.SimpleDateFormat;
51    import java.text.ParseException;
52   
53    /**
54    * This class stores the version information about a given package. Use it to
55    * collect the version from a bundle.
56    *
57    * @author A.Otenko
58    */
 
59    public class Version {
60    protected static final String VERSION_MAJOR_PROPERTY="version.major";
61    protected static final String VERSION_MINOR_PROPERTY="version.minor";
62    protected static final String VERSION_MINOR_MINOR_PROPERTY="version.minor.minor";
63    protected static final String RELEASE_DATE_PATTERN_PROPERTY="release.date.pattern";
64    protected static final String RELEASE_DATE_PROPERTY="release.date";
65   
66    /**
67    * The default date pattern, if the pattern is missing in the bundle:
68    * "yyyy/MM/dd HH:mm".
69    */
70    protected static final String DEFAULT_DATE_PATTERN="yyyy/MM/dd HH:mm";
71   
72    String version;
73    Date date;
74   
75    /**
76    * This constructor builds a Version object given a resource bundle name
77    * and a package name. It assumes there are <pkg>.version.major,
78    * <pkg>.version.minor, <pkg>.release.date.pattern and
79    * <pkg>.release.date properties. If some are missing, or the pattern
80    * of the date does not let parse the release date, the corresponding values
81    * will be null. If the date pattern is not available, the
82    * DEFAULT_DATE_PATTERN is used.
83    *
84    * @param bundle - the bundle name
85    * @param pkg - the package name, which is the prefix used to get the version
86    * information properties in the bundle (e.g. "acm" is prefixed to
87    * get "version.major" for ACM)
88    */
 
89  9 toggle public Version(String bundle, String pkg){
90  9 try{
91  9 ResourceBundle rbl = ResourceBundle.getBundle(bundle);
92   
93  0 String s=rbl.getString(pkg+"."+VERSION_MAJOR_PROPERTY);
94  0 if (s!=null){
95  0 version=s+".";
96  0 s=rbl.getString(pkg+"."+VERSION_MINOR_PROPERTY);
97  0 if (s!=null) version+=s+".";
98  0 else version+="0.";
99  0 s=rbl.getString(pkg+"."+VERSION_MINOR_MINOR_PROPERTY);
100  0 if (s!=null) version+=s;
101  0 else version+="0";
102    }
103   
104  0 s=rbl.getString(pkg+"."+RELEASE_DATE_PATTERN_PROPERTY);
105  0 if (s==null) s=DEFAULT_DATE_PATTERN;
106   
107  0 SimpleDateFormat sdf=new SimpleDateFormat(s);
108  0 s=rbl.getString(pkg+"."+RELEASE_DATE_PROPERTY);
109  0 try{
110  0 if (s!=null) date=sdf.parse(s);
111    }catch(ParseException pe){
112    // ignore
113    }
114    }catch(MissingResourceException em){
115    // ignore
116    }
117    }
118   
119    /**
120    * This method returns the version string.
121    *
122    * @return version string in a form "major.minor", or null, if no version
123    * is available; if "minor" is not available, "0" will be displayed as the
124    * minor version
125    */
 
126  5 toggle public String getVersion(){
127  5 return version;
128    }
129   
130    /**
131    * This method returns the date of releasing the package, as recorded in the
132    * resource bundle.
133    *
134    * @return the date, or null, if date was not available, or the pattern
135    * specified could not be applied
136    */
 
137  0 toggle public Date getReleaseDate(){
138  0 return date;
139    }
140    }