View Javadoc

1   package es.caib.signatura.impl;
2   
3   import java.net.URL;
4   import java.net.URLEncoder;
5   
6   import es.caib.signatura.api.SignerFactory;
7   
8   
9   
10  /**
11   * 
12   */
13  public class SigUtil
14  {
15  
16  	// Codigo de los sistemas operativos.
17  	public static String		OS_UNAVAILABLE		= "No disponible";
18  
19  	public static String		OS_UNKNOWN			= "Desconocido";
20  
21  	public static String		OS_WINDOWS			= "windows";
22  
23  	public static String		OS_LINUX			= "Linux";
24  
25  	public static String		OS_MAC				= "Mac";
26  
27  	public static String		OS_REGEXP_WINDOWS	= "\\A(?i:win).*\\z";
28  
29  	// 	Comença per win, ignore case.
30  
31  	public static String		OS_REGEXP_LINUX		= "\\A(?i:linux).*\\z";
32  
33  	// 	Comença per linux, ignore case.
34  
35  	public static String		OS_REGEXP_MAC		= "\\A(?i:mac).*\\z";
36  
37  	// 	Comença per mac, ignore case.
38  
39  	// private final static String	INSTALL_URL			= "http://www.caib.es:8080/signaturacaib/install.jnlp";
40  	// private final static String	INSTALL_URL			= "http://www.caib.es:80/signaturacaib/install.jnlp";
41  
42  	/**
43  	 * Obtiene el código del sistema operativo actual en que corre
44  	 * la máquina virtual de Java.
45  	 * 
46  	 * <p>Devuelve OS_UNKNOWN si no es capz de determinar el sistema operativo
47  	 * y OS_UNAVAILABLE si ha tenido problemas (seguramente de seguridad) para
48  	 * obtener la información de la JVM.
49  	 * 
50  	 * @return Sistema operativo en que se ejecuta la JVM.
51  	 */
52  	public static String getCurrentOs()
53  	{
54  		// if( SigDebug.isActive() ) SigDebug.write("Detección del OS");
55  		String currentOsName = null;
56  		try {
57  			currentOsName = System.getProperty("os.name");
58  		} catch (Throwable t) {
59  			currentOsName = null;
60  			// if( SigDebug.isActive() ) SigDebug.write("    Error obteniendo el sistema operativo: " + t.toString());
61  			t.printStackTrace();
62  		}
63  
64  		if (currentOsName == null || currentOsName.length() == 0) {
65  			// if( SigDebug.isActive() ) SigDebug.write("    Incapaz de obtener el sistema operativo.");
66  			return OS_UNAVAILABLE;
67  		}
68  
69  		if (currentOsName != null) {
70  			// if( SigDebug.isActive() ) SigDebug.write("    Nombre del sistema operativo: " + currentOsName);
71  			if (currentOsName.matches(OS_REGEXP_WINDOWS)) {
72  				// if( SigDebug.isActive() ) SigDebug.write("  - Sistema operativo Windows.");
73  				return OS_WINDOWS;
74  			} else if (currentOsName.matches(OS_REGEXP_LINUX)) {
75  				// if( SigDebug.isActive() ) SigDebug.write("  - Sistema operativo Linux.");
76  				return OS_LINUX;
77  			} else if (currentOsName.matches(OS_REGEXP_MAC)) {
78  				// if( SigDebug.isActive() ) SigDebug.write("  - Sistema operativo Mac.");
79  				return OS_MAC;
80  			}
81  		}
82  		// if( SigDebug.isActive() ) SigDebug.write("  - Sistema operativo desconocido.");
83  		return OS_UNKNOWN;
84  	}
85  
86  	/**
87  	 * Obtiene el path de la JVM de java que executa el procés actual.
88  	 * 
89  	 * @return Path del JVM o null si no lo puede calcular.
90  	 */
91  	public static String getCurrentJVMPath()
92  	{
93  		try {
94  			return System.getProperty("java.home");
95  		} catch (Throwable t) {
96  			t.printStackTrace();
97  		}
98  
99  		return null;
100 	}
101 
102 	/**
103 	 * Obtiene la URL de instalación de la API.
104 	 * 
105 	 * @return URL de actualización.
106 	 */
107 	public static URL getUpgradeUrl()
108 	{
109 		try {
110 			SignerFactory sf = new SignerFactory();
111 			String updateSite = sf.getUpdateSite().toString();
112 			if ( updateSite != null && !updateSite.equals("")) {
113 				String installUrl = updateSite + "/install.jnlp";
114 				// if( SigDebug.isActive() ) SigDebug.write("Obtenint URL d'actualitzacio ...");
115 				String surl = installUrl + "?os=" + URLEncoder.encode(getCurrentOs(), "UTF-8");
116 				String jvm = getCurrentJVMPath();
117 				if (jvm != null && jvm.length() > 0) {
118 					surl += "&jvm=" + URLEncoder.encode(jvm, "UTF-8");
119 				}
120 				URL url = new URL(surl);
121 				// if( SigDebug.isActive() ) SigDebug.write("   URL = " + url.toString()); 
122 				return url;
123 			}
124 		} catch (Exception e) {
125 			e.printStackTrace();
126 		}
127 		return null;
128 	}
129 }