Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DATOS PERSONALES:
: Sistemas Mercantiles : Investigacin Operativa : Ing. Santiago Acurio : Vinueza Pillajo Danny : Sptimo Semestre : 27-agosto-2009
CONTENIDO CONTENIDO:
UNIANDES
UNIANDES
Los comentarios que puedan sugerirse de acuerdo a nivel de conocimiento de Java, depender mucho del entendimiento de la escritura en Java, adems del entendimiento de programas adicionales. Para la realizacin de un programa que pueda conectarse con una base de datos (MySQL) debe realizar en base a herramientas independientes de NetBeans 6.7 y justamente con el ltimo mencionado. Esta administracin de base de datos permitir realizar un control de los datos que disminuye considerablemente el tiempo al momento de obtener una lista ordenada de los registros existentes. Esta forma de acceso a datos necesita de un conjunto de herramientas para la realizacin del mismo, una de ellas es el MySQL Server v5 esscencial una mquina virtual que permitir trabajar con la base de datos necesaria o la que va a ser creada, la cual puede ser manipulada directamente desde MySQL Comand Line Client o no, una herramienta que viene conjuntamente como MySQL Server v5 al momento de instalar.
UNIANDES
Un ejemplo de las instrucciones que se utilizan en este componente son: CREATE DATABASE amanteMusica; USE amanteMusica;
CREATE TABLE Usuario( CODIGO INTEGER, USUARIO varchar(20) NOT NULL, CLAVE varchar(10) NOT NULL, PRIMARY KEY (CODIGO) );
Se debe tener el cuenta que cada fin de una instruccin es con un punto y coma (;) El MySQL Instance Config Wizard es una ayuda automatizada para configurar el servidor. Este permite crear configuracin avanzada de los archivos (my.ini o my.cnf) realizando una serie de preguntas y aplicando sus respuestas a una interfaz generada por el archivo de configuracin durante la instalacin. Esta instancia funciona solo para Windows. Configuracin
UNIANDES
UNIANDES
UNIANDES
UNIANDES
UNIANDES
Las herramientas mencionadas anteriormente, necesitan para su mejor entendimiento caractersticas adicionales como seguridad en los datos y relacin entre las tablas, migracin de datos y consultas de los registros que puedan existir. Estas herramientas de base de datos son MySQL Migration Toolkit, MySQL Administrator y MySQL Query Browser paquete: MySQL mismas que se encuentran en un solo
Este paquete lo podemos encontrar en http://mysql-gui-tools.uptodown.com/ La primera de ellas, permite migrar a MySQL mediante el uso de un asistente una amplia gama de sistemas gestores de base de datos, entre ellos: Oracle, Microsoft SQL Server y Microsoft Access. La segunda, es una consola de administracin que permite bajo la misma interfaz gestionar un servidor MySQL y llevar a cabo tareas fundamentales para su mantenimiento. La tercera, es una herramienta visual para crear, ejecutar y optimizar consultas SQL.
UNIANDES
Esta vez nos centraremos a crear una base de datos sencilla para demostrar su funcionamiento y para un posterior uso, de tal forma que nos limitaremos con la explicacin, es decir, sobre el ejecutable ms esencial: MySQL Administrator.
UNIANDES
UNIANDES
Una vez descargadas todas las herramientas, ejecutamos MySQL Administrator de la carpeta MySQL GUI Tools 5.0.
En su interfaz inicial ser el lugar donde nos solicitar el nombre del servidor, nombre de usuario, una contrasea y el puerto por donde se conectarn los datos; los datos requeridos se mencionan: Server Host Username Password Port localhost root ( nombre que insert durante la instalacin) root ( contrasea que insert durante la instalacin)
UNIANDES
Pulsamos en el botn
vez inicial para crear una base de datos (esquema), adems muestra las caractersticas principales que utilizo MySQL Administrador para su conexin: instancia del servidor, informacin del servidor e informacin del cliente.
En esta imagen presentada se puede observar en el lado izquierdo una serie de tareas que se puede utilizar. Hay que recordar que el objetivo inicial de usar estas herramientas es crear una base de datos; este objetivo a realizarse necesita de la ayuda de una de las tareas visualizadas base a esta. Seleccionamos la tarea mencionada: y por tratarle como tal, la explicacin de fondo ser en
UNIANDES
En la parte restante del lienzo donde se encuentra las bases de datos predeterminadas (information_schemas, mysql, test) realizamos un clic derecho en este men contextual seleccionamos la opcin Create New Schema. Esta seleccin originar que aparezca una interfaz para ingresar el nombre de la base de datos a crear (amanteMusica) y luego pulsar en el botn . En el lienzo donde se encuentra las base de datos
aparecer la nueva creada (amanteMusica) a la cual le damos un clic se visualizar interfaces en un estilo de guiones expresado literalmente entre los cuales se encuentra tablas de la base de datos (schema tables), ndice de la base de datos (schema ndices), vistas (views) y procedimientos almacenados (stored procedures).
De estos guiones, usaremos tablas de la base de datos (schema tables) para crear la base de datos.
UNIANDES
Seleccionamos el botn
datos correspondientes: Nombre de la tabla, base de datos en la cual vamos a crear la tabla, comentario (opcional) y la creacin de los campos. Para la realizacin de este ltimo, una forma fcil de ingresar campos es, hacer doble clic en la fila nica (al inicio) del lienzo de Columnas e ndices donde estn datos como Nombre de la Columna, Opciones de la Tabla y Opciones Avanzadas, automticamente se activar el lienzo para ingresar el campo y aadir el nombre respectivo (Hacer el mismo procedimiento para adicionar otros campos).
UNIANDES
Una vez ingresados los campos necesarios seleccionamos el botn luego aparecer en la siguiente ventana .
UNIANDES
Una vez aplicados los cambios en la tabla creada la cerramos tendremos la vista correspondiente en tablas de la base de datos (schema tables).
Todo el procedimiento de creacin base de datos que se present es solo una gua bsica existen otras formas de creacin de base de datos, pero debemos elegir relativamente algoritmo estructurado (paso o paso) para entender en un sentido claro y exacto, adems cabe mencionar que con esta aplicacin se puede realizar relaciones entre tablas por lo que se vuelve un ambiente interactivo y tener otra tipo de idea cuando se trabaje en el tema de relaciones, pero eso es un subtema literal.
UNIANDES
UNIANDES
UNIANDES
Aqu seleccionamos la carpeta Controladores a la cual hacemos un clic derecho y pulsamos en Nuevo Controlador
UNIANDES
Redireccione (copie) el conector a la direccin mostrada en imagen Nuevo Driver JDBC y agrguelo. Pulse .
Descargue el componente de la pgina que se muestra a continuacin: 1. http://rapidlibrary.com/index.php?q=download+jre+6u6+windows+i586 Descargue el conector de las pginas que se muestran a continuacin: 1. http://www.filestube.com/6701542c46b97ccd03ea/details.html
http://gentoo.llarian.net/distfiles/mysql-connector-java-5.0.8.tar.gz
2. http://www.jarfinder.com/index.php/jars/versionInfo/34434
(adecuado)
http://mirrors.ibiblio.org/pub/mirrors/maven2/mysql/mysql-connector-java/5.1.5/mysqlconnector-java-5.1.5.jar
Esta operacin aadir un nuevo controlador a la lista actual, y este archivos se damos un clic derecho y escogemos la opcin Conectar usando Insertar los datos necesarios en la nueva pantalla y presionar en .
UNIANDES
Se presentar el link de conexin a la base de datos creada de entre los cuales se puede distinguir otras bases propias del sistema y la que hemos creado, adicional su tabla (usuarios).
UNIANDES
UNIANDES
UNIANDES
A continuacin se presenta una serie de imgenes las cuales se sugiere seguir su orden; la ubicacin del proyecto nuevo a crearse se uso de forma arbitraria, por lo que es decisin del usuario la ubicacin del mismo y no afectar a posteriores cambios.
UNIANDES
UNIANDES
Lienzo
En esta imagen se puede observar los paquetes de fuentes creados donde se localizan los archivos creados organizados en grupos (META-INF.services , ejemplo msica () , ejemplomusica.resources, ejemplomusica.resources.busyicons). El proyecto SWING separa la vista y el control de un componente visual de sus contenidos o modelo de datos . Sin embargo, aunque el proyecto Swing tiene componentes que crean la arquitectura Modelo Vista Controlador, es ms
seguro entenderlo como un modelo delegado . Esto es porque parte del controlador Swing, frecuentemente usa eventos del ratn y de teclado para responder al componente, es combinada con la vista fsica en un objeto UI delegate (User Interfaz delegate).
UNIANDES
UNIANDES
Durante la creacin del proyecto se distintos objetos, cada uno con una funcin determinada se cre un Men con nombres en ingles.
Para cambiar los nombres a espaol basta con hacer doble clic sobre el men File y escribir.
Otra forma de cambiar el nombre es, seleccionar Archivo y la paleta de propiedades en la opcin text cambiar el nombre. La accin que realice esta nueva opcin se la escoge en action (la accin debe ser creada dentro de la clase FrameView del formulario). El cdigo para salir se presenta a continuacin: import org.jdesktop.application.Action; public class EjemploMusicaView extends FrameView { ....... ....... @Action public void salir() { initComponents(); //getRootPane().setDoubleBuffered(false); //getRootPane().setVisible(true); System.exit(0); // Para cerrar la aplicacin } ....... ....... }
UNIANDES
Es el mismo procedimiento para crear el formulario de la opcin Acerca de. Se usa el siguiente cdigo: @Action public void showAboutBox() { // Crea un constructor del paquete ejemplomusica (ema)
ejemplomusica.EjemploMusicaAboutBox ema = new ejemplomusica.EjemploMusicaAboutBox(null);
UNIANDES
Luego de la revisin de las opciones de la barra de men pasamos a realizar la creacin de objetos en el lienzo del formulario y cambiar de nombre: Crear objetos
Cambiar nombre
UNIANDES
Objetos
Esto dar origen a la apertura de una nueva ventana; es esta seleccionamos importar datos al formulario y luego seleccionamos el origen de los datos (base de datos)
UNIANDES
Esta operacin creas varios componentes: el paquete META-INF (un objeto de persistencia es almacenado en un archivo u otro medio de forma permanente para
recuperarlos en tiempo posterior), un Administrador de Entidades (Persistencia de java, instancia asociada en el contexto de una persistencia, es decir, es un paquete que contiene clases e interfaces que define el contrato entre un proveedor de persistencia y un director de clases y los clientes de la persistencia de java API), una Consulta
(Persistencia de java, interfaz implementada por cada vendedor de JPA (Java Persistence PI) para encontrar objetos persistentes manejando cierto criterio de bsqueda, podemos obtener una instancia Query desde una instancia EntityManager ) y un Resultado de la Consulta (Persistencia de java, obtener una lista de resultados).
UNIANDES
Pulsar en
UNIANDES
Una vez realizada la conexin de la tabla con la base de datos, ahora, conectamos las cajas de texto (tres objetos) con los campos de tabla (indistintamente).
UNIANDES
UNIANDES
Despus
Se deber tener activado el check observable en las propiedades del list [List] para que se muestren los datos. En el editor de cdigo del formulario ingresamos en siguiente cdigo (texto color negro):
import org.jdesktop.application.Task; import java.util.ArrayList; import java.util.List; import javax.persistence.RollbackException; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import org.jdesktop.beansbinding.AbstractBindingListener; import org.jdesktop.beansbinding.Binding; import org.jdesktop.beansbinding.PropertyStateEvent; public class EjemploMusicaView extends FrameView //inicio { public EjemploMusicaView(SingleFrameApplication app) //inicio { ....... ....... ....... .......
UNIANDES
masterTable.getSelectionModel().addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { firePropertyChange("recordSelected", isRecordSelected()); } }); !isRecordSelected(),
// tracking changes to save bindingGroup.addBindingListener(new AbstractBindingListener() { @Override public void targetChanged(Binding binding, PropertyStateEvent event) { // save action observes saveNeeded property setSaveNeeded(true); } });
// have a transaction started entityManager.getTransaction().begin(); } //fin private boolean saveNeeded; //Declaracin de la variable
private void setSaveNeeded(boolean saveNeeded) { if (saveNeeded != this.saveNeeded) { this.saveNeeded = saveNeeded; firePropertyChange("saveNeeded", !saveNeeded, saveNeeded);
UNIANDES
} }
@Action public void newRecord() { ejemplomusica.Usuarios u = new ejemplomusica.Usuarios(); entityManager.persist(u); list.add(u); int row = list.size()-1; masterTable.setRowSelectionInterval(row, row); masterTable.scrollRectToVisible(masterTable.getCellRect(row, true)); setSaveNeeded(true); } 0,
@Action(enabledProperty = "recordSelected") public void deleteRecord() { int[] selected = masterTable.getSelectedRows(); List<ejemplomusica.Usuarios> toRemove ArrayList<ejemplomusica.Usuarios>(selected.length); for (int idx=0; idx<selected.length; idx++) { ejemplomusica.Usuarios u list.get(masterTable.convertRowIndexToModel(selected[idx])); toRemove.add(u); entityManager.remove(u); } list.removeAll(toRemove); = = new
UNIANDES
setSaveNeeded(true); }
private class SaveTask extends Task { SaveTask(org.jdesktop.application.Application app) { super(app); } @Override protected Void doInBackground() { try { entityManager.getTransaction().commit(); entityManager.getTransaction().begin(); } catch (RollbackException rex) { rex.printStackTrace(); entityManager.getTransaction().begin(); List<ejemplomusica.Usuarios> ArrayList<ejemplomusica.Usuarios>(list.size()); merged = new
for (ejemplomusica.Usuarios u : list) { merged.add(entityManager.merge(u)); } list.clear(); list.addAll(merged); } return null; } @Override protected void finished() {
UNIANDES
setSaveNeeded(false); } }
/** * An example action method showing how to create asynchronous tasks * (running on background) and how to show their progress. Note the * artificial 'Thread.sleep' calls making the task long enough to see the * progress visualization - remove the sleeps for real application. */ @Action public Task refresh() { return new RefreshTask(getApplication()); }
private class RefreshTask extends Task { RefreshTask(org.jdesktop.application.Application app) { super(app); } @SuppressWarnings("unchecked") @Override protected Void doInBackground() { try { setProgress(0, 0, 4); setMessage("Rolling back the current changes..."); setProgress(1, 0, 4); entityManager.getTransaction().rollback(); Thread.sleep(1000L); // remove for real app setProgress(2, 0, 4);
UNIANDES
setMessage("Fetching new data..."); java.util.Collection data = query.getResultList(); for (Object entity : data) { entityManager.refresh(entity); } Thread.sleep(1300L); // remove for real app setProgress(4, 0, 4);
Thread.sleep(150L); // remove for real app list.clear(); list.addAll(data); } catch(InterruptedException ignore) { } return null; } @Override protected void finished() { setMessage("Done."); setSaveNeeded(false); } }
} //fin
UNIANDES
Por ltimo, enlazamos las cajas de texto con las acciones respectivas:
UNIANDES
UNIANDES
La creacin de una aplicacin java mediante un proyecto estndar IDE, genera una clase principal en el proyecto para construir, ejecutar y depurar el proyecto. Este procedimiento lleva el mismo orden de pasos con la diferencia que este evita lneas de cdigo que no se puede usar (es de acuerdo a la interfaz necesario o la ms adecuado para el usuario.
UNIANDES
A continuacin realizamos los mismos pasos de la pgina 31 a la pgina 37 (creacin de objetos, cambio de nombre y links) hasta tener una imagen semejante a lo que se muestra abajo:
UNIANDES
Al terminacin de llenar con objetos necesario el formulario, ingresamos en siguiente cdigo (solo ingresar el texto de color negro): Al inicio del formulario
package amantemusica [ Nombre del paquete donde se encuentra el formulario]; import java.beans.Beans;
Este paquete es muy til porque pone a disposicin 34 clases y 13 interfaces que implementan algunas de las estructuras de datos ms comunes. Algunas operaciones sobre fechas y sobre el calendario, y otras cosas. Adems el paquete java.util incluye otros subpaquetes que son: java.util.mime, java.util.zip y java.util.jar que sirven respectivamente para tratar archivos de tipo MIME, de tipo ZIP y de tipo Java Archive (JAR). Como estructura de datos, se llama a la estructura lgica lista para contener cierto nmero de datos, en la que es posible insertar, quitar, buscar e incluso ordenar un array.
import java.util.List; import java.util.ArrayList; import javax.persistence.RollbackException; public class NewJFrame extends javax.swing.JFrame { // inicio /** Crea un Nuevo Formulario */ public NewJFrame() { // inicio
Clases AbstractCollection AbstractList AbstractMap AbstractSequentialList AbstractSet ArrayList Arrays BitSet Calendar Collections Date Dictionary EventObject GregorianCalendar HashMap HashSet Hashtable LinkedList ListResourceBundle Locale Observable Properties PropertyPermission PropertyResourceBundle Random ResourceBundle SimpleTimeZone
Interfaces Collection Comparator Enumeration EventListener Iterator List ListIterator Map Map.Entry Observer Set SortedMap SortedSet
UNIANDES
Cuando se est creando el Objeto se llama al Constructor y ste a su vez realiza una invocacin al mtodo initComponents()
initComponents(); Se usa para actualizar los datos de una tabla en un momento determinado, es decir est en constante ejecucin. El import java.beans.Beans es una clase vulgar para llamar a cualquier elemento creado dentro del formulario, ente caso (if) Si en el tiempo en que se ejecuta Beans existe un corte o pausa por medio de un objeto (botn) durante la ejecucin, realiza la operacin Es decir, mientras no se ejecute un botn de nuevo, guardar, actualizar o eliminar, no se ejecuta la operacin.
if (!Beans.isDesignTime()) { amanteMusicaPUEntityManager.getTransaction().begin(); } } //fin [Procedimiento de los botones Nuevo, Eliminar, Guardar, Actualizar, .. , se muestran en las siguientes pginas] } //fin
UNIANDES
Para el botn Nuevo @Action son acciones a las que responde un objeto devolviendo un valor (pulbic void), esta accin posee todas lneas de cdigo de acuerdo a la funcin del objeto.
@Action public void newRecord() { Dentro del paquete ejemplomusica, se encuentra la clase usuarios a la que crea un constructor u = new propia de dicha clase (se genera automticamente durante el enlace de la tabla con los elementos de la base de datos (tabla) ) en la cual se ejecuta las procesos (seria igual a una clase principal (literalmente).
Las siguientes lneas de cdigo, ejecutan una accin de persistencia (algo parecido a un Panel de Control de Windows, donde estn las acciones principales del sistema), en este caso aade una nueva lnea de registro y a la vez actualiza la Tabla tomando como valores su nuevo intervalo de ingreso de datos (ndice) y l hace visible (barra de movimiento o barra donde se puede ver el ingreso de los datos para luego ser grabados.
entityManager.persist(u); list.add(u); int row = list.size()-1; masterTable.setRowSelectionInterval(row, row); masterTable.scrollRectToVisible(masterTable.getCellRect(row, true)); } Para el botn Eliminar 0,
@Action
UNIANDES
Inicializa un array (entero) tomando como nico valor en que se encuentra seleccionado de la lista (Tabla de datos). Realiza un ciclo (for) hasta buscar el valor (numero de registro) y procede a la eliminacin .remove(u)
list.get(masterTable.convertRowIndexToModel(selected[idx])); toRemove.add(u); entityManager.remove(u); } list.removeAll(toRemove); } Para el botn Guardar @Action public void save() { Inicializa un array (entero) tomando como nico valor en que se encuentra seleccionado de la try { lista (Tabla de datos). Realiza un ciclo (for) hasta buscar el valor (numero de registro) y procede a la eliminacin .remove(u) entityManager.getTransaction().commit(); entityManager.getTransaction().begin(); } catch (RollbackException rex) {
UNIANDES
rex.printStackTrace(); entityManager.getTransaction().begin();
Crea un constructor para fusionar (merged) el Resultado de la Consulta (Persistencia en Java) y lo inserta. List<amantemusica.Usuarios> amantemusica.Usuarios>(list.size()); for (amantemusica.Usuarios u : list) { merged.add(entityManager.merge(u)); } list.clear(); list.addAll(merged); } } Para el botn Actualizar merged = new ArrayList<
Es una operacin que devuelve a la base de datos a un estado previo, es importante para la integridad de los datos ya que puede ser restaurada a una copia limpia incluso despus que se haya realizado operaciones errneas. entityManager.getTransaction().rollback(); entityManager.getTransaction().begin();
UNIANDES
java.util.Collection es una va para forzar a los constructores, consiste exclusivamente de los mtodos estticos que realizan un operacin o devuelve una coleccin. Contiene ALGORITMOS POLIMRFICOS que funcionan en colecciones de datos. query es solo el sombre de la Consulta (Persistencia en Java).
Object entity es una clase encapsulada de un tipo de POO, esta identidad conceptual est basada en la combinacin de valores de estas propiedades java.util.Collection data = query.getResultList(); Por lo tanto, re describen los datos de un objeto por uno nuevo. for (Object entity : data) {
entityManager es el nombre del Administrador de entidades (Persistencia en Java), mismo que se relaciona con la Consulta y el Resultado de la Consulta. entityManager.refresh(entity); } list.clear(); list.addAll(data); }