/*
* Gestor.java
*
* Created on 2004
* Created by Arsenio Molinero
* Copyright (C) 2004, 2011 Arsenio Molinero
*
* GestDB - a Java multi database client
*
* This file is part of GestDB.
*
* GestDB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; eitherexitr version 2 of the License, or
* (at your option) any later version.
*
* GestDB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GestDB; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package com.GestDB;
import com.GestDB.convert.ImportarDlg;
import com.GestDB.convert.wizarExportarDatos;
import com.GestDB.general.Trackbug;
import com.GestDB.sql.BuscarYReemplazar;
import com.GestDB.sql.ConexionIFrame;
import com.GestDB.sql.ConexionTXT;
import com.GestDB.sql.SQLPannel;
import com.GestDB.sql.SelectConexion;
import com.GestDB.sql.addInternalFrame;
import com.GestDB.swing.*;
import com.GestDB.update.Updater;
import com.utils.utilidades;
import java.awt.Dimension;
import java.awt.Point;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JInternalFrame;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/**
*
* @author Arsenio Molinero
*/
public class Gestor extends javax.swing.JFrame {
/** Creates new form Gestor */
public Gestor() {
Trackbug.info("Inicio aplicaci�n");
try {
elGestorActivo = this;
try {
// cargar las librerias dinamicamente.
CargarLibrerias(this.getClass());
}catch(IOException ioe)
{
Trackbug.error(ioe, ioe.getMessage());
}
CargaPropiedades(this.getClass());
try {
// vamos con la parte gr�fica
String sskin = "Liquid";
String sskintheme = "";
if(propiedades.containsKey("gestor.skin"))
sskin = (String)propiedades.get("gestor.skin");
if(propiedades.containsKey("gestor.skintheme"))
sskintheme = (String)propiedades.get("gestor.skintheme");
// carga los skins
sSkinActual = sskin + " - " + sskintheme;
skins = new Skins(sskin,sskintheme,this);
}catch(Exception cnfe)
{
;
}
initComponents();
setTitle("GestDB " + Version);
this.setIconImage(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/gestdb_32x32.png")).getImage());
DesktopPanel.setAutoscrolls(true);
// ponemos los literales en el idioma cargado.
PonLiterales();
// miramos si hay propiedades de como estaba la �ltima vez el entono cargado
if(propiedades.containsKey("gestor.x") && Integer.parseInt((String)propiedades.get("gestor.x")) >= 0 &&
Integer.parseInt((String)propiedades.get("gestor.y")) >= 0)
{
this.setLocation(Integer.parseInt((String)propiedades.get("gestor.x")),
Integer.parseInt((String)propiedades.get("gestor.y")));
}
if(propiedades.containsKey("gestor.ancho") && Integer.parseInt((String)propiedades.get("gestor.ancho")) >= 100 &&
Integer.parseInt((String)propiedades.get("gestor.alto")) >= 100)
{
this.setSize(Integer.parseInt((String)propiedades.get("gestor.ancho")),
Integer.parseInt((String)propiedades.get("gestor.alto")));
}
// si es la primera vez que se caraga el sistema o se ha actualizado y es la primera vez que se ejecuta
// tiene que indicar que se activar�n las actualizaciones autom�ticas, que si no las quiere puede
// configurarlas en la pantalla de configuraci�n
if(Gestor.propiedades.containsKey("sql.ComprobarActualizaciones") == false)
{
Gestor.propiedades.put("sql.ComprobarActualizaciones","true");
Gestor.propiedades.put("sql.ActualizarAutomaticamente","true");
GuardaPropiedades(this.getClass(),Gestor.propiedades);
Alerta al = new Alerta(elGestorActivo, GetLiteral("gestor.error_1","Error"), true,
GetLiteral("gestor.alert_updates","El sistema se acaba de configurar para comprobar si hay actualizaciones en cada arranque, tambi�n para actualizarse autom�ticamente. Puede cambiar este comportamiento desde la ventana de configuraci�n."), Alerta.OK);
al.setVisible(true);
al = null;
}
// si estan activas las comprobaciones de las actualizaciones lanzamos el thread que se encarga de esta tarea
if(Gestor.propiedades.containsKey("sql.ComprobarActualizaciones") && Gestor.propiedades.getProperty("sql.ComprobarActualizaciones").toLowerCase().equals("true"))
{
Updater updater = new Updater();
updater.start();
}
if(propiedades.containsKey("gestor.conexiones.abiertas") &&
(
(propiedades.containsKey("gestor.abrir.conexiones") && propiedades.getProperty("gestor.abrir.conexiones").toLowerCase().equals("true")) ||
!propiedades.containsKey("gestor.abrir.conexiones")
))
{
// la cadena que nos retorna esta separada por ";"
String cadena = (String)propiedades.get("gestor.conexiones.abiertas");
String cadena2 = "";
Properties pConexiones = CargaConexiones(this.getClass());
// si esta activa la opci�n de guardar los tabs se tiene que encargar de cargar los tabs
String tabsXml = null;
if((propiedades.containsKey("conexion.tabs.guardar") &&
propiedades.getProperty("conexion.tabs.guardar").toLowerCase().equals("true")) ||
!propiedades.containsKey("conexion.tabs.guardar"))
{
tabsXml = getTabs(this);
}
String stmpTab = "", titulo1 = "", query1 = "";
int pos1 = 0, pos2 = 0;
Vector vConPendientesAbrir = new Vector();
// antes de nada tenemos que mirar si hay conexiones y si es asi preguntar si desea abrirlas
StringTokenizer st2 = new StringTokenizer(cadena,";",false);
while(st2.hasMoreTokens())
{
cadena2 = st2.nextToken();
if(cadena2 != null && cadena2.length() > 0)
{
vConPendientesAbrir.addElement(cadena2);
}
}
if(vConPendientesAbrir.size() > 0)
{
selectOpenConnections soc = new selectOpenConnections(this, vConPendientesAbrir, tabsXml, pConexiones);
DesktopPanel.add(soc);
soc.show();
}
}
} catch(Exception e)
{
Trackbug.fatal(e, e.getMessage());
}
}
/**
* Abre una conexi�n contra una base de datos
* @param vConexiones Vector que contiene la informaci�n de las conexiones
* @param tabsXml Contenido del xml que tiene la informaci�n de las pesta�as de la conexi�n antes de ser cerrada la �ltima vez
* @param pConexiones propiedades de la conexi�n a abrir.
*/
public void openConn(Vector vConexiones, String tabsXml, Properties pConexiones)
{
String cadena = null;
int pos1 = 0;
int pos2 = 0;
try {
for(int i=0; i < vConexiones.size(); i++)
{
cadena = (String)vConexiones.elementAt(i);
ConexionIFrame conexIFrame = null;
conexIFrame = new ConexionIFrame(this, cadena, GetLiteral("gestor.connected_to","Conexi�n con") + ": " + cadena, getConexion(cadena,pConexiones,JDBCDRIVERCLASS),
getConexion(cadena,pConexiones,JDBCDRIVERURL), getConexion(cadena,pConexiones,USER),
getConexion(cadena,pConexiones,PASSWORD));
// si esta activa la opci�n de guarar los tabs se tiene que encargar de cargar los tabs
if(tabsXml != null && tabsXml.indexOf("<conection><title>" + cadena + "</title>") != -1)
{
pos1 = tabsXml.indexOf("<conection><title>" + cadena + "</title>");
pos1 = tabsXml.indexOf("</title>",pos1) + 8; // quita el title
pos2 = tabsXml.indexOf("</conection>",pos1);
if(pos2 != -1)
{
conexIFrame.putXML(tabsXml.substring(pos1,pos2));
}
}
DesktopPanel.add(conexIFrame);
conexIFrame.setVisible(true);
}
// coloca las ventana en cascada
javax.swing.JInternalFrame jif[] = DesktopPanel.getAllFrames();
for(int i=jif.length, x=0, y=0 ;i> 0;i--,x += 20,y += 20)
jif[i-1].setBounds(x,y,570,450);
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jpmIdiomas = new javax.swing.JPopupMenu();
jpmConexionesRecientes = new javax.swing.JPopupMenu();
DesktopPanel = new javax.swing.JDesktopPane();
jToolBar1 = new javax.swing.JToolBar();
jButton1 = new javax.swing.JButton();
jbConexionesRecientes = new javax.swing.JButton();
jButton9 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();
jButton5 = new javax.swing.JButton();
jButton8 = new javax.swing.JButton();
jButton6 = new javax.swing.JButton();
jButton7 = new javax.swing.JButton();
setTitle("GestDB 2.2");
setFont(new java.awt.Font("Verdana", 0, 10)); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
exitForm(evt);
}
});
getContentPane().add(DesktopPanel, java.awt.BorderLayout.CENTER);
jToolBar1.setFloatable(false);
jToolBar1.setOrientation(1);
jToolBar1.setRollover(true);
jToolBar1.setBorderPainted(false);
jToolBar1.setFont(new java.awt.Font("Dialog", 0, 10));
jToolBar1.setMaximumSize(new java.awt.Dimension(50, 538));
jToolBar1.setMinimumSize(new java.awt.Dimension(50, 538));
jToolBar1.setPreferredSize(new java.awt.Dimension(50, 538));
jButton1.setFont(new java.awt.Font("Dialog", 0, 8));
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/conecta.gif"))); // NOI18N
jButton1.setToolTipText("Abre una conexi�n con un gestor de BBDD");
jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jToolBar1.add(jButton1);
jbConexionesRecientes.setFont(new java.awt.Font("Dialog", 0, 8));
jbConexionesRecientes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/recent_connect.gif"))); // NOI18N
jbConexionesRecientes.setToolTipText("Muestra las conexiones recientes");
jbConexionesRecientes.setFocusable(false);
jbConexionesRecientes.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jbConexionesRecientes.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jbConexionesRecientes.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbConexionesRecientesActionPerformed(evt);
}
});
jToolBar1.add(jbConexionesRecientes);
jButton9.setFont(new java.awt.Font("Dialog", 0, 8));
jButton9.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/config.gif"))); // NOI18N
jButton9.setToolTipText("Configurar la aplicaci�n");
jButton9.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton9.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton9.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton9ActionPerformed(evt);
}
});
jToolBar1.add(jButton9);
jButton2.setFont(new java.awt.Font("Dialog", 0, 8));
jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/cascada.gif"))); // NOI18N
jButton2.setToolTipText("Colocar las ventanas en cascada");
jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jToolBar1.add(jButton2);
jButton3.setFont(new java.awt.Font("Dialog", 0, 8));
jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/mosaicoHoriz.gif"))); // NOI18N
jButton3.setToolTipText("Colocar en mosaico horizontalaa");
jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jToolBar1.add(jButton3);
jButton4.setFont(new java.awt.Font("Dialog", 0, 8));
jButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/mosaicoVertical.gif"))); // NOI18N
jButton4.setToolTipText("Colocar en mosaico vertical");
jButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});
jToolBar1.add(jButton4);
jButton5.setFont(new java.awt.Font("Dialog", 0, 8)); // NOI18N
jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/ayuda.gif"))); // NOI18N
jButton5.setToolTipText("Contenidos");
jButton5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton5.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton5.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton5ActionPerformed(evt);
}
});
jToolBar1.add(jButton5);
jButton8.setFont(new java.awt.Font("Dialog", 0, 8)); // NOI18N
jButton8.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/philosophical-gnu-sm_32_32.jpg"))); // NOI18N
jButton8.setToolTipText("Acerca del producto");
jButton8.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton8.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton8.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton8ActionPerformed(evt);
}
});
jToolBar1.add(jButton8);
jButton6.setFont(new java.awt.Font("Dialog", 0, 8)); // NOI18N
jButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/gestdb_32x32.png"))); // NOI18N
jButton6.setToolTipText("Acerca del producto");
jButton6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton6.setPreferredSize(new java.awt.Dimension(60, 57));
jButton6.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton6.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton6ActionPerformed(evt);
}
});
jToolBar1.add(jButton6);
jButton7.setFont(new java.awt.Font("Dialog", 0, 8));
jButton7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/spanish.jpg"))); // NOI18N
jButton7.setText("Espa�ol");
jButton7.setToolTipText("Permite cambiar el idioma de la aplicaci�n");
jButton7.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jButton7.setMaximumSize(new java.awt.Dimension(39, 39));
jButton7.setMinimumSize(new java.awt.Dimension(39, 39));
jButton7.setPreferredSize(new java.awt.Dimension(39, 39));
jButton7.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jButton7.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton7ActionPerformed(evt);
}
});
jToolBar1.add(jButton7);
getContentPane().add(jToolBar1, java.awt.BorderLayout.WEST);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-702)/2, (screenSize.height-447)/2, 702, 447);
}// </editor-fold>//GEN-END:initComponents
private void jButton9ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton9ActionPerformed
try {
// Abre la ventana de configuraci�n
Configuracion conf = new Configuracion(this);
DesktopPanel.add(conf);
conf.setVisible(true);
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}//GEN-LAST:event_jButton9ActionPerformed
private void jButton8ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton8ActionPerformed
try {
// Abre el dialogo de Licencia
String file = "";
if(Gestor.propiedades.get("gestor.language") != null)
file = "/com/GestDB/resources/licenses_" + Gestor.propiedades.get("gestor.language") + ".htm";
else
file = "/com/GestDB/resources/licenses_spanish.htm";
jifAyuda help = new jifAyuda(Gestor.GetLiteral("gestor.button_license","Licencia"),file);
DesktopPanel.add(help);
help.setVisible(true);
try{
help.setMaximum(true);
}catch(Exception e)
{
;
}
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}//GEN-LAST:event_jButton8ActionPerformed
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
try {
// Abre el dialogo de Contenido
String file = "";
if(Gestor.propiedades.get("gestor.language") != null)
file = "/com/GestDB/resources/help_" + Gestor.propiedades.get("gestor.language") + "/help_" + Gestor.propiedades.get("gestor.language") + ".htm";
else
file = "/com/GestDB/resources/help_spanish/help_spanish.htm";
jifAyuda help = new jifAyuda(Gestor.GetLiteral("gestor.button_content","Contenidos"),file);
DesktopPanel.add(help);
help.setVisible(true);
try{
help.setMaximum(true);
}catch(Exception e)
{
;
}
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}//GEN-LAST:event_jButton5ActionPerformed
private void jButton7ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton7ActionPerformed
String sIdioma = null;
String sTituloIdioma = null;
try {
// compone el men� de idiomas
if(jpmIdiomas.isShowing() == false)
{
jpmIdiomas = new javax.swing.JPopupMenu();
StringTokenizer st1 = new StringTokenizer(Gestor.GetLiteral("gestor.language_list","spanish"),";",false);
javax.swing.JMenuItem idioma = null;
while(st1.hasMoreTokens())
{
sIdioma = st1.nextToken();
// saca el t�tulo del idioma
sTituloIdioma = Gestor.GetLiteral("gestor.language_" + sIdioma,"Espa�ol");
// crea el men�
idioma = new javax.swing.JMenuItem(sTituloIdioma, new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/" + sIdioma + ".jpg")));
idioma.setName(sIdioma); // le pongo el name para poner utilizarlo despues.
idioma.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
CambiaIdioma(((javax.swing.JMenuItem)evt.getSource()).getName());
}
});
jpmIdiomas.add(idioma);
}
// muestra el men�
jpmIdiomas.show(jButton7,jButton7.getX(),jButton7.getY());
}
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage() + " lista de idiomas: " + Gestor.GetLiteral("gestor.language_list","spanish") +
". sidioma: " + sIdioma + ", sTituloIdioma: " + sTituloIdioma);
}
}//GEN-LAST:event_jButton7ActionPerformed
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
try {
// Abre el dialogo de acerca de...
AcercaDe ad = new AcercaDe(new java.awt.Frame(),true);
ad.setVisible(true);
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}//GEN-LAST:event_jButton6ActionPerformed
private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton4ActionPerformed
// Coloca las ventanas en mosaico vertical
javax.swing.JInternalFrame jif[] = DesktopPanel.getAllFrames();
if(jif.length > 0)
{
int ancho = DesktopPanel.getWidth() / jif.length;
int alto = DesktopPanel.getHeight();
for(int i=jif.length, x=0, y=0 ;i> 0;i--,x += ancho)
jif[i-1].setBounds(x,y,ancho,alto);
}
}//GEN-LAST:event_jButton4ActionPerformed
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
// Coloca las ventanas en mosaico horizontal
javax.swing.JInternalFrame jif[] = DesktopPanel.getAllFrames();
if(jif.length > 0)
{
int ancho = DesktopPanel.getWidth();
int alto = DesktopPanel.getHeight() / jif.length;
for(int i=jif.length, x=0, y=0 ;i> 0;i--,y += alto)
jif[i-1].setBounds(x,y,ancho,alto);
}
}//GEN-LAST:event_jButton3ActionPerformed
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// Coloca las ventanas en cascada
javax.swing.JInternalFrame jif[] = DesktopPanel.getAllFrames();
for(int i=jif.length, x=0, y=0 ;i> 0;i--,x += 20,y += 20)
jif[i-1].setBounds(x,y,570,450);
}//GEN-LAST:event_jButton2ActionPerformed
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
try {
// Abre una conexi�n con un gestor de BBDD
SelectConexion sc = new SelectConexion(this,true);
sc.setVisible(true);
if (!sc.wasCanceled() && sc.isAbrir())
{
// preparado la lista de conexiones recientes
Vector vConexionesRecientes = new Vector();
if(propiedades.containsKey("gestor.recent_connections"))
{
StringTokenizer st1 = new StringTokenizer((String)propiedades.get("gestor.recent_connections"),";",false);
while(st1.hasMoreTokens())
{
vConexionesRecientes.addElement(st1.nextToken());
}
}
// antes de insertar el elemento teemos que mirar si ya lo teniamos para quitarlo.
if(vConexionesRecientes.contains(sc.getKey()))
vConexionesRecientes.remove(sc.getKey());
vConexionesRecientes.insertElementAt(sc.getKey(), 0);
// las guardamos, como m�ximo las 10 �ltimas
String sTemp = "";
for(int i = 0, limite = vConexionesRecientes.size(); i < 10 && i < limite; i++)
{
sTemp += (i > 0?";":"") + vConexionesRecientes.elementAt(i);
}
propiedades.put("gestor.recent_connections",sTemp);
ConexionIFrame conexIFrame = new ConexionIFrame(this, sc.getKey(), GetLiteral("gestor.connected_to","Conexi�n con") + ": " + sc.getKey(), sc.getjdbcDriverClass(), sc.getjdbcDriverURL(), sc.getuser(), sc.getpassword());
conexIFrame.setBounds(0, 0, DesktopPanel.getWidth(), DesktopPanel.getHeight());
DesktopPanel.add(conexIFrame);
boolean bPorDefecto = true;
if((propiedades.containsKey("conexion.tabs.guardar") &&
propiedades.getProperty("conexion.tabs.guardar").toLowerCase().equals("true")) ||
!propiedades.containsKey("conexion.tabs.guardar"))
{
String tabsXml = getTabs(this);
if(tabsXml != null && tabsXml.indexOf("<conection><title>" + sc.getKey() + "</title>") != -1)
{
int pos1 = tabsXml.indexOf("<conection><title>" + sc.getKey() + "</title>");
pos1 = tabsXml.indexOf("</title>",pos1) + 8; // quita el title
int pos2 = tabsXml.indexOf("</conection>",pos1);
if(pos2 != -1)
{
bPorDefecto = false;
conexIFrame.putXML(tabsXml.substring(pos1,pos2));
}
}
}
if(bPorDefecto)
{
// cargamos una pesta�a de sql por defecto
SQLPannel sqlp = new SQLPannel(this, sc.getKey(), conexIFrame.getTitle(), sc.getjdbcDriverClass(), sc.getjdbcDriverURL(), sc.getuser(), sc.getpassword());
conexIFrame.jTabbedPane1.add("SQL ", sqlp);
conexIFrame.jTabbedPane1.setSelectedComponent(sqlp);
sqlp.jTabbedPane1.grabFocus();
}
conexIFrame.setVisible(true);
sc = null;
}
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}//GEN-LAST:event_jButton1ActionPerformed
/** Exit the Application */
private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
try {
saveAll(this);
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
System.exit(0);
}//GEN-LAST:event_exitForm
private void jbConexionesRecientesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbConexionesRecientesActionPerformed
try {
// compone el men� de conexiones recientes
if(jpmConexionesRecientes.isShowing() == false && propiedades.containsKey("gestor.recent_connections"))
{
jpmConexionesRecientes = new javax.swing.JPopupMenu();
StringTokenizer st1 = new StringTokenizer((String)propiedades.get("gestor.recent_connections"),";",false);
String sTemp = null;
javax.swing.JMenuItem conexionMenu = null;
while(st1.hasMoreTokens())
{
sTemp = st1.nextToken();
// crea el men�
conexionMenu = new javax.swing.JMenuItem(sTemp);
conexionMenu.setName(sTemp); // le pongo el name para poner utilizarlo despues.
Gestor gGestor = this;
conexionMenu.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Vector vConTemp = new Vector(1);
vConTemp.addElement(evt.getActionCommand());
Trackbug.info("Accion: " + evt.getActionCommand());
String tabsXml = null;
if((propiedades.containsKey("conexion.tabs.guardar") &&
propiedades.getProperty("conexion.tabs.guardar").toLowerCase().equals("true")) ||
!propiedades.containsKey("conexion.tabs.guardar"))
{
tabsXml = getTabs();
}
Properties pConexiones = CargaConexiones(this.getClass());
openConn(vConTemp, tabsXml, pConexiones);
}
});
jpmConexionesRecientes.add(conexionMenu);
}
// muestra el men�
jpmConexionesRecientes.show(jbConexionesRecientes,jbConexionesRecientes.getX(),jbConexionesRecientes.getY());
}
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}//GEN-LAST:event_jbConexionesRecientesActionPerformed
public static String getRutaTabs(Gestor elgestor)
{
String rutatabs = "";
try {
try {
// tiene que escribir el archivo de pesta�as
rutatabs = elgestor.getClass().getClassLoader().getResource("tabs.xml").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
rutatabs = "tabs.xml";
} catch(Exception ee) {
rutatabs = "tabs.xml";
}
if(rutatabs.indexOf("%20") != -1)
rutatabs = rutatabs.replaceAll("%20"," ");
if(rutatabs == null) rutatabs = "tabs.xml";
} catch(Exception e)
{
;
}
return rutatabs;
}
public String getTabs()
{
return getTabs(this);
}
public static String getTabs(Gestor elgestor)
{
String stabs = "<tabs></tabs>";
String rutatabs = getRutaTabs(elgestor);
if(rutatabs.length() > 0)
{
try {
try {
stabs = new String(utilidades.lee_Archivo2(rutatabs));
} catch(IOException ioe)
{
stabs = "";
}
if(stabs.trim().length() == 0)
{
stabs = "<tabs></tabs>";
}
} catch(Exception e)
{
stabs = "<tabs></tabs>";
}
}
return stabs;
}
public static void saveAll(Gestor elgestor)
{
try {
Point punto = elgestor.getLocation();
propiedades.put("gestor.x",String.valueOf(punto.x));
propiedades.put("gestor.y",String.valueOf(punto.y));
Dimension dim = elgestor.getSize();
propiedades.put("gestor.ancho",String.valueOf(dim.width));
propiedades.put("gestor.alto",String.valueOf(dim.height));
// guardo las conexiones abiertas. primero cargamos las que existen para añadir o reemplazar las que tenemos
String ruta = "";
try {
try {
ruta = elgestor.getClass().getClassLoader().getResource("gestdb.properties").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "gestdb.properties";
} catch(Exception ee) {
ruta = "gestdb.properties";
}
if(ruta.indexOf("%20") != -1)
ruta = ruta.replaceAll("%20"," ");
if(ruta == null) ruta = "gestdb.properties";
} catch(Exception e)
{
;
}
try {
String stabs = getTabs(elgestor);
if(stabs.trim().length() == 0)
{
stabs = "<tabs></tabs>";
}
javax.swing.JInternalFrame[] jif = elgestor.DesktopPanel.getAllFrames();
String cadena = "";
StringBuffer sb = new StringBuffer();
int pos = 0;
int pos2 = 0;
if (jif.length > 0) {
for (int i = 0, j = jif.length; i < j; i++) {
if (jif[i] instanceof ConexionIFrame) {
cadena += ";" + ((ConexionIFrame) jif[i]).getKey();
if ((propiedades.containsKey("conexion.tabs.guardar") && propiedades.getProperty("conexion.tabs.guardar").toLowerCase().equals("true")) || !propiedades.containsKey("conexion.tabs.guardar")) {
sb.append("<conection>"); // a�ade la referencia a la conexi�n
sb.append("<title>").append(((ConexionIFrame) jif[i]).getKey()).append("</title>");
sb.append(((ConexionIFrame) jif[i]).getXML());
sb.append("</conection>");
// si la pestaña existia en el tabs anterior, la eliminamos para que solo tenga la nueva
pos = stabs.indexOf("<conection><title>" + ((ConexionIFrame) jif[i]).getKey() + "</title>");
if(pos != -1)
{
pos2 = stabs.indexOf("</conection>",pos);
if(pos2 != -1)
{
stabs = stabs.substring(0,pos) + stabs.substring(pos2 + 12);
}
}
}
}
}
}
propiedades.put("gestor.conexiones.abiertas", cadena);
pos = stabs.indexOf("</tabs>");
if(pos != -1)
{
stabs = stabs.substring(0,pos) + sb.toString() + stabs.substring(pos);
String rutatabs = getRutaTabs(elgestor);
utilidades.crea_Archivo(rutatabs, stabs.getBytes());
}
if(ruta.length() > 0)
propiedades.store(new FileOutputStream(ruta), GetLiteral("gestor.properties_gesdbini","Propiedades del entorno gestDB"));
} catch (IOException ex) {
Trackbug.fatal(ex, "Error: " + ex.getMessage());
}
} catch(Throwable e)
{
Trackbug.fatal(e,"Error: " + e.getMessage());
}
}
/**
* Comprueba si el dialogo de gesti�n de favoritos esta abierto, si no lo esta carga el dialogo
*/
public void showFavoritesDialog(JInternalFrame jifPadre) {
if(jifFav != null && jifFav.isVisible())
{
jifFav.dispose();
jifFav.setVisible(false);
}
if(jifFav != null)
{
DesktopPanel.remove(jifFav);
jifFav = null;
}
jifFav = new jifFavoritos(this,jifPadre);
DesktopPanel.add(jifFav);
jifFav.setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
try {
if(args.length > 0)
{
if(args[0].toLowerCase().equals("-texto"))
{
new ConexionTXT(args).start();
}
else
{
ConexionTXT cont = new ConexionTXT(args);
CargaPropiedades(cont.getClass());
if(propiedades.containsKey("gestor.language"))
CargaIdioma(cont.getClass(),(String)propiedades.get("gestor.language"));
else
CargaIdioma(cont.getClass(),"spanish");
System.out.println("args[0]: " + args[0]);
System.out.println("GestDB " + Version);
System.out.println(GetLiteral("gestor.help_commandline1","Sintaxis: "));
System.out.println(GetLiteral("gestor.help_commandline2","java -jar gestdb.jar [opciones]"));
System.out.println(GetLiteral("gestor.help_commandline4","Si no se introducen opciones se arranca la aplicaci�n en modo grafico."));
System.out.println(GetLiteral("gestor.help_commandline5","Opciones:"));
System.out.println(GetLiteral("gestor.help_commandline6","\t-help\testa pantalla."));
System.out.println(GetLiteral("gestor.help_commandline7","\t-texto\tse arranca la aplicaci�n en modo texto."));
System.out.println(GetLiteral("gestor.help_commandline8","\t-texto -in archivo\tIgual a la de -texto pero cogiendo la entrada estandart de un archivo."));
System.out.println(GetLiteral("gestor.help_commandline9","\t-texto -out archivo\tIgual a la anterior pero saca toda la salida a un archivo."));
System.out.println(GetLiteral("gestor.help_commandline10","\t-texto -out archivo -in archivo\tIgual a la anterior cogiendo la entrada estandart de un archivo."));
System.out.println(GetLiteral("gestor.help_commandline11","\t-texto -in archivo -out archivo\tIgual a la anterior cogiendo la entrada estandart de un archivo."));
cont = null;
System.exit(0);
}
}
else
new Gestor().setVisible(true);
} catch(Exception e)
{
Trackbug.fatal(e, "Error:" + e.getMessage());
}
}
public static Document CargaFavoritos(Class clase)
{
Document doc = null;
try {
String ruta = "";
try {
ruta = clase.getClassLoader().getResource("favorites.xml").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "favorites.xml";
} catch(Exception ee) {
ruta = "favorites.xml";
}
if(ruta.indexOf("%20") != -1)
ruta = ruta.replaceAll("%20"," ");
if(ruta == null) ruta = "favorites.xml";
if(ruta.length() > 0)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder parser = factory.newDocumentBuilder();
// Cargar el xml de favoritos
File file = new File(ruta);
if (file.exists()){
doc = parser.parse(file);
}
}
} catch (SAXException ex) {
Trackbug.error(ex, ex.getMessage());
} catch (ParserConfigurationException ex) {
Trackbug.error(ex, ex.getMessage());
} catch(java.io.FileNotFoundException fnfe)
{
Trackbug.error(fnfe, fnfe.getMessage());
} catch(java.io.IOException ioe)
{
Trackbug.error(ioe, ioe.getMessage());
}
return doc;
}
public static void GuardaFavoritos(Class clase, Document doc, Transformer aTransformer)
{
try {
String ruta = "";
try {
ruta = clase.getClassLoader().getResource("favorites.xml").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "favorites.xml";
} catch(Exception ee) {
ruta = "favorites.xml";
}
if(ruta.indexOf("%20") != -1)
ruta = ruta.replaceAll("%20"," ");
if(ruta == null) ruta = "favorites.xml";
if(ruta.length() > 0)
{
// aTransformer.setOutputProperty(OutputKeys.METHOD, "text");
Source source = new DOMSource(doc);
Result result = new StreamResult(new File("favorites.xml"));
aTransformer.transform(source, result);
}
}catch(Exception e)
{
Trackbug.error(e, e.getMessage());
}
}
public static void CargaPropiedades(Class clase)
{
try {
String ruta = "";
try {
ruta = clase.getClassLoader().getResource("gestdb.properties").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "gestdb.properties";
} catch(Exception ee) {
ruta = "gestdb.properties";
}
if(ruta.indexOf("%20") != -1)
ruta = ruta.replaceAll("%20"," ");
if(ruta == null) ruta = "gestdb.properties";
if(ruta.length() > 0)
propiedades.load(new FileInputStream(ruta));
} catch(java.io.FileNotFoundException fnfe)
{
System.err.println(GetLiteral("gestor.error_2","Error cargando propiedades") + ": " + fnfe.getMessage());
} catch(java.io.IOException ioe)
{
System.err.println(GetLiteral("gestor.error_2","Error cargando propiedades") + ": " + ioe.getMessage());
}
}
public static void CargaIdioma(Class clase, String idioma)
{
try {
Properties pIdioma2 = new Properties();
pIdioma2.load(clase.getResourceAsStream("/com/GestDB/resources/language_" + idioma + ".properties"));
pIdioma = pIdioma2;
} catch(java.lang.NullPointerException npe)
{
Trackbug.error(npe, "Error cargando idioma: " + npe.getMessage() +
"\nArchivo: " + clase.getResourceAsStream("/com/GestDB/resources/language_" + idioma + ".properties") +
"\nIdioma: " + idioma);
} catch(java.io.FileNotFoundException fnfe)
{
Trackbug.error(fnfe, "Error cargando idioma: " + fnfe.getMessage() +
"\nArchivo: " + clase.getResourceAsStream("/com/GestDB/resources/language_" + idioma + ".properties") +
"\nIdioma: " + idioma);
} catch(java.io.IOException ioe)
{
Trackbug.error(ioe, "Error cargando idioma: " + ioe.getMessage() +
"\nArchivo: " + clase.getResourceAsStream("/com/GestDB/resources/language_" + idioma + ".properties") +
"\nIdioma: " + idioma);
}
}
public static Properties CargaConexiones(Class clase)
{
// Tiene que cargar los datos de las conexiones.
Properties Propiedades = new Properties();
try {
String ruta = "";
try {
ruta = clase.getClassLoader().getResource("GestDB.ini").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "GestDB.ini";
} catch(Exception ee) {
ruta = "GestDB.ini";
}
if(ruta == null) ruta = "GestDB.ini";
if(ruta.length() > 0) {
File fl = new File(ruta);
if ( fl.exists() ) {
try{
FileInputStream fls = new FileInputStream(ruta);
Propiedades.load(fls);
fls.close();
}catch(java.io.IOException e) {
Trackbug.error(e, e.getMessage());
}
}
}
} catch(Exception e) {
Propiedades = null;
}
// si en el archivo de propiedades no aparece la palabra encriptadas significa que estan encriptadas, o si
// aparece la palabra y tiene el valor = "si".
if(!propiedades.containsKey("gestor.conexiones.encriptadas") || ((String)propiedades.get("gestor.conexiones.encriptadas")).toLowerCase().equals("si"))
{
// las tenemos que desencriptar en el properties
Object me[] = Propiedades.entrySet().toArray();
for(int i=0;i<me.length;i++)
Propiedades.put(((Map.Entry)me[i]).getKey(),utilidades.XOR((String)((Map.Entry)me[i]).getValue()));
}
return Propiedades;
}
public static void GuardaConexiones(Class clase, Properties Propiedades)
{
try {
// tenemos que encriptar las conexiones antes de continuar.
Properties Prop = new Properties();
Object me[] = Propiedades.entrySet().toArray();
for(int i=0;i<me.length;i++)
Prop.put(((Map.Entry)me[i]).getKey(),utilidades.XOR((String)((Map.Entry)me[i]).getValue()));
propiedades.put("gestor.conexiones.encriptadas","si");
String ruta = "";
try {
ruta = clase.getClassLoader().getResource("gestdb.properties").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "gestdb.properties";
} catch(Exception ee) {
ruta = "gestdb.properties";
}
if(ruta.indexOf("%20") != -1)
ruta = ruta.replaceAll("%20"," ");
if(ruta == null) ruta = "gestdb.properties";
if(ruta.length() > 0)
propiedades.store(new FileOutputStream(ruta), GetLiteral("gestor.properties_gesdbini","Propiedades del entorno gestDB"));
// almacenamos las conexiones en disco
try {
ruta = clase.getClassLoader().getResource("GestDB.ini").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "GestDB.ini";
} catch(Exception ee) {
ruta = "GestDB.ini";
}
if(ruta.indexOf("%20") != -1)
ruta = ruta.replaceAll("%20"," ");
if(ruta == null) ruta = "GestDB.ini";
if(ruta.length() > 0) {
File fl = new File(ruta);
// if ( fl.exists() ) {
try{
FileOutputStream fls = new FileOutputStream(ruta);
Prop.store(fls, GetLiteral("gestor.properties_gesdbini","Propiedades del entorno gestDB"));
fls.close();
Prop = null;
}catch(java.io.IOException e) {
Trackbug.error(e, e.getMessage());
}
// }
}
}catch(Exception e)
{
Trackbug.fatal(e, e.getMessage());
}
}
public static void GuardaPropiedades(Class clase, Properties Propiedades)
{
try {
propiedades.put("gestor.conexiones.encriptadas","si");
String ruta = "";
try {
ruta = clase.getClassLoader().getResource("gestdb.properties").getPath();
} catch(java.lang.NoSuchMethodError nsme) {
ruta = "gestdb.properties";
} catch(Exception ee) {
ruta = "gestdb.properties";
}
if(ruta.indexOf("%20") != -1)
ruta = ruta.replaceAll("%20"," ");
if(ruta == null) ruta = "gestdb.properties";
if(ruta.length() > 0)
propiedades.store(new FileOutputStream(ruta), GetLiteral("gestor.properties_gesdbini","Propiedades del entorno gestDB"));
}catch(Exception e)
{
Trackbug.fatal(e, e.getMessage());
}
}
public static int JDBCDRIVERURL = 0;
public static int JDBCDRIVERCLASS = 1;
public static int USER = 2;
public static int PASSWORD = 3;
public static int IP = 4;
public static int PORT = 5;
public static int SID = 6;
public static String getConexion(String key, Properties Propiedades,int tipo)
{
String jdbcDriverURL = "";
String jdbcDriverClass = "";
String user = "";
String password = "";
String ip = "";
String port = "";
String sid = "";
if(Propiedades != null) {
HashMap hmConexion = SelectConexion.getHMConexion(key, Propiedades);
if(hmConexion.containsKey("ip"))
ip = (String)hmConexion.get("ip");
if(hmConexion.containsKey("puerto"))
port = (String)hmConexion.get("puerto");
if(hmConexion.containsKey("sid"))
sid = (String)hmConexion.get("sid");
if(hmConexion.containsKey("jdbcDriverClass"))
jdbcDriverClass = (String)hmConexion.get("jdbcDriverClass");
if(hmConexion.containsKey("jdbcDriverURL"))
jdbcDriverURL = (String)hmConexion.get("jdbcDriverURL");
if(hmConexion.containsKey("user"))
user = (String)hmConexion.get("user");
if(hmConexion.containsKey("password"))
password = (String)hmConexion.get("password");
// carga la clase
try {
Class.forName(jdbcDriverClass);
} catch(Exception nfe) {
Trackbug.error(nfe, GetLiteral("gestor.error_6","Error cargando la clase") + ": " + nfe.getMessage());
// tenemos que sacar una ventana indicando que nos falta el driver jdbc y que tenemos que copiarlo al directorio
// lib y rearancar el programa
Alerta al = new Alerta(elGestorActivo, GetLiteral("gestor.error_1","Error"), true,
GetLiteral("conexiontxt.error_2","No se encuentran las clases correspondientes al driver jdbc de la base de datos.") +
"\n" + GetLiteral("selectconexion.getdriver","Descargueselo de la web del fabricante de la BBDD o busquelo en 'http://developers.sun.com/product/jdbc/drivers'.") +
"\n" + GetLiteral("selectconexion.copydriver","Cuando tenga el archivo JAR o ZIP c�pielo al directorio 'lib' del GestDB y rearranque el programa."), Alerta.OK);
al.setVisible(true);
al = null;
return "";
}
}
switch(tipo)
{
case 0:
return jdbcDriverURL;
case 1:
return jdbcDriverClass;
case 2:
return user;
case 3:
return password;
case 4:
return ip;
case 5:
return port;
case 6:
return sid;
}
return "";
}
public void PonLiterales()
{
CargaIdioma2();
// mira el icono y el t�tulo del idioma a utilizar
jButton7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/GestDB/images/" + GetLiteral("gestor.language_icon","spanish.jpg"))));
jButton7.setText(GetLiteral("gestor.language_name","Espa�ol"));
jButton7.setToolTipText(GetLiteral("gestor.button_idioma_tootips","Permite cambiar el idioma de la aplicaci�n"));
jButton9.setToolTipText(GetLiteral("gestor.button_config_tooltips","Configurar la aplicaci�n"));
// if(pIdioma.containsKey("gestor.button_About"))
// this.jButton6.setText((String)pIdioma.get("gestor.button_About"));
if(pIdioma.containsKey("gestor.button_About_tooltips"))
this.jButton6.setToolTipText((String)pIdioma.get("gestor.button_About_tooltips"));
// if(pIdioma.containsKey("gestor.button_connect"))
// this.jButton1.setText((String)pIdioma.get("gestor.button_connect"));
if(pIdioma.containsKey("gestor.button_connect_tooltips"))
this.jButton1.setToolTipText((String)pIdioma.get("gestor.button_connect_tooltips"));
this.jbConexionesRecientes.setToolTipText(GetLiteral("gestor.button_recent_connections_tooltips","Muestra las conexiones recientes"));
// if(pIdioma.containsKey("gestor.button_content"))
// this.jButton5.setText((String)pIdioma.get("gestor.button_content"));
if(pIdioma.containsKey("gestor.button_content_tooltips"))
this.jButton5.setToolTipText((String)pIdioma.get("gestor.button_content_tooltips"));
// if(pIdioma.containsKey("gestor.button_license"))
// this.jButton8.setText((String)pIdioma.get("gestor.button_license"));
if(pIdioma.containsKey("gestor.button_license_tooltips"))
this.jButton8.setToolTipText((String)pIdioma.get("gestor.button_license_tooltips"));
// if(pIdioma.containsKey("gestor.button_window_cascade"))
// this.jButton2.setText((String)pIdioma.get("gestor.button_window_cascade"));
if(pIdioma.containsKey("gestor.button_window_cascade_tooltips"))
this.jButton2.setToolTipText((String)pIdioma.get("gestor.button_window_cascade_tooltips"));
// if(pIdioma.containsKey("gestor.button_window_mosaich"))
// this.jButton3.setText((String)pIdioma.get("gestor.button_window_mosaich"));
if(pIdioma.containsKey("gestor.button_window_mosaich_tooltips"))
this.jButton3.setToolTipText((String)pIdioma.get("gestor.button_window_mosaich_tooltips"));
// if(pIdioma.containsKey("gestor.button_window_mosaicv"))
// this.jButton4.setText((String)pIdioma.get("gestor.button_window_mosaicv"));
if(pIdioma.containsKey("gestor.button_window_mosaicv_tooltips"))
this.jButton4.setToolTipText((String)pIdioma.get("gestor.button_window_mosaicv_tooltips"));
}
public void CargaIdioma2()
{
// lee el idioma que tiene seleccionado el usuario y pone el icono que corresponda
// miramos si esta la propiedad del idioma utilizado
if(propiedades.containsKey("gestor.language"))
{
CargaIdioma(this.getClass(),(String)propiedades.get("gestor.language"));
}
else
{
CargaIdioma(this.getClass(),"spanish");
}
}
public static String GetLiteral(String clave, String vdefault)
{
if(pIdioma.containsKey(clave))
return (String)pIdioma.get(clave);
else
return vdefault;
}
private void CambiaIdioma(String idioma)
{
propiedades.put("gestor.language",idioma);
PonLiterales();
// se tiene que recorrer todas las ventanas que tenga abiertas para actualizar el idioma en esas ventanas
javax.swing.JInternalFrame jif[] = DesktopPanel.getAllFrames();
if(jif.length > 0)
{
for(int i=jif.length;i> 0;i--)
{
if(jif[i-1] instanceof Literales)
((Literales)jif[i-1]).PonLiterales();
}
}
}
/*
* Permite cargar las librerias dinamicamente, coge el directorio del programa y carga los jar y zip que existen
* en los subdirectorios llamados "lib" y "skin".
*/
public static void CargarLibrerias(Class clase) throws IOException
{
Class claseJVM = URLClassLoader.class;
Class params[] = new Class[]{ URL.class };
URLClassLoader cargadorJVM = (URLClassLoader)ClassLoader.getSystemClassLoader();
// carga la ruta base de las librerias
GetDirBaseLib(clase);
GetDirBaseSkin(clase);
GetDirBaseTmp(clase);
try{
File objFile = new File(rutaBaseLib);
String ext[] = {"jar","zip"};
com.utils.FileNameFilter fnflib = new com.utils.FileNameFilter(ext);
File archivos[] = null;
// cogemos todos los jar y zip del directorio lib
if(objFile.exists() && objFile.canRead() && objFile.isDirectory())
{
archivos = objFile.listFiles(fnflib);
}
// cogemos el m�todo addurl que necesitamos
java.lang.reflect.Method metodo = claseJVM.getDeclaredMethod("addURL", params);
// y le hacemos accesible, pues es protected
metodo.setAccessible(true);
// a�adimos primero el directorio lib
URL objUrl = objFile.toURL();
metodo.invoke(cargadorJVM, new Object[]{ objUrl });
// vamos con los zip y jar
if(archivos != null)
{
for(int i=0;i<archivos.length;i++)
{
metodo.invoke(cargadorJVM, new Object[]{ archivos[i].toURL() });
}
}
// vamos con los zip y jar del directorio raiz del gestdb
objFile = new File(".");
archivos = null;
// cogemos todos los jar y zip del directorio raiz
if(objFile.exists() && objFile.canRead() && objFile.isDirectory())
{
archivos = objFile.listFiles(fnflib);
}
// los procesamos
if(archivos != null)
{
for(int i=0;i<archivos.length;i++)
{
metodo.invoke(cargadorJVM, new Object[]{ archivos[i].toURL() });
}
}
// vamos con los zip y jar del directorio skin
objFile = new File(rutaBaseSkin);
archivos = null;
// cogemos todos los jar y zip del directorio skin
if(objFile.exists() && objFile.canRead() && objFile.isDirectory())
{
archivos = objFile.listFiles(fnflib);
}
// los procesamos
if(archivos != null)
{
for(int i=0;i<archivos.length;i++)
{
metodo.invoke(cargadorJVM, new Object[]{ archivos[i].toURL() });
}
}
}catch(Throwable th){
th.printStackTrace();
throw new IOException("Error");
}
}
private static String GetSubDirBase(Class clase, String subdir)
{
String rutaBaseTmp = null;
// se averigua el directorio de la aplicaci�n
if(subdir != null)
{
if(subdir.charAt(subdir.length()-1) != '\\' && subdir.charAt(subdir.length()-1) != '/')
subdir += "/";
try {
rutaBaseTmp = clase.getClassLoader().getSystemResource(subdir).getPath();
} catch(java.lang.NoSuchMethodError nsme) {
rutaBaseTmp = subdir;
} catch(Exception ee) {
rutaBaseTmp = subdir;
}
if(rutaBaseTmp.indexOf("%20") != -1)
rutaBaseTmp = rutaBaseTmp.replaceAll("%20"," ");
if(rutaBaseTmp == null) rutaBaseTmp = subdir;
}
return rutaBaseTmp;
}
private static String GetDirBaseLib(Class clase)
{
// se averigua el directorio de la aplicaci�n
if(rutaBaseLib == null)
rutaBaseLib = GetSubDirBase(clase,"lib/");
return rutaBaseLib;
}
private static String GetDirBaseSkin(Class clase)
{
// se averigua el directorio de la aplicaci�n
if(rutaBaseSkin == null)
rutaBaseSkin = GetSubDirBase(clase,"skin/");
return rutaBaseSkin;
}
private static String GetDirBaseTmp(Class clase)
{
// se averigua el directorio de la aplicaci�n
if(rutaBaseTmp == null)
rutaBaseTmp = GetSubDirBase(clase,"tmp/");
return rutaBaseTmp;
}
public static String getRutaBaseLib()
{
return rutaBaseLib;
}
public static String getRutaBaseSkin()
{
return rutaBaseSkin;
}
public static String getRutaBaseTmp()
{
return rutaBaseTmp;
}
public void addInternalFrameToDestock(javax.swing.JInternalFrame jif)
{
DesktopPanel.add(jif);
jif.setVisible(true);
}
public static String getConexionActual()
{
String resultado = "";
JInternalFrame ji = elGestorActivo.DesktopPanel.getSelectedFrame();
if(ji != null)
{
if(ji instanceof wizarExportarDatos)
resultado = ((wizarExportarDatos)ji).jdbcDriverClass + " - " + ((wizarExportarDatos)ji).jdbcDriverURL;
else if(ji instanceof ImportarDlg)
resultado = ((ImportarDlg)ji).jdbcDriverClass + " - " + ((ImportarDlg)ji).jdbcDriverURL;
else if(ji instanceof BuscarYReemplazar)
resultado = ((BuscarYReemplazar)ji).jdbcDriverClass + " - " + ((BuscarYReemplazar)ji).jdbcDriverURL;
else if(ji instanceof ConexionIFrame)
resultado = ((ConexionIFrame)ji).jdbcDriverClass + " - " + ((ConexionIFrame)ji).jdbcDriverURL;
else if(ji instanceof addInternalFrame)
resultado = ((addInternalFrame)ji).jdbcDriverClass + " - " + ((addInternalFrame)ji).jdbcDriverURL;
}
return resultado;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
public javax.swing.JDesktopPane DesktopPanel;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JButton jButton5;
private javax.swing.JButton jButton6;
private javax.swing.JButton jButton7;
private javax.swing.JButton jButton8;
private javax.swing.JButton jButton9;
private javax.swing.JToolBar jToolBar1;
private javax.swing.JButton jbConexionesRecientes;
private javax.swing.JPopupMenu jpmConexionesRecientes;
private javax.swing.JPopupMenu jpmIdiomas;
// End of variables declaration//GEN-END:variables
/*
* las propiedades que tenemos son:
*
* ultimo_dir
* ...
*/
public static Gestor elGestorActivo = null;
private static String rutaBaseLib = null;
private static String rutaBaseSkin = null;
private static String rutaBaseTmp = null;
public static Properties propiedades = new Properties();
public static Properties pIdioma = new Properties();
public static Skins skins = null;
public static String sSkinActual = "";
public static String Version = "2.4.003";
public jifFavoritos jifFav = null;
}