Advertisement
Guest User

Untitled

a guest
Nov 24th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.65 KB | None | 0 0
  1. package dataMining;
  2.  
  3. import java.io.File;
  4. import javax.xml.parsers.DocumentBuilderFactory;
  5. import javax.xml.parsers.DocumentBuilder;
  6. import org.w3c.dom.Document;
  7. import org.w3c.dom.NodeList;
  8.  
  9.  
  10. import org.w3c.dom.Node;
  11. import org.w3c.dom.Element;
  12. import java.sql.*;
  13. import java.sql.Connection;
  14. import java.sql.DriverManager;
  15. import java.sql.Statement;
  16. import java.sql.SQLException;
  17. import java.util.Objects;
  18. import java.util.Scanner;
  19. import java.util.logging.Level;
  20. import java.util.logging.Logger;
  21. import javax.xml.parsers.DocumentBuilder;
  22. import javax.xml.parsers.DocumentBuilderFactory;
  23.  
  24. class Artistas {
  25.     double media_rating;
  26.     int repeticoes;
  27.     String nome_artista;
  28. }
  29.  
  30. class Filmes {
  31.     double media_rating;
  32.     int repeticoes;
  33.     String nome_filme;
  34. }
  35.  
  36. public class consultas {
  37.    
  38.     public static void main(String[] args) {
  39.        
  40.       try {
  41.         Class.forName("org.postgresql.Driver");
  42.          System.out.print("***** 1. Qual é a média e desvio padrão dos ratings para artistas musicais e filmes? \n");
  43.          pergunta1();
  44.          
  45.          System.out.println("***** 2. Quais são os artistas e filmes com o maior rating médio curtidos por pelo menos duas pessoas? Ordenados por rating médio.");
  46.          pergunta2e3();
  47.       }catch (Exception e) {
  48.         e.printStackTrace();
  49.       }
  50.      
  51.      
  52.  
  53.     }
  54.  
  55.     public static Connection connection_my(String url,String login,String senha) throws SQLException {
  56.             Connection con = null;
  57.             con = (Connection) DriverManager.getConnection(url,login,senha);
  58.           if(con == null){
  59.             System.out.print("Banco não conectado");
  60.           }
  61.         return con;
  62.     }
  63.  
  64. //Qual é a média e desvio padrão dos ratings para artistas musicais e filmes?
  65.     public static void pergunta1(){
  66.       Statement stmt = null;
  67.       Statement stmt2 = null;
  68.       Statement stmt3 = null;
  69.       Statement stmt4 = null;
  70.       try {
  71.         Connection con = connection_my("jdbc:postgresql://200.134.10.32:5432/1702PowerPuffGirls","1702PowerPuffGirls","353330");
  72.         con.setAutoCommit(false);
  73.  
  74.         stmt = con.createStatement();
  75.         stmt2 = con.createStatement();
  76.         stmt3 = con.createStatement();
  77.         stmt4 = con.createStatement();
  78.         ResultSet media_musica = stmt.executeQuery("SELECT  AVG(rating) FROM like_music;" );
  79.         ResultSet media_filme = stmt2.executeQuery("SELECT  AVG(rating) FROM like_movie;" );
  80.         ResultSet dp_filme = stmt3.executeQuery("SELECT  stddev(rating) FROM like_movie;" );
  81.         ResultSet dp_musica = stmt4.executeQuery("SELECT  stddev(rating) FROM like_music;" );
  82.  
  83.  
  84.         while(media_musica.next() && media_filme.next() && dp_musica.next() && dp_filme.next()){
  85.           float  mediaM = media_musica.getFloat("avg");
  86.  
  87.            System.out.print("Media ratings da musica = " + mediaM + "\n");
  88.  
  89.            float  mediaF = media_filme.getFloat("avg");
  90.  
  91.             System.out.print("Media ratings do filme = " + mediaF + "\n");
  92.  
  93.             float  dpF = dp_filme.getFloat("stddev");
  94.  
  95.              System.out.print("Desvio padrao do filme = " + dpF + "\n");
  96.  
  97.              float  dpM= dp_musica.getFloat("stddev");
  98.  
  99.               System.out.print("Desvio padrao musica = " + dpM + "\n");
  100.  
  101.         }
  102.  
  103.         stmt.close();
  104.         stmt2.close();
  105.         stmt3.close();
  106.         stmt4.close();
  107.         con.commit();
  108.         con.close();
  109.  
  110.       }catch (Exception e) {
  111.         e.printStackTrace();
  112.       }
  113.     }
  114.  
  115.    
  116.     public static void pergunta2e3() {
  117.             int i = 0, total_tuplas = 186, total_filmes = 348, indice_filme = 0, indice_artista = 0, j;
  118.             boolean repetiu = false;
  119.                 Artistas artista[];
  120.                 artista = new Artistas [total_tuplas];
  121.                 Filmes filme[];
  122.                 filme = new Filmes[total_filmes];
  123.                
  124.                
  125.             Statement stmt = null;
  126.             Statement stmt2 = null;
  127.             try{
  128.               Connection con = connection_my("jdbc:postgresql://200.134.10.32:5432/1702PowerPuffGirls","1702PowerPuffGirls","353330");
  129.               con.setAutoCommit(false);
  130.  
  131.               stmt = con.createStatement();
  132.               stmt2 = con.createStatement();
  133.              
  134.               ResultSet music = stmt.executeQuery( "SELECT * FROM like_music;" );
  135.               ResultSet movie = stmt2.executeQuery( "SELECT * FROM like_movie;");
  136.              
  137.               while ( movie.next() ) {
  138.                  
  139.                   String uri_filme = movie.getString("uri");
  140.                   int rating_filme = movie.getInt("rating");
  141.                  
  142.                
  143.                 if (i == 0) {
  144.                     filme[indice_filme] = new Filmes();
  145.                     filme[indice_filme].nome_filme = uri_filme;
  146.                     filme[indice_filme].media_rating = rating_filme;
  147.                     indice_filme++;
  148.                 }
  149.                
  150.                 if (i > 0) { //verifica outros artistas
  151.                     for (j = 0; j < indice_filme; j++) {
  152.                         if (Objects.equals(filme[j].nome_filme,uri_filme)){ //ja existe um filme igual
  153.                    
  154.                             double x, total_pessoas;
  155.                             total_pessoas = filme[j].repeticoes + 1;
  156.                             x = filme[j].media_rating * total_pessoas;
  157.                             filme[j].media_rating = (x+rating_filme)/(total_pessoas+1); //calcula media rating de cada artista
  158.                             filme[j].repeticoes++;
  159.                             repetiu = true;
  160.                             break;
  161.                         }
  162.                        
  163.                     }
  164.                     //se não for repetido
  165.                    
  166.                     if (!repetiu) {
  167.                         filme[indice_filme] = new Filmes();
  168.                         filme[indice_filme].nome_filme = uri_filme;
  169.                         filme[indice_filme].media_rating = rating_filme;
  170.                         filme[indice_filme].repeticoes = 0;
  171.                         indice_filme++;                
  172.                     }
  173.                     repetiu = false;
  174.                    
  175.                 }
  176.                
  177.                 i++;
  178.             }
  179.              
  180.              
  181.              while ( music.next() ) {
  182.                    
  183.                    String uri = music.getString("uri");
  184.                    int rating = music.getInt("rating");
  185.                  
  186.                    
  187.                     if (i == 0) {
  188.                         artista[indice_artista] = new Artistas();
  189.                         artista[indice_artista].nome_artista = uri;
  190.                         artista[indice_artista].media_rating = rating;
  191.                         indice_artista++;
  192.                     }
  193.                    
  194.                     if (i > 0) { //verifica outros artistas
  195.                         for (j = 0; j < indice_artista; j++) {
  196.                             if (Objects.equals(artista[j].nome_artista,uri)){ //ja existe um filme igual
  197.                        
  198.                                 double x, total_pessoas;
  199.                                 total_pessoas = artista[j].repeticoes + 1;
  200.                                 x = artista[j].media_rating * total_pessoas;
  201.                                 artista[j].media_rating = (x+rating)/(total_pessoas+1); //calcula media rating de cada artista
  202.                                 artista[j].repeticoes++;
  203.                                 repetiu = true;
  204.                                 break;
  205.                             }
  206.                            
  207.                         }
  208.                         //se não for repetido
  209.                        
  210.                         if (!repetiu) {
  211.                             artista[indice_artista] = new Artistas();
  212.                             artista[indice_artista].nome_artista = uri;
  213.                             artista[indice_artista].media_rating = rating;
  214.                             artista[indice_artista].repeticoes = 0;
  215.                             indice_artista++;                  
  216.                         }
  217.                         repetiu = false;
  218.                        
  219.                     }
  220.                    
  221.                     i++;
  222.              }
  223.              
  224.              
  225.              
  226.              int maisde2_artistas = 0, maisde2_filmes = 0;
  227.              Artistas top_artistas[];
  228.              Filmes top_filmes[];
  229.              top_artistas = new Artistas [total_tuplas];
  230.              top_filmes = new Filmes[total_filmes];
  231.              
  232.              for (i = 0; i < indice_artista; i++) {
  233.                     if (artista[i].repeticoes >= 1) { //pega todos os artistas
  234.                         top_artistas[maisde2_artistas] = new Artistas();
  235.                         top_artistas[maisde2_artistas].repeticoes = artista[i].repeticoes;
  236.                         top_artistas[maisde2_artistas].nome_artista = artista[i].nome_artista;
  237.                         top_artistas[maisde2_artistas].media_rating = artista[i].media_rating;
  238.                         maisde2_artistas++;
  239.                     }
  240.              }
  241.              for (i = 0; i < indice_filme; i++) {
  242.                 if (filme[i].repeticoes >= 1) { //pega todos os artistas
  243.                     top_filmes[maisde2_filmes] = new Filmes();
  244.                     top_filmes[maisde2_filmes].repeticoes = filme[i].repeticoes;
  245.                     top_filmes[maisde2_filmes].nome_filme = filme[i].nome_filme;
  246.                     top_filmes[maisde2_filmes].media_rating = filme[i].media_rating;
  247.                     maisde2_filmes++;
  248.                 }
  249.           }
  250.              Artistas aux;
  251.              aux = new Artistas();
  252.              Filmes aux_filme;
  253.              aux_filme = new Filmes();
  254.              
  255.              for (i = 1; i < maisde2_artistas; i++) {
  256.                      for(j = 0; j<i; j++){
  257.                         if(top_artistas[i].media_rating > top_artistas[j].media_rating){
  258.                             aux = top_artistas[i];
  259.                             top_artistas[i] = top_artistas[j];
  260.                             top_artistas[j] = aux;
  261.                         }
  262.                      }
  263.              }
  264.              for (i = 1; i < maisde2_filmes; i++) {
  265.                  for(j = 0; j<i; j++){
  266.                     if(top_filmes[i].media_rating > top_filmes[j].media_rating){
  267.                         aux_filme = top_filmes[i];
  268.                         top_filmes[i] = top_filmes[j];
  269.                         top_filmes[j] = aux_filme;
  270.                     }
  271.                     }
  272.              }
  273.          
  274.              System.out.println("\n### Artistas com maior rating medio curtido por pelo menos duas pessoas: ");
  275.              for (i = 0; i < 10; i++) {
  276.                     System.out.println ("Artista: " + top_artistas[i].nome_artista + " media  " +  top_artistas[i].media_rating);
  277.                    
  278.              }
  279.              
  280.              System.out.println("\n### Filmes com maior rating medio curtido por pelo menos duas pessoas: ");
  281.              for (i = 0; i < 30; i++) {
  282.                    
  283.                     System.out.println ("Filme: " + top_filmes[i].nome_filme + " media:  " +  top_filmes[i].media_rating);
  284.                    
  285.              }
  286.              System.out.println("Quais são os 10 artistas musicais e filmes mais populares? Ordenados por popularidade.\n");
  287.              for (i = 1; i < maisde2_filmes; i++) {
  288.                  for(j = 0; j<i; j++){
  289.                     if(top_filmes[i].repeticoes > top_filmes[j].repeticoes){
  290.                         aux_filme = top_filmes[i];
  291.                         top_filmes[i] = top_filmes[j];
  292.                         top_filmes[j] = aux_filme;
  293.                     }
  294.                     }
  295.              }
  296.              for (i = 1; i < maisde2_artistas; i++) {
  297.                  for(j = 0; j<i; j++){
  298.                     if(top_artistas[i].repeticoes > top_artistas[j].repeticoes){
  299.                         aux = top_artistas[i];
  300.                         top_artistas[i] = top_artistas[j];
  301.                         top_artistas[j] = aux;
  302.                     }
  303.                     }
  304.              }
  305.              for (i = 0; i < 10; i++) {
  306.                 int vezes = top_filmes[i].repeticoes+1;
  307.                 System.out.println ("Filme: " + top_filmes[i].nome_filme + " Curtido por " +  vezes + " pessoas, " + " media  " +  top_filmes[i].media_rating);
  308.          
  309.              }
  310.              
  311.              for (i = 0; i < 10; i++) {
  312.                 int vezes = top_artistas[i].repeticoes+1;
  313.                 System.out.println ("Artista: " + top_artistas[i].nome_artista + " Curtido por " +  vezes + " pessoas, " + " media  " +  top_artistas[i].media_rating);
  314.                
  315.           }
  316.              
  317.                  stmt.close();
  318.                  con.commit();
  319.                  con.close();
  320.              }catch(Exception e){
  321.                  e.printStackTrace();
  322.              }
  323.          
  324.     }
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement