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}