Merge pull request #7 from NyxiumYuuki/Nico_Creation_Methodes_vides
Nico creation methodes vides
This commit is contained in:
commit
d174d71f2a
5 changed files with 1296 additions and 31 deletions
62
.idea/ProjetGenieLogicielLoto.iml
generated
62
.idea/ProjetGenieLogicielLoto.iml
generated
|
|
@ -1,32 +1,32 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-simple:1.7.25" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:win:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:win:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:win:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:win:15" level="project" />
|
||||
</component>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
|
||||
<output url="file://$MODULE_DIR$/target/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/target/test-classes" />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/target" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.7.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.7.0" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.25" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.slf4j:slf4j-simple:1.7.25" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-controls:win:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-graphics:win:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-base:win:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:15" level="project" />
|
||||
<orderEntry type="library" name="Maven: org.openjfx:javafx-fxml:win:15" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
629
src/main/java/fr/myny/database/DataBase.java
Normal file
629
src/main/java/fr/myny/database/DataBase.java
Normal file
|
|
@ -0,0 +1,629 @@
|
|||
package fr.myny.database;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
|
||||
/**
|
||||
* La classe DataBase qui soccupera de la base de donnees
|
||||
*/
|
||||
|
||||
public class DataBase {
|
||||
//public static String url="jdbc:mariadb://vachot.fr:3306?user=mynynicolas&password=Bw0po64*";
|
||||
public static final int NBCOL =25;//le nombre de coldu fichier csv
|
||||
public static final String url="jdbc:mariadb://phpmyadmin.vachot.fr:3306?db=myny&user=mynynicolas&password=Bw0po64*";//l'acces à la db
|
||||
public Connection conn;//la connexion a la db
|
||||
|
||||
/**
|
||||
* La methode de connection
|
||||
* @return conn la connection a la db
|
||||
*/
|
||||
public Connection getConnection() {
|
||||
conn = null;
|
||||
try {
|
||||
conn = DriverManager.getConnection(url);
|
||||
//conn = DriverManager.getConnection("jdbc:mariadb://vachot.fr:3306?user=mynynicolas&password=Bw0po64*");
|
||||
//conn = DriverManager.getConnection("jdbc:mariadb://phpmyadmin.vachot.fr:3306/myny?user=mynynicolas&password=Bw0po64*");
|
||||
//conn = DriverManager.getConnection("jdbc:mariadb:../../../../../../test.db");
|
||||
if(conn!=null) {
|
||||
System.out.println("Connecte a la db");
|
||||
System.out.println(conn);
|
||||
}
|
||||
}catch(SQLException e) {
|
||||
System.out.println("getConnection on a des pb:" + e.getMessage());
|
||||
}
|
||||
return conn;
|
||||
}
|
||||
|
||||
/**
|
||||
* La methode de creation de la table
|
||||
* <p>stmt Statement la variable pour creer la declaration</p>
|
||||
* <p>sql String la requete</p>
|
||||
* @return res, int le resultat de la requete (nb de ligne affectees)
|
||||
*/
|
||||
public int createTable() {
|
||||
int res=-1;
|
||||
Statement stmt;
|
||||
String sql="CREATE TABLE IF NOT EXISTS myny.Test_Table ("+ //declaration de la table, de ses colonnes et de leur type et leur taille (on aurai pu ajouter des param supplementaires)
|
||||
" annee_numero_de_tirage INTEGER,"+ //1 long
|
||||
" jour_de_tirage VARCHAR(10),"+ //2 String
|
||||
" date_de_tirage DATE,"+ //3 String
|
||||
" date_de_forclusion DATE,"+ //4 String
|
||||
" boule_1 TINYINT,"+ //5 long
|
||||
" boule_2 TINYINT,"+ //6 long
|
||||
" boule_3 TINYINT,"+ //7 long
|
||||
" boule_4 TINYINT,"+ //8 long
|
||||
" boule_5 TINYINT,"+ //9 long
|
||||
" numero_chance TINYINT,"+ //10 long
|
||||
" combinaison_gagnante_en_ordre_croissant varchar(20),"+//11 String
|
||||
" nombre_de_gagnant_au_rang1 INTEGER,"+ //12 long
|
||||
" rapport_du_rang1 float(53),"+ //13 double
|
||||
" nombre_de_gagnant_au_rang2 INTEGER,"+ //14 long
|
||||
" rapport_du_rang2 float(53),"+ //15 double
|
||||
" nombre_de_gagnant_au_rang3 INTEGER,"+ //16 long
|
||||
" rapport_du_rang3 float(53),"+ //17 double
|
||||
" nombre_de_gagnant_au_rang4 INTEGER,"+ //18 long
|
||||
" rapport_du_rang4 float(53),"+ //19 double
|
||||
" nombre_de_gagnant_au_rang5 INTEGER,"+ //20 long
|
||||
" rapport_du_rang5 float(53),"+ //21 double
|
||||
" nombre_de_gagnant_au_rang6 INTEGER,"+ //22 long
|
||||
" rapport_du_rang6 float(53),"+ //23 double
|
||||
" numero_jokerplus INTEGER,"+ //24 long
|
||||
" devise VARCHAR(10));"; //25 String
|
||||
//System.out.println(sql);
|
||||
try {
|
||||
if(conn==null) {
|
||||
conn = DriverManager.getConnection(url); //connection a la db
|
||||
}
|
||||
if(conn!=null) {
|
||||
stmt = conn.createStatement(); //creation de la declaration
|
||||
res=stmt.executeUpdate(sql); //execution de la declaration
|
||||
//stmt.executeQuery(sql);
|
||||
conn.commit();
|
||||
//conn.close();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("create table probleme, verifier si le pb ne vient pas de executeupdate au lieu executequery");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* La methode de remplissage de la base de donnees
|
||||
* <p>line String la ligne a ajouter</p>
|
||||
* <p>i int, un compteur de valeurs lues,</p>
|
||||
* <p>j int, qui suit i%NBCOL</p>
|
||||
* <p>nbValAj int qui augmente si on doit ajouter des lignes</p>
|
||||
* <p>date String, la valeur de la date lue</p>
|
||||
* <p>jour String, le jour lu</p>
|
||||
* <p>mois String, le mois lu</p>
|
||||
* <p>an String, l annee lue</p>
|
||||
* <p>mesL tableau dans lequel seront stockes tous les long</p>
|
||||
* <p>mesS tableau dans lequel seront stockes tous les String</p>
|
||||
* <p>mesD tableau dans lequel seront stockes tous les Double</p>
|
||||
* <p>sc Scanner, l objet qui servira a lire le fichier csv</p>
|
||||
* @param filePath String le fichier et son chemin
|
||||
* @return res int le resultat de la requete(nb de ligne affectees)
|
||||
*/
|
||||
public int fillTable(String filePath){
|
||||
int res=-1;
|
||||
Scanner sc;
|
||||
int i=0,j, nbValAj=0;
|
||||
String line="";
|
||||
String date, jour, mois, an;
|
||||
long[][] mesL=new long[4000][NBCOL+1];
|
||||
String[][]mesS=new String[4000][NBCOL+1];
|
||||
Double[][]mesD=new Double[4000][NBCOL+1];
|
||||
String sql="INSERT INTO myny.Test_Table" +//definit la requete
|
||||
" (annee_numero_de_tirage, "+
|
||||
" jour_de_tirage, "+
|
||||
" date_de_tirage,"+
|
||||
" date_de_forclusion,"+
|
||||
" boule_1 ,"+
|
||||
" boule_2 ,"+
|
||||
" boule_3 ,"+
|
||||
" boule_4 ,"+
|
||||
" boule_5 ,"+
|
||||
" numero_chance ,"+
|
||||
" combinaison_gagnante_en_ordre_croissant ,"+
|
||||
" nombre_de_gagnant_au_rang1 ,"+
|
||||
" rapport_du_rang1 ,"+
|
||||
" nombre_de_gagnant_au_rang2 ,"+
|
||||
" rapport_du_rang2 ,"+
|
||||
" nombre_de_gagnant_au_rang3 ,"+
|
||||
" rapport_du_rang3 ,"+
|
||||
" nombre_de_gagnant_au_rang4 ,"+
|
||||
" rapport_du_rang4 ,"+
|
||||
" nombre_de_gagnant_au_rang5 ,"+
|
||||
" rapport_du_rang5 ,"+
|
||||
" nombre_de_gagnant_au_rang6 ,"+
|
||||
" rapport_du_rang6 ,"+
|
||||
" numero_jokerplus ,"+
|
||||
" devise ) VALUES \n";
|
||||
try {
|
||||
sc = new Scanner(new File(filePath));//lire le fichier csv
|
||||
sc.useDelimiter(";|\\n"); //definit les separateurs utilisés
|
||||
sc.nextLine();//passe la premiere ligne, les metadonnees
|
||||
while (sc.hasNext()){//tant qu'on a des champs non-vides, on va remplir la ligne et les cases specifiques des tableaux a 2 dim correspondant au champ lu
|
||||
j=(i% NBCOL)+1;
|
||||
if(j==1) {
|
||||
line=line+"(?,";
|
||||
mesL[nbValAj][j]=Long.parseLong(sc.next());
|
||||
}
|
||||
if(j< NBCOL && j>1) {
|
||||
line = line + "?,";
|
||||
if (j==2 ||j==11){
|
||||
//line=line+"\'"+sc.next().replace(",",".")+"\',";
|
||||
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
|
||||
|
||||
}
|
||||
else if (j==3 ||j==4){
|
||||
date=sc.next().replace(",",".");
|
||||
jour=date.substring(0,2);
|
||||
mois=date.substring(3,5);
|
||||
an=date.substring(6,10);
|
||||
mesS[nbValAj][j]=an+"-"+mois+"-"+jour;
|
||||
}
|
||||
else if (j >= 13 && j <= 23 && j % 2 == 1) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
|
||||
mesD[nbValAj][j] = Double.parseDouble(sc.next().replace(",", "."));
|
||||
|
||||
}
|
||||
else {//pour les autres col, on va simplement les remplir
|
||||
mesL[nbValAj][j] = Long.parseLong(sc.next().replaceAll("\\s", ""));
|
||||
}
|
||||
}
|
||||
if(j== NBCOL) {
|
||||
nbValAj++;
|
||||
line=line+"?)";
|
||||
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
|
||||
if(sc.hasNext()) {
|
||||
line = line+ ",";
|
||||
}
|
||||
else{
|
||||
line = line+ ";";
|
||||
}
|
||||
//System.out.println(line);
|
||||
sql=sql+line;
|
||||
line="";
|
||||
}
|
||||
i++;
|
||||
}
|
||||
System.out.println(sql);
|
||||
}
|
||||
catch (Exception e){
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
if (nbValAj>0) {//si on a des modifications
|
||||
PreparedStatement ps;
|
||||
try {
|
||||
if (conn == null) {
|
||||
conn = this.getConnection();
|
||||
}
|
||||
if (conn != null) {
|
||||
ps=conn.prepareStatement(sql);
|
||||
for(int a=0;a<nbValAj;a++){//pour chaque case de chaque ligne ajoutée, on va ajouter la valeur
|
||||
for(int b=1;b<=NBCOL;b++){//dans la declaration preparee, pour eviter les injections sql
|
||||
if((b>1&&b<5)||b==11||b==25){
|
||||
System.out.println("a: "+a+" et b: "+b);
|
||||
ps.setString((a)*25+b, mesS[a][b]);
|
||||
}
|
||||
else if(b > 12 && b < 24 && b % 2 == 1){
|
||||
System.out.println("a: "+a+" et b: "+b);
|
||||
if (b == 13) {
|
||||
System.out.println(mesD[a][b]);
|
||||
}
|
||||
ps.setString((a)*25+b, mesD[a][b]+"");
|
||||
}
|
||||
else{
|
||||
System.out.println("a: "+a+" et b: "+b);
|
||||
ps.setString((a)*25+b, mesL[a][b]+"");
|
||||
}
|
||||
}
|
||||
}
|
||||
res=ps.executeUpdate();
|
||||
//ps.executeQuery();//puis on execute la requete
|
||||
System.out.println("update validee");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("filldatebase probleme, verifier si le pb ne viens pas de executeupdate au lieu executequery");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* La methode de mise a jour de la base de donnees
|
||||
* @param filePath String, le chemin+nom du fichier+extension
|
||||
* @return res int, le resultat de la requete(nb de ligne affectees)
|
||||
* <p>sc Scanner, l objet qui servira a lire le fichier csv</p>
|
||||
* <p>line String, ligne contenant l'ajout a effectuer</p>
|
||||
* <p>i int, un compteur de valeurs lues,</p>
|
||||
* <p>j int, qui suit i%NBCOL</p>
|
||||
* <p>nbValAj int qui augmente si on doit ajouter des lignes</p>
|
||||
* <p>date String, la valeur de la date lue</p>
|
||||
* <p>jour String, le jour lu</p>
|
||||
* <p>mois String, le mois lu</p>
|
||||
* <p>an String, l annee lue</p>
|
||||
* <p>anEntre long, valeur lue pour l annee et le numero de tirage. sert a definir si la valeur est a ajouter dans la table</p>
|
||||
* @deprecated
|
||||
*/
|
||||
public int updateTable(String filePath) {
|
||||
ResultSet rs=null;
|
||||
Scanner sc;
|
||||
int res=-1;
|
||||
int i,j, nbValAj=0;
|
||||
String date, jour, mois, an;
|
||||
String line="";
|
||||
long anEntre;
|
||||
Statement stmt;
|
||||
long maxvaldb;
|
||||
String sql="INSERT INTO myny.Test_Table" + //le debut de la requete, specifiant laction a effectuer, la table et la db
|
||||
" (annee_numero_de_tirage, "+
|
||||
" jour_de_tirage, "+
|
||||
" date_de_tirage,"+
|
||||
" date_de_forclusion,"+
|
||||
" boule_1 ,"+
|
||||
" boule_2 ,"+
|
||||
" boule_3 ,"+
|
||||
" boule_4 ,"+
|
||||
" boule_5 ,"+
|
||||
" numero_chance ,"+
|
||||
" combinaison_gagnante_en_ordre_croissant ,"+
|
||||
" nombre_de_gagnant_au_rang1 ,"+
|
||||
" rapport_du_rang1 ,"+
|
||||
" nombre_de_gagnant_au_rang2 ,"+
|
||||
" rapport_du_rang2 ,"+
|
||||
" nombre_de_gagnant_au_rang3 ,"+
|
||||
" rapport_du_rang3 ,"+
|
||||
" nombre_de_gagnant_au_rang4 ,"+
|
||||
" rapport_du_rang4 ,"+
|
||||
" nombre_de_gagnant_au_rang5 ,"+
|
||||
" rapport_du_rang5 ,"+
|
||||
" nombre_de_gagnant_au_rang6 ,"+
|
||||
" rapport_du_rang6 ,"+
|
||||
" numero_jokerplus ,"+
|
||||
" devise ) VALUES \n";
|
||||
try {
|
||||
conn = this.getConnection(); //initialisation de la connexion
|
||||
if(conn!=null) { //si la co est bonne
|
||||
sc = new Scanner(new File(filePath)); //lire le fichier donne
|
||||
sc.useDelimiter(";|\\n"); //les delimiteurs seront ; et \n
|
||||
sc.nextLine(); //on ne conserve pas la premiere ligne, contenant les metadonnees
|
||||
anEntre=Long.parseLong(sc.next()); //lecture de l id en haut du tableau(donc le plus grand, cest ce qu on a constate en lisant le csv
|
||||
//System.out.println("numero en haut du fichier csv :"+anEntre);
|
||||
stmt = conn.createStatement(); //recuperation du nb de lignes dans la table
|
||||
rs = stmt.executeQuery("SELECT MAX(annee_numero_de_tirage) FROM myny.Test_Table;");
|
||||
rs.next();
|
||||
maxvaldb=rs.getLong(1);
|
||||
//System.out.println("numero max de la db :"+rs.getLong(1));
|
||||
/*comme les nombres de la premiere col sont decroissants, le nb le plus grand est lu en premier,
|
||||
on va donc lire les nombres jusqua arriver a la plus haute valeur entree dans la table. On ne
|
||||
pourrait probablement pas utiliser cette methode pour remplir la table en entier*/
|
||||
while(anEntre>maxvaldb) {
|
||||
nbValAj++;//des quon rentre dans la boucle, on sait qu'on va devoir mettre a jour la table car cette valeur est>0
|
||||
for (i = 0; i < NBCOL; i++) {//on remplit la ligne en effectuant une lecture par col
|
||||
j = (i % NBCOL) + 1;
|
||||
if (j == 1) {
|
||||
line = line + '(';//debut de la ligne a jouter
|
||||
line = line + anEntre;
|
||||
line = line + ';';//on met un point virgule mais on le remplacera plus tard
|
||||
//sc.next();
|
||||
}
|
||||
if (j < NBCOL && j > 1) {//pour chaque colonne, on va faire en sorte de mettre le champ dans la onne mise en fore pour qu'il soit accepté par la db
|
||||
if (j == 2 || j == 11) {
|
||||
line = line + "'" + sc.next().replace(",", ".") + "',";
|
||||
} else if (j == 3 || j == 4) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
|
||||
date = sc.next().replace(",", ".");
|
||||
jour = date.substring(0, 2);
|
||||
mois = date.substring(3, 5);
|
||||
an = date.substring(6, 10);
|
||||
line = line + "'" + an + "-" + mois + "-" + jour + "',";
|
||||
} else {//pour les autres col, on va simplement les remplir
|
||||
line = line + sc.next().replace(",", ".");
|
||||
line = line + ';';
|
||||
}
|
||||
}
|
||||
if (j == NBCOL) {//pour la derniere col
|
||||
line = line + "'" + sc.next().replace(",", ".") + "'";
|
||||
line = line + ')';//on la remplit
|
||||
line = line.replaceAll("\\s", "");//on remplace les caracteres qui nous derangent
|
||||
line = line.replaceAll(";", ",");
|
||||
anEntre = Long.parseLong(sc.next());//on lit le prochain id de l'entree
|
||||
if (anEntre > maxvaldb) {//on defini si on doit encore ajouter des lignes a la requete
|
||||
line = line + ",";
|
||||
} else {//ou si on doit cloturer la requete
|
||||
line = line + ";";
|
||||
}
|
||||
//System.out.println(line);
|
||||
sql = sql + line + "\n";//on ajoute la ligne a la requete
|
||||
line = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(sql);
|
||||
if (nbValAj>0) {//on effectue la requete si on a des maj a faire
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
if (conn != null) {
|
||||
stmt = conn.createStatement();
|
||||
res=stmt.executeUpdate(sql);
|
||||
//stmt.executeQuery(sql);
|
||||
conn.commit();
|
||||
//conn.close();
|
||||
System.out.println("update validee");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("updateDataBase probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("updateDataBase probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* La methode de mise a jour de la base de donnees 2 qui evite les injections sql
|
||||
* @param filePath String, le chemin+nom du fichier+extension
|
||||
* @return rs, int, le resultat de la requete (nb de lignes affectees)
|
||||
* <p>mesL tableau dans lequel seront stockes tous les long</p>
|
||||
* <p>mesS tableau dans lequel seront stockes tous les String</p>
|
||||
* <p>mesD tableau dans lequel seront stockes tous les Double</p>
|
||||
* <p>sc Scanner, l objet qui servira a lire le fichier csv</p>
|
||||
* <p>line String, ligne contenant l'ajout a effectuer</p>
|
||||
* <p>i int, un compteur de valeurs lues,</p>
|
||||
* <p>j int, qui suit i%NBCOL</p>
|
||||
* <p>a int, un compteur de lignes modifiees</p>
|
||||
* <p>b int, un compteur de champs modifiees</p>
|
||||
* <p>nbValAj int qui augmente si on doit ajouter des lignes</p>
|
||||
* <p>date String, la valeur de la date lue</p>
|
||||
* <p>jour String, le jour lu</p>
|
||||
* <p>mois String, le mois lu</p>
|
||||
* <p>an String, l annee lue</p>
|
||||
* <p>anEntre long, valeur lue pour l annee et le numero de tirage. sert a definir si la valeur est a ajouter dans la table</p>
|
||||
* <p>ps PreparedStatement pour executer la requete sans injection sql</p>
|
||||
* <p>stmt Statement pour executer la requete de depart</p>
|
||||
*/
|
||||
public int updateTablev2(String filePath) {
|
||||
//Ligne maL=new Ligne();
|
||||
ResultSet rs=null;
|
||||
int res=-1;
|
||||
Statement stmt;
|
||||
long[][] mesL=new long[4000][NBCOL+1];
|
||||
String[][]mesS=new String[4000][NBCOL+1];
|
||||
Double[][]mesD=new Double[4000][NBCOL+1];
|
||||
Scanner sc;
|
||||
long anEntre;
|
||||
int i,j, nbValAj=0;
|
||||
String date, jour, mois, an;
|
||||
String line="";
|
||||
String sql="INSERT INTO myny.Test_Table" + //le debut de la requete, specifiant laction a effectuer, la table et la db
|
||||
" (annee_numero_de_tirage, "+
|
||||
" jour_de_tirage, "+
|
||||
" date_de_tirage,"+
|
||||
" date_de_forclusion,"+
|
||||
" boule_1 ,"+
|
||||
" boule_2 ,"+
|
||||
" boule_3 ,"+
|
||||
" boule_4 ,"+
|
||||
" boule_5 ,"+
|
||||
" numero_chance ,"+
|
||||
" combinaison_gagnante_en_ordre_croissant ,"+
|
||||
" nombre_de_gagnant_au_rang1 ,"+
|
||||
" rapport_du_rang1 ,"+
|
||||
" nombre_de_gagnant_au_rang2 ,"+
|
||||
" rapport_du_rang2 ,"+
|
||||
" nombre_de_gagnant_au_rang3 ,"+
|
||||
" rapport_du_rang3 ,"+
|
||||
" nombre_de_gagnant_au_rang4 ,"+
|
||||
" rapport_du_rang4 ,"+
|
||||
" nombre_de_gagnant_au_rang5 ,"+
|
||||
" rapport_du_rang5 ,"+
|
||||
" nombre_de_gagnant_au_rang6 ,"+
|
||||
" rapport_du_rang6 ,"+
|
||||
" numero_jokerplus ,"+
|
||||
" devise ) VALUES \n";
|
||||
try {
|
||||
conn = this.getConnection(); //initialisation de la connexion
|
||||
if(conn!=null) { //si la co est bonne
|
||||
sc = new Scanner(new File(filePath)); //lire le fichier donne
|
||||
sc.useDelimiter(";|\\n"); //les delimiteurs seront ; et \n
|
||||
sc.nextLine(); //on ne conserve pas la premiere ligne, contenant les metadonnees
|
||||
anEntre=Long.parseLong(sc.next()); //lecture de l id en haut du tableau(donc le plus grand, cest ce qu on a constate en lisant le csv
|
||||
stmt = conn.createStatement(); //recuperation du nb de lignes dans la table
|
||||
rs = stmt.executeQuery("SELECT MAX(annee_numero_de_tirage) FROM myny.Test_Table;");
|
||||
rs.next();
|
||||
long maxvaldb=rs.getLong(1);
|
||||
if (maxvaldb<0){
|
||||
maxvaldb=0;
|
||||
}
|
||||
/*comme les nombres de la premiere col sont decroissants, le nb le plus grand est lu en premier,
|
||||
on va donc lire les nombres jusqua arriver a la plus haute valeur entree dans la table. On ne
|
||||
pourrait probablement pas utiliser cette methode pour remplir la table en entier*/
|
||||
while(anEntre>maxvaldb&&sc.hasNext()) {
|
||||
nbValAj++;//des quon rentre dans la boucle, on sait qu'on va devoir mettre a jour la table car cette valeur est>0
|
||||
for (i = 0; i < NBCOL; i++) {//on remplit la ligne en effectuant une lecture par col
|
||||
j = (i % NBCOL) + 1;
|
||||
if (j == 1) {
|
||||
line = line + "(?,";//debut de la ligne a jouter
|
||||
mesL[nbValAj][j]=anEntre;
|
||||
}
|
||||
if (j < NBCOL && j > 1) {//pour chaque colonne, on va faire en sorte de mettre le champ dans la onne mise en fore pour qu'il soit accepté par la db
|
||||
line = line + "?,";
|
||||
if (j == 2 || j == 11) {
|
||||
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
|
||||
} else if (j == 3 || j == 4) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
|
||||
date = sc.next().replace(",", ".");
|
||||
jour = date.substring(0, 2);
|
||||
mois = date.substring(3, 5);
|
||||
an = date.substring(6, 10);
|
||||
mesS[nbValAj][j] = an + "-" + mois + "-" + jour ;
|
||||
}
|
||||
else if (j >= 13 && j <= 23 && j % 2 == 1) {//pour les col 3 et 4, il s'agit d'une date, on va donc passer dela forme jj-mm-aaaa a la forme aaaa-mm-jj
|
||||
mesD[nbValAj][j] = Double.parseDouble(sc.next().replace(",", "."));
|
||||
}
|
||||
else {//pour les autres col, on va simplement les remplir
|
||||
mesL[nbValAj][j] = Long.parseLong(sc.next().replaceAll("\\s", ""));
|
||||
}
|
||||
}
|
||||
else if (j == NBCOL) {//pour la derniere col
|
||||
line=line+"?)";
|
||||
mesS[nbValAj][j] = sc.next().replaceAll("\\s", "");
|
||||
anEntre = Long.parseLong(sc.next());//on lit le prochain id de l'entree
|
||||
if (anEntre > maxvaldb) {//on defini si on doit encore ajouter des lignes a la requete
|
||||
line = line + ",";
|
||||
} else {//ou si on doit cloturer la requete
|
||||
line = line + ";";
|
||||
}
|
||||
//System.out.println(line);
|
||||
sql = sql + line + "\n";//on ajoute la ligne a la requete
|
||||
line = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println(sql);
|
||||
if (nbValAj>0) {//si on a des modifications
|
||||
PreparedStatement ps;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
if (conn != null) {
|
||||
ps=conn.prepareStatement(sql);
|
||||
for(int a=1;a<=nbValAj;a++){//pour chaque case de chaque ligne ajoutée, on va ajouter la valeur
|
||||
for(int b=1;b<=NBCOL;b++){//dans la declaration preparee, pour eviter les injections sql
|
||||
if((b>1&&b<5)||b==11||b==25){
|
||||
System.out.println("a: "+a+" et b: "+b);
|
||||
ps.setString((a-1)*25+b, mesS[a][b]);
|
||||
}
|
||||
else if(b > 12 && b < 24 && b % 2 == 1){
|
||||
System.out.println("a: "+a+" et b: "+b);
|
||||
ps.setString((a-1)*25+b, mesD[a][b]+"");
|
||||
}
|
||||
else{
|
||||
System.out.println("a: "+a+" et b: "+b);
|
||||
ps.setString((a-1)*25+b, mesL[a][b]+"");
|
||||
}
|
||||
}
|
||||
}
|
||||
res=ps.executeUpdate();//puis on execute la requete
|
||||
//res=ps.executeQuery();//puis on execute la requete
|
||||
System.out.println("update validee");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("updateDataBasev2 probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("updateDataBasev2 probleme, verifier si le pb ne vient pas de executeupdate au lie de executequery");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* la methode de selection de la ligne ayant la valeur i dans annee_numero_de_tirage
|
||||
* @param i la valeur de reference
|
||||
* @return rs, ResultSet le resultat de la requete
|
||||
*/
|
||||
public ResultSet showLine(int i){
|
||||
ResultSet rs=null;
|
||||
String sql="select * from myny.Test_Table where annee_numero_de_tirage ="+i;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
if(conn!=null) {
|
||||
Statement ps = conn.createStatement();
|
||||
rs=ps.executeQuery(sql);
|
||||
conn.commit();
|
||||
//conn.close();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("removeLine probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
return rs;
|
||||
}
|
||||
|
||||
/**
|
||||
* la methode de suppression de la ligne ayant la valeur i dans annee_numero_de_tirage
|
||||
* @param i la valeur de reference
|
||||
* @return res, int le resultat de la requete(nb de lignes affectees)
|
||||
*/
|
||||
public int removeLine(int i){
|
||||
int res=-1;
|
||||
String sql="delete from myny.Test_Table where annee_numero_de_tirage ="+i;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
if(conn!=null) {
|
||||
Statement ps = conn.createStatement();
|
||||
res=ps.executeUpdate(sql);
|
||||
//res=ps.executeQuery(sql);
|
||||
conn.commit();
|
||||
//conn.close();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("removeLine probleme, voir si le pb ne vient pas d'execute query et executeupdate");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* la methode de supression des lignes strictement superieures a la valeur i dans annee_numero_de_tirage
|
||||
* @param i la valeur de reference
|
||||
* @return res, int le resultat de la requete (nb de lignes affectees)
|
||||
*/
|
||||
public int removeMultiplesLines(int i){
|
||||
int res=-1;
|
||||
String sql="delete from myny.Test_Table where annee_numero_de_tirage >"+i;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
if(conn!=null) {
|
||||
Statement ps = conn.createStatement();
|
||||
res=ps.executeUpdate(sql);
|
||||
//ps.executeQuery(sql);
|
||||
conn.commit();
|
||||
//conn.close();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("removeLines probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* La methode pour supprimer la table entiere
|
||||
* @return res int le resultat de la requete(nb de lignes affectees)
|
||||
*/
|
||||
public int dropTable(){
|
||||
String sql="drop table myny.Test_Table";
|
||||
int res=-1;
|
||||
try {
|
||||
conn = this.getConnection();
|
||||
if(conn!=null) {
|
||||
Statement ps = conn.createStatement();
|
||||
//rs=ps.executeQuery(sql);
|
||||
res=ps.executeUpdate(sql);
|
||||
conn.commit();
|
||||
//conn.close();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("dropTable probleme, voir si le pb ne vient pas d'execute query et executeupdate");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
474
src/main/java/fr/myny/stats/Statistics.java
Normal file
474
src/main/java/fr/myny/stats/Statistics.java
Normal file
|
|
@ -0,0 +1,474 @@
|
|||
package fr.myny.stats;
|
||||
|
||||
import fr.myny.database.DataBase;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
|
||||
/**
|
||||
* La classe Statistics qui sert a donner le nombre d'appartition de chaque chiffre/combinaison (et leurs ID si besoin)
|
||||
*/
|
||||
|
||||
|
||||
public class Statistics {
|
||||
public DataBase maDB;
|
||||
public Connection conn;
|
||||
public long numSelect[];
|
||||
public int bonusSelect;
|
||||
public long numId[][]; //liste des identifiants des lignes contenant un chiffre specifique
|
||||
public long numCpt[][]; //total d'apparitions de chaque chiffre
|
||||
public long bonusId[][]; //liste des identifiants des lignes contenant un chiffre bonus specifique
|
||||
public long bonusCpt[][]; //total d'apparitions de chaque bonus
|
||||
public long combi1Id[][]; //liste des identifiants des lignes cumulant 2 chiffres specifiques
|
||||
public long combi1Cpt[]; //total d'apparitions de chaque chiffre qui correspond egalement a un premier chiffre sur la meme ligne
|
||||
public long combi2Id[][]; //liste des identifiants des lignes cumulant 3 chiffres specifiques
|
||||
public long combi2Cpt[]; //total d'apparitions de chaque chiffre qui correspond egalement aux 2 premiers chiffres sur la meme ligne
|
||||
public long num1_bonusId[][]; //liste des identifiants des lignes cumulant 1 chiffre specifique et un numero bonus specifique
|
||||
public long num1_bonusCpt[]; //total d'apparitions de chaque bonus qui correspond egalement au premier chiffre sur la meme ligne
|
||||
public long num2_bonusId[][]; //liste des identifiants des lignes cumulant 2 chiffres specifiques et un numero bonus specifique
|
||||
public long num2_bonusCpt[]; //total d'apparitions de chaque bonus qui correspond egalement aux 2 premiers chiffres sur la meme ligne
|
||||
public long num3_bonusId[][]; //liste des identifiants des lignes cumulant 3 chiffres specifiques et un numero bonus specifique
|
||||
public long num3_bonusCpt[]; //total d'apparitions de chaque bonus qui correspond egalement aux 3 premiers chiffres sur la meme ligne
|
||||
public long taille;
|
||||
|
||||
/**
|
||||
* Constructeur, charge d'initialiser les differents champs
|
||||
* <p>Pour les tableaux, leurs tailles (de 4000) sont surevaluees pour pouvoir augmenter quandla table augmentera</p>
|
||||
* <p>Une solution optimale serait de fonctionner par exmple avec des TreeMap ou des ArrayLists a la place, pour eviter</p>
|
||||
* <p>d'utiliser trop de memoire inutilement</p>
|
||||
*/
|
||||
public Statistics(){
|
||||
maDB=new DataBase();
|
||||
conn= maDB.getConnection();
|
||||
numSelect =new long[5];
|
||||
numId =new long[50][4000];
|
||||
numCpt = new long[50][2];
|
||||
combi1Id =new long[50][4000];
|
||||
combi1Cpt = new long[50];
|
||||
num1_bonusId =new long[11][4000];
|
||||
num1_bonusCpt = new long[11];
|
||||
num2_bonusId =new long[11][4000];
|
||||
num2_bonusCpt = new long[11];
|
||||
num3_bonusId =new long[11][4000];
|
||||
num3_bonusCpt = new long[11];
|
||||
combi2Id=new long[50][4000];
|
||||
combi2Cpt=new long[50];
|
||||
bonusId =new long[11][4000];
|
||||
bonusCpt=new long[11][2];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sert a recuperer la taille de la table pour calculer la frequence d'apparition de la combinaison/du nombre considere
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void setTaille(){
|
||||
/*on effectue un requete "SELECT Count(*) From myny.Test_Table"
|
||||
puis on l'affecte a une variable de l'objet Statistics*/
|
||||
try {
|
||||
conn = maDB.getConnection();
|
||||
if (conn != null) {
|
||||
Statement ps = conn.createStatement();
|
||||
ResultSet rs=ps.executeQuery("SELECT Count(*) From myny.Test_Table");
|
||||
rs.next();
|
||||
long nbcolret= rs.getLong(1);
|
||||
conn.commit();
|
||||
System.out.println("statement cree");
|
||||
taille =nbcolret;
|
||||
System.out.println(taille);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("chiffre1 probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sert a recuperer le nombre d'apparitions de chaque numero ainsi que leurs id (annee_numero_de_tirage) de la table dans la db
|
||||
* <p>i, k, l (int) sont des compteurs</p>
|
||||
* <p>numprec(int) verifie si on change de chiffre ou non</p>
|
||||
* <p>rs (ResultSet) sert a avoir des retours sur les requetes realisees</p>
|
||||
* @throws SQLException si erreur SQL
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void afficherChiffre1() throws SQLException {
|
||||
System.out.println("debut afficherChiffre1");
|
||||
int k=0, numprec=0, l=0;
|
||||
ResultSet rs=null;
|
||||
String sql;
|
||||
for (int i=1; i<6;i++) {
|
||||
//pour chaque colonne contenant une boule (non bonus) de la table, on va recuperer le nombre d'apparitions de chaque boule et le stocker dans un tableau
|
||||
sql = "SELECT Test_Table.boule_" + i + ",Count(*) as 'cnt' FROM myny.Test_Table GROUP BY Test_Table.boule_" + i + "; ";
|
||||
try {
|
||||
if(conn==null) {
|
||||
conn = maDB.getConnection();
|
||||
}
|
||||
if (conn != null) {
|
||||
Statement ps = conn.createStatement();
|
||||
rs = ps.executeQuery(sql);
|
||||
conn.commit();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("chiffre1 probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
while (rs.next()) {
|
||||
if (i == 1) {
|
||||
numCpt[rs.getInt(1)][0] = rs.getInt(1);
|
||||
numCpt[rs.getInt(1)][1] = rs.getLong(2);
|
||||
} else {
|
||||
numCpt[rs.getInt(1)][1] += rs.getLong(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i=1; i<=5;i++) {
|
||||
//pour chaque colonne contenant une boule (non bonus) de la table, on va
|
||||
// recuperer les annee_numero_de_tirage correspondants et les stocker dans un tableau
|
||||
sql = "SELECT Test_Table.annee_numero_de_tirage, Test_Table.boule_" + i + " FROM myny.Test_Table ORDER BY Test_Table.boule_" + i + "; ";
|
||||
try {
|
||||
if(conn==null) {
|
||||
conn = maDB.getConnection();
|
||||
}
|
||||
if (conn != null) {
|
||||
Statement ps = conn.createStatement();
|
||||
rs = ps.executeQuery(sql);
|
||||
conn.commit();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("chiffre1 probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
//rs.next();
|
||||
while (rs.next()) {
|
||||
//System.out.println(numprec+", "+rs.getInt(2));
|
||||
if(numprec!=rs.getInt(2)) {k = 0;}
|
||||
while(numId[rs.getInt(2)][k]!=0){
|
||||
k++;
|
||||
}
|
||||
numId[rs.getInt(2)][k]=rs.getInt(1);
|
||||
//System.out.println(numId[rs.getInt(2)][k]);
|
||||
numprec=rs.getInt(2);
|
||||
}
|
||||
k=0;
|
||||
}
|
||||
for (int i=1; i<50;i++) {
|
||||
System.out.println(i+":"+numCpt[i][1]);
|
||||
while(numId[i][l]!=0){
|
||||
System.out.print(numId[i][l]+", ");
|
||||
l++;
|
||||
}
|
||||
System.out.println();
|
||||
l=0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* On va essayer de trouver les correspondances d'identifiants entre le chiffre entre en parametre et les chiffres dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier et les seconds chiffres potentiels
|
||||
* @param chiffre1 (int) le chiffre donne;
|
||||
* <p>i, j, k, l (int) sont des compteurs</p>
|
||||
* @throws SQLException si erreur SQL
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void afficherCombinaisons2(int chiffre1) throws SQLException {
|
||||
afficherChiffre1();
|
||||
System.out.println("debut afficherCombinaisons2");
|
||||
numSelect[1]=chiffre1;
|
||||
int j=0, k=0, l=0;
|
||||
while (numId[chiffre1][j] != 0) {
|
||||
for(int i=1;i<50;i++) {
|
||||
if (i != chiffre1) {
|
||||
while (numId[i][k] != 0) {
|
||||
if (numId[i][k] == numId[chiffre1][j]) {
|
||||
//System.out.println("[i:"+i+"][k:"+k+"][j:"+j+"]");
|
||||
//System.out.println(numId[i][k] +"=="+ numId[chiffre1][j]);
|
||||
//combi1Cpt[i]++;
|
||||
combi1Id[i][(int)combi1Cpt[i]++]=numId[i][k];
|
||||
//System.out.println("[cpt:"+cpt+"]");
|
||||
}
|
||||
k++;
|
||||
}
|
||||
k = 0;
|
||||
}
|
||||
}
|
||||
j++;
|
||||
}
|
||||
for (int i=1; i<50;i++) {
|
||||
/*for (int p=0; p<50;p++) {
|
||||
System.out.print(combi1Id[i][p]+", ");
|
||||
}*/
|
||||
System.out.println(i+": "+combi1Cpt[i]);
|
||||
while(combi1Id[i][l]!=0){
|
||||
System.out.print(combi1Id[i][l]+", ");
|
||||
l++;
|
||||
}
|
||||
System.out.println();
|
||||
l=0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* On va essayer de trouver les correspondances d'identifiants entre les 2 chiffres entres en parametre et les chiffres dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier, le second et les troisièmes chiffres potentiels
|
||||
* @param chiffre1, (int) le premier chiffre donne;
|
||||
* @param chiffre2, (int) le second chiffre donne;
|
||||
* <p>i, j, k (int) sont des compteurs</p>
|
||||
* @throws SQLException si erreur SQL
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void afficherCombinaisons3(int chiffre1, int chiffre2) throws SQLException {
|
||||
//afficherChiffre1();
|
||||
afficherCombinaisons2(chiffre1);
|
||||
System.out.println("debut afficherCombinaisons3");
|
||||
numSelect[2]=chiffre2;
|
||||
int j=0, k=0;
|
||||
while (combi1Id[chiffre2][j] != 0){
|
||||
for(int i=1;i<50;i++) {
|
||||
if (i != chiffre1 && i!=chiffre2) {
|
||||
while (numId[i][k] != 0) {
|
||||
if (numId[i][k] == combi1Id[chiffre2][j]) {
|
||||
combi2Id[i][(int)combi2Cpt[i]++]=numId[i][k];
|
||||
}
|
||||
k++;
|
||||
}
|
||||
k = 0;
|
||||
}
|
||||
}
|
||||
j++;
|
||||
}
|
||||
k = 0;
|
||||
for (int i=1; i<50;i++) {
|
||||
/*for (int p=0; p<50;p++) {
|
||||
System.out.print(combi1Id[i][p]+", ");
|
||||
}*/
|
||||
System.out.println(i+": "+combi2Cpt[i]);
|
||||
while(combi2Id[i][k]!=0){
|
||||
System.out.print(combi2Id[i][k]+", ");
|
||||
k++;
|
||||
}
|
||||
System.out.println();
|
||||
k=0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Sert a recuperer le nombre d'apparitions de chaque numero bonus ainsi que leurs id (annee_numero_de_tirage) de la table dans la db
|
||||
* <p>i, k, l (int) sont des compteurs</p>
|
||||
* <p>numprec(int) verifie si on change de chiffre ou non</p>
|
||||
* <p>rs (ResultSet) sert a avoir des retours sur les requetes realisees</p>
|
||||
* @throws SQLException si erreur SQL
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void afficherBonus() throws SQLException {
|
||||
System.out.println("debut afficherBonus");
|
||||
int k=0, numprec=0, l=0;
|
||||
ResultSet rs=null;
|
||||
String sql;
|
||||
sql = "SELECT Test_Table.numero_chance,Count(*) as 'cnt' FROM myny.Test_Table GROUP BY Test_Table.numero_chance; ";
|
||||
try {
|
||||
conn = maDB.getConnection();
|
||||
if (conn != null) {
|
||||
Statement ps = conn.createStatement();
|
||||
rs = ps.executeQuery(sql);
|
||||
conn.commit();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("chiffre1 probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
|
||||
//rs.next();
|
||||
while (rs.next()) {
|
||||
bonusCpt[rs.getInt(1)][0] = rs.getInt(1);
|
||||
bonusCpt[rs.getInt(1)][1] = rs.getLong(2);
|
||||
|
||||
}
|
||||
/*for (int i=0; i<11;i++) {
|
||||
System.out.println(i+" :"+ bonusCpt[i][1]);
|
||||
}*/
|
||||
sql = "SELECT Test_Table.annee_numero_de_tirage, Test_Table.numero_chance FROM myny.Test_Table ORDER BY Test_Table.numero_chance; ";
|
||||
try {
|
||||
conn = maDB.getConnection();
|
||||
if (conn != null) {
|
||||
Statement ps = conn.createStatement();
|
||||
rs = ps.executeQuery(sql);
|
||||
conn.commit();
|
||||
System.out.println("statement cree");
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
System.out.println("chiffre1 probleme");
|
||||
System.out.println(e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
//rs.next();
|
||||
while (rs.next()) {
|
||||
//System.out.println(numprec+", "+rs.getInt(2));
|
||||
if(numprec!=rs.getInt(2)) {k = 0;}
|
||||
while(bonusId[rs.getInt(2)][k]!=0){
|
||||
k++;
|
||||
}
|
||||
bonusId[rs.getInt(2)][k]=rs.getInt(1);
|
||||
//System.out.println(bonusId[rs.getInt(2)][k]);
|
||||
numprec=rs.getInt(2);
|
||||
}
|
||||
for (int i=1; i<11;i++) {
|
||||
System.out.println(i+":"+bonusCpt[i][1]);
|
||||
while(bonusId[i][l]!=0){
|
||||
System.out.print(bonusId[i][l]+", ");
|
||||
l++;
|
||||
}
|
||||
System.out.println();
|
||||
l=0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* On va essayer de trouver les correspondances d'identifiants entre le chiffre entre en parametre et les chiffres bonus potentiels dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier chiffre et les seconds chiffres bonus potentiels
|
||||
* @param chiffre1, (int) le chiffre donne;
|
||||
* <p>i, j, k, l (int) sont des compteurs</p>
|
||||
* @throws SQLException si erreur SQL
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void afficherNumBonus(int chiffre1) throws SQLException {
|
||||
afficherChiffre1();
|
||||
this.afficherBonus();
|
||||
System.out.println("debut afficherNumBonus");
|
||||
numSelect[1]=chiffre1;
|
||||
int j=0, k=0, l=0, cpt=0;
|
||||
for(int i=1;i<11;i++) {
|
||||
while (numId[chiffre1][j] != 0) {
|
||||
while (bonusId[i][k] != 0) {
|
||||
//System.out.println(bonusId[i][k] +"=="+ numId[chiffre1][j]);
|
||||
if (bonusId[i][k] == numId[chiffre1][j]) {
|
||||
num1_bonusCpt[i]++;
|
||||
num1_bonusId[i][cpt++]=bonusId[i][k];
|
||||
j++;
|
||||
k=0;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
k = 0;
|
||||
j++;
|
||||
}
|
||||
j = 0;
|
||||
cpt=0;
|
||||
}
|
||||
for (int i=1; i<11;i++) {
|
||||
/*for (int p=1; p<50;p++) {
|
||||
System.out.print(combi1Id[i][p]+", ");
|
||||
}*/
|
||||
System.out.println(i+": "+num1_bonusCpt[i]);
|
||||
while(num1_bonusId[i][l]!=0){
|
||||
System.out.print(num1_bonusId[i][l]+", ");
|
||||
l++;
|
||||
}
|
||||
System.out.println();
|
||||
l=0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* On va essayer de trouver les correspondances d'identifiants entre les 2 chiffres entres en parametre et les chiffres bonus potentiels dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier chifre, le second chiffre et les chiffres bonus potentiels
|
||||
* @param chiffre1, (int) le premier chiffre donne;
|
||||
* @param chiffre2, (int) le second chiffre donne;
|
||||
* <p>i, j, k, l, cpt (int) sont des compteurs</p>
|
||||
* @throws SQLException si erreur SQL
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void afficherNumBonusCombi2(int chiffre1, int chiffre2) throws SQLException {
|
||||
afficherCombinaisons2(chiffre1);
|
||||
afficherBonus();
|
||||
System.out.println("debut afficherNumBonusCombi2");
|
||||
numSelect[1]=chiffre1;
|
||||
numSelect[2]=chiffre2;
|
||||
int j=0, k=0, l=0, cpt=0;
|
||||
for(int i=1;i<11;i++) {
|
||||
while (combi1Id[chiffre2][j] != 0) {
|
||||
while (bonusId[i][k] != 0) {
|
||||
//System.out.println(bonusId[i][k] +"=="+ combi1Id[chiffre2][j]);
|
||||
if (bonusId[i][k] == combi1Id[chiffre2][j]) {
|
||||
num2_bonusCpt[i]++;
|
||||
num2_bonusId[i][cpt++]=bonusId[i][k];
|
||||
j++;
|
||||
k=0;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
k = 0;
|
||||
j++;
|
||||
}
|
||||
j = 0;
|
||||
cpt=0;
|
||||
}
|
||||
for (int i=0; i<11;i++) {
|
||||
/*for (int p=1; p<50;p++) {
|
||||
System.out.print(combi1Id[i][p]+", ");
|
||||
}*/
|
||||
System.out.println(i+": "+num2_bonusCpt[i]);
|
||||
while(num2_bonusId[i][l]!=0){
|
||||
System.out.print(num2_bonusId[i][l]+", ");
|
||||
l++;
|
||||
}
|
||||
System.out.println();
|
||||
l=0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* On va essayer de trouver les correspondances d'identifiants entre les 3 chiffres entres en parametre et les chiffres bonus potentiels dans les lignes de la tables, pour les stocker dans un tableau, et sur un second qui va compter les correspondances entre le premier chifre, le second chiffre, le troisieme chiffre et les chiffres bonus potentiels
|
||||
* @param chiffre1, (int) le premier chiffre donne;
|
||||
* @param chiffre2, (int) le second chiffre donne;
|
||||
* @param chiffre3, (int) le troisieme chiffre donne;
|
||||
* <p>i, j, k, l (int) sont des compteurs</p>
|
||||
* @throws SQLException si erreur SQL
|
||||
*/
|
||||
//TODO: enlever l'affichage
|
||||
public void afficherNumBonusCombi3(int chiffre1, int chiffre2, int chiffre3) throws SQLException {
|
||||
afficherCombinaisons3(chiffre1, chiffre2);
|
||||
afficherBonus();
|
||||
System.out.println("debut afficherNumBonusCombi3");
|
||||
numSelect[1]=chiffre1;
|
||||
numSelect[2]=chiffre2;
|
||||
numSelect[3]=chiffre3;
|
||||
int j=0, k=0, l=0;
|
||||
while (combi2Id[chiffre3][j] != 0) {
|
||||
for(int i=1;i<11;i++) {
|
||||
while (bonusId[i][k] != 0) {
|
||||
//System.out.println(combi2Id[chiffre3][j] +"=="+ bonusId[i][k]);
|
||||
if (bonusId[i][k] == combi2Id[chiffre3][j]) {
|
||||
//num3_bonusCpt[i]++;
|
||||
//num3_bonusId[i][cpt++]=bonusId[i][k];
|
||||
num3_bonusId[i][(int) num3_bonusCpt[i]++]=bonusId[i][k];
|
||||
j++;
|
||||
k=0;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
k = 0;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
for (int i=1; i<11;i++) {
|
||||
/*for (int p=0; p<50;p++) {
|
||||
System.out.print(num3_bonusId[i][p]+", ");
|
||||
}*/
|
||||
System.out.println(i+": "+num3_bonusCpt[i]);
|
||||
while(num3_bonusId[i][l]!=0){
|
||||
System.out.print(num3_bonusId[i][l]+", ");
|
||||
l++;
|
||||
}
|
||||
System.out.println();
|
||||
l=0;
|
||||
}
|
||||
}
|
||||
}
|
||||
100
src/test/java/fr/myny/database/DataBaseTest.java
Normal file
100
src/test/java/fr/myny/database/DataBaseTest.java
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
package fr.myny.database;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.sql.*;
|
||||
import java.io.*;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
class DataBaseTest {
|
||||
Connection maCo;
|
||||
public static final String FILEPATH="c:/Users/cocof/Bureau/nouveau_loto.csv";
|
||||
@Test
|
||||
void fillDataBase() throws SQLException {
|
||||
|
||||
DataBase maDB=new DataBase();
|
||||
maCo=maDB.getConnection();
|
||||
assertNotNull(maCo);
|
||||
int res= maDB.fillTable(FILEPATH);
|
||||
System.out.println(res);
|
||||
Statement stmt= maDB.conn.createStatement();
|
||||
ResultSet rs=stmt.executeQuery("SELECT Count(*) From myny.Test_Table");
|
||||
rs.next();
|
||||
long nbcolret= rs.getLong(1);
|
||||
//System.out.println("nb lignes (changer la ligne juste en dessous si on modifie le nb de lignes): "+rs.getInt("total"));
|
||||
System.out.println("nb lignes (changer la ligne juste en dessous si on modifie le nb de lignes): "+rs.getLong(1));
|
||||
assertEquals(1321,rs.getLong(1));
|
||||
}
|
||||
|
||||
@Test
|
||||
void importDataBase() {
|
||||
}
|
||||
|
||||
@Test
|
||||
void createTable() throws SQLException {
|
||||
DataBase maDB=new DataBase();
|
||||
maDB.createTable();
|
||||
Statement stmt= maDB.conn.createStatement();
|
||||
ResultSet rs=stmt.executeQuery("Select * From myny.Test_Table");
|
||||
ResultSetMetaData rsmd =rs.getMetaData();
|
||||
int nbCol=rsmd.getColumnCount();
|
||||
System.out.println("nb Col (changer la ligne juste en dessous si on modifie le nb de col): "+rsmd.getColumnCount());
|
||||
assertEquals(nbCol,25);
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateTable() {
|
||||
DataBase maDB=new DataBase();
|
||||
maCo=maDB.getConnection();
|
||||
int res = maDB.updateTable(FILEPATH);
|
||||
System.out.println(res);
|
||||
assertNotNull(maCo);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void updateTablev2() {
|
||||
DataBase maDB=new DataBase();
|
||||
maCo=maDB.getConnection();
|
||||
int res = maDB.updateTablev2(FILEPATH);
|
||||
System.out.println(res);
|
||||
assertNotNull(maCo);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void getConnection() {
|
||||
DataBase maDB=new DataBase();
|
||||
maCo=maDB.getConnection();
|
||||
assertNotNull(maCo);
|
||||
}
|
||||
@Test
|
||||
public void showLine() throws SQLException {
|
||||
DataBase maDB=new DataBase();
|
||||
ResultSet rs=maDB.showLine(2017001);
|
||||
rs.next();
|
||||
for (int i=1;i<26;i++) {
|
||||
System.out.print(rs.getObject(i)+", ");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void removeMultiplesLines(){
|
||||
DataBase maDB=new DataBase();
|
||||
int res= maDB.removeMultiplesLines(2017004);
|
||||
System.out.print(res);
|
||||
}
|
||||
@Test
|
||||
public void removeLine(){
|
||||
DataBase maDB=new DataBase();
|
||||
int res= maDB.removeLine(2017014);
|
||||
System.out.print(res);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dropTable(){
|
||||
DataBase maDB=new DataBase();
|
||||
maDB.dropTable();
|
||||
}
|
||||
}
|
||||
62
src/test/java/fr/myny/stats/StatisticsTest.java
Normal file
62
src/test/java/fr/myny/stats/StatisticsTest.java
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
package fr.myny.stats;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.sql.SQLException;
|
||||
|
||||
public class StatisticsTest {
|
||||
//c.setTaille();
|
||||
//c.afficherChiffre1();
|
||||
//c.afficherNumBonus();
|
||||
//c.afficherCombinaisons2(4);
|
||||
//c.afficherCombinaisons3(32,16);
|
||||
//c.afficherNumBonus(1);
|
||||
//c.afficherNumBonusCombi2(5,10);
|
||||
//c.afficherNumBonusCombi3(28,14,37);
|
||||
|
||||
@Test
|
||||
public void setTaille(){
|
||||
Statistics s =new Statistics();
|
||||
s.setTaille();
|
||||
}
|
||||
@Test
|
||||
public void afficherChiffre1() throws SQLException{
|
||||
Statistics s =new Statistics();
|
||||
s.afficherChiffre1();
|
||||
}
|
||||
@Test
|
||||
public void afficherCombinaisons2() throws SQLException{
|
||||
Statistics s =new Statistics();
|
||||
s.afficherCombinaisons2(4);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void afficherCombinaisons3() throws SQLException{
|
||||
Statistics s =new Statistics();
|
||||
s.afficherCombinaisons3(32,16);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void afficherBonus() throws SQLException{
|
||||
Statistics s =new Statistics();
|
||||
s.afficherBonus();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void afficherNumBonus() throws SQLException{
|
||||
Statistics s =new Statistics();
|
||||
s.afficherNumBonus(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void afficherNumBonusCombi2() throws SQLException{
|
||||
Statistics s =new Statistics();
|
||||
s.afficherNumBonusCombi2(5,10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void afficherNumBonusCombi3() throws SQLException{
|
||||
Statistics s =new Statistics();
|
||||
s.afficherNumBonusCombi3(28,14,37);
|
||||
}
|
||||
}
|
||||
Reference in a new issue