Guest User

Untitled

a guest
Jan 14th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.65 KB | None | 0 0
  1. package tripletas;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.FileNotFoundException;
  5. import java.io.FileReader;
  6. import java.io.IOException;
  7. import java.sql.*;
  8. import java.util.logging.Level;
  9. import java.util.logging.Logger;
  10.  
  11. /**
  12.  *
  13.  * @author Rommel Augusto Gutiérrez Roa (ragutierrez)
  14.  */
  15. public class Tripletas {
  16.  
  17.     DBConnection conn = new DBConnection();
  18.     DBConnection conn2 = new DBConnection();
  19.  
  20.     /**
  21.      * @param args the command line arguments
  22.      */
  23.     public static void main(String[] args) {
  24.  
  25.         Tripletas obj = new Tripletas();
  26.         Object[][] tablaIds = obj.columnasIdTabla();
  27. //        obj.imprimirMatriz(tablaIds);
  28.  
  29.         obj.obtenerTripletas(tablaIds);
  30.     }
  31.  
  32.     public Object[][] columnasIdTabla() {
  33.         conn.initDatosLectura();
  34.         conn.setSchema("infodoc");
  35.         conn.crear();
  36.         ResultSet rs = null;
  37.         Object[][] datosTablas = null;
  38. //        conn = new DBConnection();
  39.  
  40.         int numColumnas, numFilas;
  41.  
  42.         try {
  43.  
  44.             rs = conn.query("SELECT DISTINCT table_schema, table_name,column_name, column_comment "
  45.                     + "FROM INFORMATION_SCHEMA.COLUMNS "
  46.                     + "WHERE COLUMN_KEY = 'PRI' "
  47.                     + "AND table_schema='" + conn.getSchema() + "' "
  48.                     + "ORDER BY table_schema");
  49.  
  50.             numColumnas = rs.getMetaData().getColumnCount();
  51.             rs.last();
  52.             numFilas = rs.getRow();
  53.  
  54.             datosTablas = new Object[numFilas][numColumnas];
  55.  
  56.             rs.beforeFirst();
  57.             int fila = -1;
  58.             while (rs.next()) {
  59.                 fila++;
  60.                 for (int i = 0; i < numColumnas; i++) {
  61.                     datosTablas[fila][i] = rs.getObject(i + 1);
  62.                 }
  63.             }
  64.         } catch (Exception e) {
  65.             System.out.println("Ha ocurrido el siguiente error:\n" + e);
  66.         }
  67.         conn.destruir();
  68.         return datosTablas;
  69.     }
  70.  
  71.     public void obtenerTripletas(Object[][] tablaIds) {
  72.         try {
  73.             //        String tripletas = "";
  74.  
  75.             conn2.initDatosEscritura();
  76.             conn2.setSchema("tripletas_db");
  77.             conn2.crear();
  78.             conn2.insertUpdate("delete from datos_tripletas");
  79.             conn2.insertUpdate("ALTER TABLE datos_tripletas AUTO_INCREMENT=0");
  80. //            conn2.destruir();
  81.  
  82.             String consulta;
  83.             ResultSet rs;
  84.             int columnas;
  85.  
  86.             for (int i = 0; i < tablaIds.length; i++) { // 2; i++) {//
  87.                 conn.initDatosLectura();
  88.                 conn.setSchema(tablaIds[i][0].toString());
  89.                 //                    System.out.println(conn.getUrl());
  90.                 //                    System.out.println(conn.getUser());
  91.                 //                    System.out.println(conn.getPassword());
  92.                 conn.crear();
  93.  
  94.                 consulta = "SELECT * FROM " + tablaIds[i][1] + ";";
  95.                 rs = conn.query(consulta);
  96.                 columnas = rs.getMetaData().getColumnCount();
  97.                 String insert;
  98.                 while (rs.next()) {
  99.                     for (int j = 1; j <= columnas; j++) {
  100.                         if (i == 1) {
  101. //                            System.out.print("<");
  102. //                            System.out.print(tablaIds[i][1].toString() + "_" + rs.getObject(tablaIds[i][2].toString()));
  103. //                            System.out.print(">");
  104. //                            System.out.print("<");
  105. //                            System.out.print(tablaIds[i][1].toString() + "_" + rs.getMetaData().getColumnLabel(j).toString());
  106. //                            System.out.print(">");
  107. //                            System.out.print("<");
  108. //                            System.out.print(rs.getObject(j).toString());
  109. //                            System.out.print(">");
  110. //                            System.out.println("");
  111. //
  112.                             insert = "INSERT INTO datos_tripletas(log,sujeto,predicado,objeto) "
  113.                                     + "values('" + tablaIds[i][1].toString() + "|" + rs.getString(tablaIds[i][2].toString()) + "|" + rs.getMetaData().getColumnLabel(j).toString() + "',"
  114.                                     + "'" + rs.getString(tablaIds[i][2].toString()) + "',"
  115.                                     + "'" + rs.getMetaData().getColumnLabel(j).toString() + "',"
  116.                                     + "'" + rs.getString(j).trim().replaceAll("'", "\'").replaceAll("\n", "\\n") + "');";
  117.  
  118.                             insertar(insert);
  119.                         }
  120.                     }
  121.                 }
  122.  
  123.                 conn.destruir();
  124.  
  125.                 System.out.println("");
  126.             }
  127.  
  128.             //        return tripletas;
  129.         } catch (SQLException ex) {
  130.             Logger.getLogger(Tripletas.class.getName()).log(Level.SEVERE, null, ex);
  131.         }
  132.     }
  133.  
  134.     private void insertar(String insert) {
  135.         try {
  136. //            conn2.crear();
  137.             if (conn2.isClosed()) {
  138.                 conn2.destruir();
  139.                 conn2.initDatosEscritura();
  140.                 conn2.setSchema("tripletas_db");
  141.                 conn2.crear();
  142.             }
  143.  
  144.             System.out.println(insert);
  145.  
  146.             if (!conn2.insertUpdate(insert)) {
  147.                 System.out.println("ERROR al insertar");
  148.             }
  149. //            conn2.destruir();
  150.         } catch (SQLException ex) {
  151.             conn2.destruir();
  152.             Logger.getLogger(Tripletas.class.getName()).log(Level.SEVERE, null, ex);
  153.         }
  154.     }
  155.  
  156.     private void imprimirMatriz(Object[][] tablaIds) {
  157.         for (int i = 0; i < tablaIds.length; i++) {
  158.             for (int j = 0; j < tablaIds[i].length; j++) {
  159.                 System.out.print(tablaIds[i][j] + "\t");
  160.             }
  161.             System.out.println("");
  162.         }
  163.  
  164.     }
  165. }
  166.  
  167.  
  168. public class DBConnection {
  169.  
  170.     private String schema = ""; // Nombre del esquema que al cual se va a hacer la consulta
  171.     private String user;
  172.     private String password;
  173.     private String ipServer;
  174.     private String url;
  175.     Connection conn = null;
  176.     Statement stm;
  177.  
  178.     /**
  179.      * Constructor de DbConnection
  180.      */
  181.     public DBConnection() {
  182.     }
  183.  
  184.     public void crear() {
  185.         try {
  186.             //obtenemos el driver de para mysql
  187.             Class.forName("com.mysql.jdbc.Driver");
  188.             //obtenemos la conexión
  189.             conn = DriverManager.getConnection(getUrl(), getUser(), getPassword());
  190.             if (conn != null) {
  191.                 System.out.println("Conección a base de datos " + getSchema() + " OK");
  192.             }
  193.         } catch (SQLException e) {
  194.             System.out.println("La conección a base de datos " + getSchema() + " FALLÓ");
  195.             System.out.println(e);
  196.         } catch (ClassNotFoundException e) {
  197.             System.out.println("No se encuentra la clase: com.mysql.jdbc.Driver");
  198.             System.out.println(e);
  199.         }
  200.     }
  201.  
  202.     public void initDatosEscritura() {
  203.         try {
  204.             //Entrada
  205.             BufferedReader bufferedReader = new BufferedReader(new FileReader("ArchivoEscritura.txt"));
  206.             //Buscar si existe una palabra
  207.             String line = "";
  208.             while ((line = bufferedReader.readLine()) != null) {
  209.                 if ((line.split("="))[0].equals("user")) {
  210. //                    System.out.println("user-->" + (line.split("="))[1]);
  211.                     user = (line.split("="))[1];
  212.                 }
  213.                 if ((line.split("="))[0].equals("password")) {
  214. //                    System.out.println("password-->" + (line.split("="))[1]);
  215.                     password = (line.split("="))[1];
  216.                 }
  217.                 if ((line.split("="))[0].equals("ipServer")) {
  218. //                    System.out.println("ipServer-->" + (line.split("="))[1]);
  219.                     ipServer = (line.split("="))[1];
  220.                 }
  221.             }
  222.             url = "jdbc:mysql://" + ipServer + "/";
  223.         } catch (FileNotFoundException e) {
  224.             e.printStackTrace();
  225.         } catch (IOException e) {
  226.             e.printStackTrace();
  227.         }
  228.     }
  229.  
  230.     public void initDatosLectura() {
  231.         try {
  232.             //Entrada
  233.             BufferedReader bufferedReader = new BufferedReader(new FileReader("ArchivoLectura.txt"));
  234.             //Buscar si existe una palabra
  235.             String line = "";
  236.             while ((line = bufferedReader.readLine()) != null) {
  237.                 if ((line.split("="))[0].equals("user")) {
  238. //                    System.out.println("user-->" + (line.split("="))[1]);
  239.                     user = (line.split("="))[1];
  240.                 }
  241.                 if ((line.split("="))[0].equals("password")) {
  242. //                    System.out.println("password-->" + (line.split("="))[1]);
  243.                     password = (line.split("="))[1];
  244.                 }
  245.                 if ((line.split("="))[0].equals("ipServer")) {
  246. //                    System.out.println("ipServer-->" + (line.split("="))[1]);
  247.                     ipServer = (line.split("="))[1];
  248.                 }
  249.             }
  250.             url = "jdbc:mysql://" + ipServer + "/";
  251.         } catch (FileNotFoundException e) {
  252.             e.printStackTrace();
  253.         } catch (IOException e) {
  254.             e.printStackTrace();
  255.         }
  256.     }
  257.  
  258.     public void destruir() {
  259.         if (conn != null) {
  260.             try {
  261.                 conn.close();
  262.             } catch (Exception e) {
  263.                 System.out.println("Ha ocurrido la siguiente excepcion: \n" + e);
  264.             }
  265.         }
  266.     }
  267.  
  268.     public boolean isClosed() throws SQLException{
  269.         return conn.isClosed();
  270.     }
  271.    
  272.     /**
  273.      * @param querySelect a SELECT query to the Database
  274.      * @return a <code>ResultSet</code> with the data
  275.      * @throws SQLException
  276.      */
  277.     public ResultSet query(String querySelect) throws SQLException {
  278.  
  279. //        System.out.print("El SQL enviado es: ");
  280. //        System.out.println(querySelect);
  281. //        System.out.println("");
  282.  
  283.         ResultSet rs;
  284.         stm = conn.createStatement();
  285.  
  286.         rs = stm.executeQuery(querySelect);
  287.  
  288.         return rs;
  289.     }
  290.  
  291.     public boolean insertUpdate(String insertUpdate) throws SQLException {
  292.  
  293.         stm = conn.createStatement();
  294.         if (stm.executeUpdate(insertUpdate) != 0) {
  295.             return true;
  296.         } else {
  297.             return false;
  298.         }
  299.     }
  300.  
  301.     public void cerrar(ResultSet rs) {
  302.         if (rs != null) {
  303.             try {
  304.                 rs.close();
  305.                 System.out.println("ResultSet cerrado");
  306.             } catch (Exception e) {
  307.                 System.out.println("No es posible cerrar la Conexion");
  308.             }
  309.         }
  310.     }
  311.  
  312.     /**
  313.      * @return the schema
  314.      */
  315.     public String getSchema() {
  316.         return schema;
  317.     }
  318.  
  319.     /**
  320.      * @param schema the schema to set
  321.      */
  322.     public void setSchema(String schema) {
  323.         this.schema = schema;
  324.     }
  325.  
  326.     /**
  327.      * @return the user
  328.      */
  329.     public String getUser() {
  330.         return user;
  331.     }
  332.  
  333.     /**
  334.      * @return the password
  335.      */
  336.     public String getPassword() {
  337.         return password;
  338.     }
  339.  
  340.     /**
  341.      * @return the ipServer
  342.      */
  343.     public String getIpServer() {
  344.         return ipServer;
  345.     }
  346.  
  347.     /**
  348.      * @return the url
  349.      */
  350.     public String getUrl() {
  351.         if (!getSchema().isEmpty()) {
  352.             return "jdbc:mysql://" + ipServer + "/" + getSchema() + "?zeroDateTimeBehavior=convertToNull&autoReconnect=true";
  353.         } else {
  354.             return "jdbc:mysql://" + ipServer + "/?zeroDateTimeBehavior=convertToNull&autoReconnect=true";
  355.         }
  356.     }
  357. }
Add Comment
Please, Sign In to add comment