elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 ... 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 [66] 67 68 69 70
651  Programación / Java / Re: validar si existe un registro en: 28 Enero 2015, 01:46 am
Aplicando el patrón DAO, representamos las tablas como clases:

Código
  1. public class Ticket {
  2. private int id;
  3. private Request request;
  4. private double total;
  5.  
  6. public Ticket() {
  7.  
  8. }
  9. public int getId() {
  10. return id;
  11. }
  12. public void setId(int id) {
  13. this.id = id;
  14. }
  15. public Request getRequest() {
  16. return request;
  17. }
  18. public void setRequest(Request request) {
  19. this.request = request;
  20. }
  21. public double getTotal() {
  22. return total;
  23. }
  24. public void setTotal(double total) {
  25. this.total = total;
  26. }
  27. }

Código
  1. public class Request {
  2. private int id;
  3. private int state;
  4.  
  5. public Request() {
  6.  
  7. }
  8. public int getId() {
  9. return id;
  10. }
  11. public void setId(int id) {
  12. this.id = id;
  13. }
  14. public int getState() {
  15. return state;
  16. }
  17. public void setState(int state) {
  18. this.state = state;
  19. }
  20. }

Creamos un método en el DAO de Request (pedido) que busque un pedido por ID:

Código
  1. public Request find(String id) {
  2. String sql = "SELECT * FROM pedidos WHERE id_pedido = ?";
  3.  
  4. PreparedStatement preparedStatement=  null;
  5. Connection connection = null;
  6. ResultSet result = null;
  7. Request request = null;
  8. try {
  9. connection = DBHelper.getConnection();
  10. preparedStatement = connection.prepareStatement(sql);
  11. preparedStatement.setString(1,id);
  12. result = preparedStatement.executeQuery();
  13.  
  14. if(result.next()) {
  15. request = new Request();
  16. while(result.next()) {
  17. request.setId(result.getString("request_id"));
  18. request.setState(result.getInt("state"));
  19. }
  20. }
  21. logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
  22. } finally {
  23. if(connection != null)
  24. connection.close();
  25. if(preparedStatement != null)
  26. preparedStatement.close();
  27. if(result != null)
  28. result.close();
  29. }
  30. return request;
  31. }

Creamos un método que inserte un Ticket con un Request especificado:

Código
  1. public boolean insertTicket(Ticket ticket) {
  2. String SQL = "INSERT INTO tickets(ticket_id, pedido_id, total)
  3. VALUES(?,?,?)";
  4. PreparedStatement preparedStatement=  null;
  5. Connection connection = null;
  6. boolean operationState = false;
  7. try {
  8. connection = DBHelper.getConnection();
  9. preparedStatement = connection.prepareStatement(sql);
  10. preparedStatement.setInt(1,ticket.getId());
  11. preparedStatement.setInt(2,ticket.getRequest().getId());
  12. preparedStatement.setDouble(3,total);
  13. operationState = preparedStatement.executeUpdate();
  14.  
  15. logger.error("Ha ocurrido un error: "+e.getLocalizedMessage());
  16. } finally {
  17. if(connection != null)
  18. connection.close();
  19. if(preparedStatement != null)
  20. preparedStatement.close();
  21. }
  22. return operationState;
  23. }

Así o mantenemos simple y ordenado. Primero buscamos el pedido por ID. Si éste existe, creamos un nuevo objeto Ticket le asignamos un ID, un total y le asociamos un pedido (Request). Luego lo insertamos en la BD:

Código
  1. Request request = find(REQUEST_ID);
  2. if(request != null) {
  3. Ticket ticket = new Ticket();
  4. ticket.setId(1);
  5. ticket.setRequest(request);
  6. ticket.setTotal(2000);
  7. insertTicket(ticket);// o utilizar el boolean devuelto para algo...
  8. }
  9. else {
  10. // mostrarle al usuario que el pedido no existe
  11. }

Te recomiendo que uses el framework ORM Hibernate. Lee al respecto.
652  Programación / Desarrollo Web / Re: dejo mi primer diseño web (no bardear principiante) en: 26 Enero 2015, 14:09 pm
Para ser tu primer diseño está bien (visualmente, como está estructurado el html no sé). Tienes que aprender a combinar colores, a utilizar fuentes, eventos hover, focus, etc. Te recomiendo que vayas leyendo como funcionan las propiedades, position, display, margin, padding, width, height, etc. Eso para el posicionamiento, que a mí es lo que más se me complicó. Lo demás ya se aprende en el camino de acuerdo a lo que se te ocurra hacer, como por ejemplo, un sombreado (box-shadow) etc.

Saludos y sigue estudiando (Y).
653  Programación / Java / Re: Eliminar las posiciones pares de un array y comprimir el array en: 25 Enero 2015, 20:37 pm
No es complejo para nada, tan solo usas clases de la API de Java, totalmente estándar.

Lo que si tienes que tener en cuenta es que por más que intentes una vez que has definido el tamaño del array no podrás eliminar índices ni modificar dinámicamente el array. Como mucho podrás asignarle NULL a los índices pares.

Te recomiendo que sigas intentando hasta que consigas hacerlo a tu manera. Éste es el objetivo de los cursos de algoritmos, agilizar la lógica mental. Cuando lo logres, puedes colocar el código por si le sirve a otra persona.

Saludos.
654  Programación / Programación General / Re: Java vs C comparable en tiempo? en: 25 Enero 2015, 17:51 pm
Según tengo entendido, Java no utiliza mucho procesador, pero sí algo más de RAM. Por ejemplo, en un algoritmo de árboles binarios, C consume una media de ~150MB y Java puede llegar a consumir ~500MB, Python consume una media de 1.1GB y C++ algo de ~350MB.

Aquí pueden ver un benchmark de Java vs C/GCC.

655  Programación / Java / Re: Eliminar las posiciones pares de un array y comprimir el array en: 25 Enero 2015, 15:14 pm
Cuando se programa se trata de mantener las cosas simples y, haciendo ésto con arrays lo estás complicando. De todos modos, te pondré dos versiones: una con arrays y otra con list.

Versión con arrays:

Código
  1. import java.io.IOException;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.Collections;
  5. import java.util.LinkedList;
  6. import java.util.List;
  7. import java.util.Scanner;
  8.  
  9. public class ArrayDemo {
  10.  
  11. private Character[] letters  = new Character[30];
  12. private Scanner reader = new Scanner(System.in);
  13.  
  14. /*
  15. * Realiza un do while para ingresar datos
  16. * hasta que se ingrese el centinela (0) lo cual
  17. * indica que ya no se ingresaran más números
  18. */
  19. void fillArray() throws IOException {
  20.  
  21. byte i = 0;
  22. char letter;
  23.  
  24. do {
  25. System.out.println("Introduce una letra o 0 para finalizar:");
  26. letter = reader.next().charAt(0);
  27. if( letter != '0') {
  28. letters [i] = letter;
  29. i++;
  30. }
  31. } while (letter != '0');
  32. }
  33.  
  34. // imprime el array
  35. void printArray() {
  36.  
  37. System.out.println("\n**** ARRAY ******\n");
  38. for(Character letter : letters)
  39. {
  40. if(letter != null) {
  41. System.out.println(letter);
  42. }
  43. }
  44. }
  45.  
  46. /*
  47. * Convierte el arreglo "letters" a lista, en concreto LinkedList para
  48. * poder usar el método remove() sin necesidad de un iterator.
  49. * Luego crea una lista "oddItems" que guardara los valores impares.
  50. * Posteriormente, elimina todos los elementos NULL que tiene la lista convertida
  51. * desde "letters" ya que los elementos vacíos de un array contienen NULL por defecto.
  52. *
  53. * Recorre la lista y evalúa si el index actual es par (quiere decir que el índice
  54. * normal, es un impar porque en listas y arrays se empieza a contar por 0), guarda
  55. * el elemento en la nueva lista "oddItems".
  56. * seguidamente blankeo todo el array asignándole null a cada posición para que al
  57. * guardar el nuevo array en "letters", éste esté limpio.
  58. *
  59. * Finalmente guardo el array "oddItems" en "letters".
  60. */
  61. void deleteEvensIndex() {
  62.  
  63. List<Character> tempLetters = new LinkedList<Character> (Arrays.asList(letters));
  64. List<Character> oddItems = new ArrayList<>();
  65. tempLetters.removeAll(Collections.singleton(null));
  66.  
  67. for(int i=0; i<tempLetters.size(); i++)
  68. {
  69. if ( i % 2 == 0)
  70. oddItems.add(tempLetters.get(i));
  71. letters[i] = null;
  72. }
  73. letters = oddItems.toArray(letters);
  74. }
  75.  
  76. }

Código
  1. import java.io.IOException;
  2.  
  3. public class ArrayDemoTest {
  4.  
  5. public static void main(String[] args) {
  6.  
  7. ArrayDemo obj = new ArrayDemo();
  8. try {
  9. obj.fillArray();
  10. obj.printArray();
  11. obj.deleteEvensIndex();
  12. obj.printArray();
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. }
  16.  
  17. }
  18.  
  19. }

Versión con List:

Código
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5. public class ListDemo {
  6.  
  7. private List<Character> letters;
  8. private Scanner reader;
  9.  
  10. public ListDemo()
  11. {
  12. letters = new ArrayList<>();
  13. reader = new Scanner(System.in);
  14. }
  15.  
  16. /*
  17. * Realiza un do while para ingresar datos
  18. * hasta que se ingrese el centinela (0) lo cual
  19. * indica que ya no se ingresaran m&#225;s n&#250;meros
  20. */
  21. public void fillList()
  22. {
  23. char letter;
  24.  
  25. do {
  26. System.out.println("Introduce una letra o 0 para finalizar:");
  27. letter = reader.next().charAt(0);
  28. if( letter != '0') {
  29. letters.add(letter);
  30. }
  31. } while (letter != '0');
  32. }
  33.  
  34. /*
  35. * Convierte el arreglo "letters" a lista, en concreto LinkedList para
  36. * poder usar el m&#233;todo remove() sin necesidad de un iterator.
  37. * Luego crea una lista "oddItems" que guardara los valores impares.
  38. * Posteriormente, elimina todos los elementos NULL que tiene la lista convertida
  39. * desde "letters" ya que los elementos vac&#237;os de un array contienen NULL por defecto.
  40. *
  41. * Recorre la lista y eval&#250;a si el index actual es par (quiere decir que el &#237;ndice
  42. * normal, es un impar porque en listas y arrays se empieza a contar por 0), guarda
  43. * el elemento en la nueva lista "oddItems".
  44. *
  45. * Finalmente guardo el array "oddItems" en "letters".
  46. */
  47. public void deleteEvensIndex()
  48. {
  49. List<Character> oddItems = new ArrayList<>();
  50. for(int i=0; i<letters.size(); i++)
  51. {
  52. if(i % 2 == 0)
  53. oddItems.add(letters.get(i));
  54. }
  55. letters = oddItems;
  56. }
  57.  
  58. // imprime la lista
  59. public void printList()
  60. {
  61. System.out.println("\n ******** DATA OF LIST ******** \n");
  62. for(char c : letters)
  63. {
  64. System.out.println(c);
  65. }
  66. }
  67.  
  68. }

Código
  1. public class ListDemoTest {
  2.  
  3. public static void main(String[] args) {
  4.  
  5. ListDemo ld = new ListDemo();
  6. ld.fillList();
  7. ld.printList();
  8. ld.deleteEvensIndex();
  9. ld.printList();
  10.  
  11. }
  12.  
  13. }

Salida:

Código:
Introduce una letra o 0 para finalizar:
c
Introduce una letra o 0 para finalizar:
a
Introduce una letra o 0 para finalizar:
m
Introduce una letra o 0 para finalizar:
i
Introduce una letra o 0 para finalizar:
n
Introduce una letra o 0 para finalizar:
a
Introduce una letra o 0 para finalizar:
n
Introduce una letra o 0 para finalizar:
t
Introduce una letra o 0 para finalizar:
e
Introduce una letra o 0 para finalizar:
0

 ******** DATA OF LIST ********

c
a
m
i
n
a
n
t
e

 ******** DATA OF LIST ********

c
m
n
n
e

Si quieres que salga "aiat":

Código
  1. if(i % 2 == 0) // remplaza por
  2. if(i % 2 != 0)
656  Programación / Java / Re: Recorrido del caballo y lentitud al ejecutarlo en java en: 25 Enero 2015, 14:33 pm
Hmm, quizás ejecutándolo dentro de un Thread para que no interfiera con el thread principal puede mejorar la velocidad de procesamiento.

Alternativamente, te recomiendo colocar ésta duda que me parece muy interesante, en StackOverFlow, que estoy seguro te darán muy buenas respuestas los expertos. Para ésto, te recomiendo que re-escribas tu código en ingés.

Mi estimado @engel lex, sí es muy cierto que Java antes era un dinosaurio (me refiero a lo pesado xD). Pero en los últimos años, tanto el lenguaje como la JVM han sido optimizados mucho (como por ejemplo la implementación de la tecnología JIT en la JVM), dando como resultado un lenguaje y una JVM muchos más rápidos. Es más, en los últimos benchmarks que he podido observar, Java ejecuta la mayoría de algoritmos a la misma velocidad e incluso en algunos más que C++. Y con el esperado Jigsaw en Java 9, Java será una delicia xD
657  Programación / Java / Re: [Solucionado] no entiendo como se traduce esta consulta en hibernate en: 25 Enero 2015, 14:28 pm
Lo asumo al leer ésta línea donde obtienes la sesión de Hibernate:

Código
  1. RolPersonal rolPersonal = (RolPersonal) sessionFactory.getCurrentSession().createQuery(SQL_rolPersonal).uniqueResult();

Si usaras JPA harías:

Código
  1. em.getTransaction().begin();
  2. Query query = em.createQuery(sql);
  3. ...
658  Programación / Java / Re: Eliminar las posiciones pares de un array y comprimir el array en: 24 Enero 2015, 23:45 pm
No te entiendo.

Citar
es decir,si paso la  cadena
 "caminante" la cadena quedara asi: "aiat"

¿Quieres decir que eliminas los impares y dejas solo los pares?

a -> 2
i -> 4
a -> 6
t -> 8

¿Esa cadena "caminante" la pasas en un array? ¿de qué forma?

Citar
"letras" que contiene mi array

¿Así?

Código
  1. String[] array = {"c","a","m","i","n","a","n","t","e"};

Trata de explicar tu enunciado por partes para que se entienda qué es lo que pretendes hacer.
659  Programación / Java / Re: Eliminar las posiciones pares de un array y comprimir el array en: 24 Enero 2015, 23:25 pm
Un array es una tipo de dato con un tamaño fijo, es decir, es estático. Una vez que le das un tamaño al array, ya no puede cambiar, por lo que no es posible remover posiciones como en otros lenguajes. Con objetos tipo List (y por ende las clases que lo implementan) si es posible.

Lo que puedes hacer es crear otro array y guardar allí los datos que estén en los índices impares:

Código
  1. int oddCount = (int) array.length / 2; // cuenta los indices impares
  2.  
  3. int[] otherArray = new int[oddCount];
  4. for(byte i=0; i<oddCount; i++)
  5. {
  6. if(i % 2 != 0) // solo indices impares
  7. otherArray = array[i];
  8. }

Otra opción es convertirlo a lista y luego convertirlo nuevamente a array (tienes que trabajar con los Wrappers):
Código
  1. Integer[] array = {2,7,4,9,8};
  2. Arrays.asList(array);
  3.  
  4. for(byte i=0; i<array.size(); i++)
  5. {
  6. if(i % 2 == 0)
  7. array.remove(i);
  8. }
  9. Integer[] otherArray = array.toArray(new Integer[array.size()]);
660  Programación / Java / Re: [Solucionado] no entiendo como se traduce esta consulta en hibernate en: 24 Enero 2015, 20:53 pm
Claro. Recuerda que con los ORM trabajas siempre en base a objetos. Aunque UsuarioRolPersonal es una clase Java, representa a la tabla usuariorolpersonal. Por lo que los atributos de ésta clase, hacen referencia a las columnas de dicha tabla.

Supongo que Hibernate hará una consulta como:

Código
  1. SELECT * FROM usuariorolpersonal u
  2. WHERE u.id_usuario IN
  3. (SELECT u.id_usuario FROM usuario u)

En tu archivo persistence.xml, puedes añadir la propiedad "show_sql" para ver el código SQL que fabrica Hibernate:
Código
  1. <property name="show_sql" value="true"/>

Te recomiendo usar Hibernate como implementación de JPA y no Hibernate nativo. Usar siempre los estándars tienen sus ventajas. Además, siempre es posible obtener la sesión original de Hibernate para poder extender un poco JPA. Pero como recomendación, usar JPA con Hibernate o EclipseLink.
Páginas: 1 ... 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 [66] 67 68 69 70
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines