1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
| Scanner scanner = null;
DateFormat dateFormatdd = new SimpleDateFormat("dd"); //Date mise au format jj
DateFormat dateFormatmm = new SimpleDateFormat("MM"); //Date mise au format mm
DateFormat dateFormatyy = new SimpleDateFormat("yyyy"); //Date mise au format aaaa
String listeDepots = "ailes-soleil antares-soleil cassiopee-soleil cristal-soleil deimos-soleil desirs-soleil diffabs-soleil disco-soleil lucia-soleil mars-soleil metrologie-soleil microfocus-soleil ode-soleil pleiades-soleil proxima1-soleil samba-soleil sixs-soleil smis-soleil swing-soleil tempo-soleil";
String[] tabDepots = listeDepots.split(" "); //Séparation des différentes lignes dans un tableau
int nbLignes = tabDepots.length; //Nombre d'éléments du tableau
String filePath = ""; //Déclaration du chemin d'accès au fichier à lire
Date date=exploreDate(-1); //On recule d'un jour pour la génération car acinfo-quota n'est pas généré pour le jour actuel
String dd = dateFormatdd.format(date); //Obtention du jour
String mm = dateFormatmm.format(date); //Obtention du mois
String yyyy = dateFormatyy.format(date); //Obtention de l'année
filePath = "../logs/acinfo-quota/" + yyyy + "/" + mm + "/acinfo-quota." + yyyy +"-" + mm + "-" + dd; //Chemin d'accès du fichier de statistiques
try
{
scanner = new Scanner(new File(filePath));
}
catch (FileNotFoundException e) {
System.err.println("Chemin d'accès incorect!");
e.printStackTrace();
}
double tabVal[] = new double[nbLignes]; //Tableau stockant les valeurs nous interessant
String tabNom[] = new String[nbLignes]; //Tableau stockant les noms des partages associées aux valeurs
// On boucle sur chaque champ detecté
while (scanner.hasNextLine()){ //On lit le fichier ligne par ligne dans son intégralité
String line = scanner.nextLine(); //On passe à la ligne suivante
for(int i1=0; i1<nbLignes; i1++) //On parcourt tous les éléments du tableau
if(line.contains(tabDepots[i1])){ //Si la ligne actuelle contient le nom de la ligne que l'on veut
line = line.replace(" ", ""); //Supprime tous les espaces
line = line.replace("|", " "); //Remplace les | par des espaces
line = line.replace(",", "."); //Remplace les virgules par des points
String tabline[]=line.split(" "); //Sépare la ligne à chaque espace et stocke les éléments dans un tableau
tabVal[i1] = Double.parseDouble(tabline[3]); //Convertion de String vers un double et stockage dans le tableau
tabNom[i1] = tabline[1]; //Stockage dans un tableau
}//Fin if
}//Fin while
scanner.close(); //Fermeture du scanner de fichiers
int posX=50; //Position horizontale du camembert
int posY=50; //Position verticale du camembert
int sizeX=200; //Taille horizontale du camembert
int sizeY=200; //Taille horizontale du camembert
double[] bidon = new double[tabVal.length];
double[] pctbidon = new double[tabVal.length];
double[] degbidon = new double[tabVal.length];
for(int i=0;i<bidon.length;i++)
bidon[i]=tabVal[i];
int total=0; //Stocke le total des valeurs
for(int i=0;i<bidon.length;i++) //Calcule la somme de tous les éléments. Cette somme représente 100% des valeurs
total+=bidon[i];
for(int i=0;i<bidon.length;i++){
pctbidon[i]=(bidon[i]*100)/total; //Calcul du pourcentage que représentent chacun des éléments
degbidon[i]=(pctbidon[i]*360)/100; //Calcul des angles en degrés qui correspondent aux pourcentages des éléments
}
int xImage=600; //Largeur de l'image
int yImage=350; //Hauteur de l'image
BufferedImage image = new BufferedImage(xImage, yImage, BufferedImage.TYPE_INT_RGB); //Instanciation de l'image
Graphics2D g2d = image.createGraphics(); //Création du Graphics2D qui permet d'utiliser les fonctions déja faites
int angleadd = 0; //Stocke les angles cumulés pour recalculer le prochain segment du camembert
int anglebase = 0; //Angle de départ
for(int i=0;i<degbidon.length;i++){ //Tracage du texte indiquant le nom des partages
g2d.setColor(Color.WHITE);
g2d.drawString(tabNom[i]+": "+(float)pctbidon[i]+"% - "+(int)degbidon[i]+"°", 315, 45+(i*10)+3*i);
}
for(int i=0;i<degbidon.length;i++){ //Changement des couleurs en fonction de la ligne de lumière
if(tabNom[i].contains("ailes"))
g2d.setColor(new Color(0, 0, 255));
else if(tabNom[i].contains("antares"))
g2d.setColor(new Color(0, 255, 0));
else if(tabNom[i].contains("cassiopee"))
g2d.setColor(new Color(0, 255, 255));
else if(tabNom[i].contains("cristal"))
g2d.setColor(new Color(255, 0, 0));
else if(tabNom[i].contains("deimos"))
g2d.setColor(new Color(255, 0, 255));
else if(tabNom[i].contains("desirs"))
g2d.setColor(new Color(255, 255, 0));
else if(tabNom[i].contains("diffabs"))
g2d.setColor(new Color(0, 0, 127));
else if(tabNom[i].contains("disco"))
g2d.setColor(new Color(0, 127, 0));
else if(tabNom[i].contains("lucia"))
g2d.setColor(new Color(0, 127, 127));
else if(tabNom[i].contains("mars"))
g2d.setColor(new Color(127, 0, 0));
else if(tabNom[i].contains("metrologie"))
g2d.setColor(new Color(127, 0, 127));
else if(tabNom[i].contains("microfocus"))
g2d.setColor(new Color(127, 127, 0));
else if(tabNom[i].contains("ode"))
g2d.setColor(new Color(127, 127, 127));
else if(tabNom[i].contains("pleiades"))
g2d.setColor(new Color(0, 127, 255));
else if(tabNom[i].contains("proxima1"))
g2d.setColor(new Color(127, 0, 255));
else if(tabNom[i].contains("samba"))
g2d.setColor(new Color(0, 255, 127));
else if(tabNom[i].contains("sixs"))
g2d.setColor(new Color(127, 255, 0));
else if(tabNom[i].contains("smis"))
g2d.setColor(new Color(255, 0, 127));
else if(tabNom[i].contains("swing"))
g2d.setColor(new Color(255, 127, 0));
else if(tabNom[i].contains("tempo")) //A ne faire que lors du dernier partage
if((int)degbidon[i]!=0) //Si le partage ne vaut pas 0% on change la couleur
g2d.setColor(new Color(255, 255, 255));
if(i==0)
g2d.fillArc(posX, posY, sizeX, sizeY, anglebase, (int)degbidon[i]); //Trace le début du camembert
else if(i==degbidon.length-1){
g2d.fillArc(posX, posY, sizeX, sizeY, angleadd+anglebase, 360-(angleadd+anglebase)); //Trace la suite du camembert
}
else
g2d.fillArc(posX, posY, sizeX, sizeY, angleadd+anglebase, (int)degbidon[i]); //Trace la suite du camembert
if(i==degbidon.length-1){ //Si on est à la fin de la boucle
g2d.setColor(new Color(255, 255, 255));
g2d.fillRect(300, 35+(i*10)+3*i, 10, 10); //On Trace le rectangle de légende
}
else
g2d.fillRect(300, 35+(i*10)+3*i, 10, 10); //On trace le rectangle de légende
angleadd += (int)degbidon[i]; //Additionne les angles de chaque cadrant un par un |