001/*
002 * Copyright 2004-2006 Geert Bevin <gbevin[remove] at uwyn dot com>
003 * Distributed under the terms of either:
004 * - the common development and distribution license (CDDL), v1.0; or
005 * - the GNU Lesser General Public License, v2.1 or later
006 * $Id: JHighlightVersion.java 3106 2006-03-13 17:53:50Z gbevin $
007 */
008package com.uwyn.jhighlight;
009
010import java.io.ByteArrayOutputStream;
011import java.io.IOException;
012import java.io.InputStream;
013import java.net.URL;
014import java.net.URLConnection;
015
016/**
017 * Provides acces to the version number of this JHighlight release.
018 * 
019 * @author Geert Bevin (gbevin[remove] at uwyn dot com)
020 * @version $Revision: 3106 $
021 * @since 1.0
022 */
023public class JHighlightVersion
024{
025        private String  mVersion = null;
026        
027        JHighlightVersion()
028        {
029                URL version_url = getClass().getClassLoader().getResource("JHIGHLIGHT_VERSION");
030                if (version_url != null)
031                {
032                        try
033                        {
034                                URLConnection connection = version_url.openConnection();
035                                connection.setUseCaches(false);
036                                InputStream inputStream = connection.getInputStream();
037                                
038                                byte[]                  buffer = new byte[64];
039                                int                     return_value = -1;
040                                ByteArrayOutputStream   output_stream = new ByteArrayOutputStream(buffer.length);
041                                
042                                try
043                                {
044                                        return_value = inputStream.read(buffer);
045                                        
046                                        while (-1 != return_value)
047                                        {
048                                                output_stream.write(buffer, 0, return_value);
049                                                return_value = inputStream.read(buffer);
050                                        }
051                                }
052                                finally
053                                {
054                                        output_stream.close();
055                                        inputStream.close();
056                                }
057                                
058                                mVersion = output_stream.toString("UTF-8");
059                        }
060                        catch (IOException e)
061                        {
062                                mVersion = null;
063                        }
064                }
065                
066                if (mVersion != null)
067                {
068                        mVersion = mVersion.trim();
069                }
070                if (null == mVersion)
071                {
072                        mVersion = "(unknown version)";
073                }
074        }
075        
076        private String getVersionString()
077        {
078                return mVersion;
079        }
080        
081        /**
082         * Returns the version number of this JHighlight release.
083         * 
084         * @return the version number
085         * @since 1.0
086         */
087        public static String getVersion()
088        {
089                return JHighlightVersionSingleton.INSTANCE.getVersionString();
090        }
091}