package applet.init; import applet.graph.DrawGraph; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import java.awt.Color; import java.awt.Container; import java.text.ParseException; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; import javax.swing.JApplet; public class AppletGraph extends JApplet { private static final long serialVersionUID = 8499358800188936023L; //Objets des packages pour la classe DrawGraph drawGraph = new DrawGraph(); public ChartPanel chartPanel; public JFreeChart jFreeChart; public Color col = Color.BLUE; //tableaux contenant la totalité des résultats demandé par l'utilisateur private String[] res; //sous la forme [0] -> date%valeur private String titreGraphe; private String parameterName; private String meanMode; private int[] indice; /** * Ici pas de méthode start, stop * L'utilisateur par le biais d'une page web formule des choix interprétés en requête SQL * De la requête on remplit un nombre "indice" chaine de caractères et d'autres infos pour construire le graph * * Dans init() on récupère ces chaines de caractère qu'on met dans un tableau "res" * Celui-ci sert en entrée d'une méthode de la classe DrawGraph, constantDataNumber ou constantRangeTime, qui permet de réduire la quantité d'information qui sera affichée sur le plot du graph * Le graph est construit avec JFreeChart et la méthode generateGraph de la classe DrawGraph */ public void init() { //enlève la sécurité sur l'applet par le client, permet nottament //de pouvoir lire/écrire des fichiers sur le poste client System.setSecurityManager(null); ArrayList arrayValDateX = new ArrayList(); ArrayList arrayValParamY = new ArrayList(); meanMode = getParameter("meanMode"); //'user' or 'auto' // Crée liste vide List temp = new ArrayList(); indice = new int[1]; indice[0] = Integer.parseInt(getParameter("indice")); // 1) Récupération de toutes les chaines de caratères créees par PHP // 2) Remplissage dans la foulée d'un array temporaire for (int i=0;i<=indice[0];i++) { res = getParameter("valeur"+i).split("@"); temp.addAll(Arrays.asList(res)); } // 3) Création d'un tableau contenant toutes les chaines de caractères. res = temp.toArray(new String[temp.size()]); // 4) Effacer l'array temp. temp = null; if (res!=null) { //si le tableau n'est pas vide titreGraphe = getParameter("parameter")+" with "+getParameter("sensor")+" (line"+getParameter("line")+" floor"+getParameter("floor")+")"; parameterName = getParameter("parameter"); if(meanMode.equals("point")) { //==> appel de la méthode drawGraph.constantDataNumber int nbrpts = Integer.parseInt(getParameter("numberOfPoint")); String date1 = getParameter("date1"); String date2 = getParameter("date2"); System.out.println("TitreGraph : "+titreGraphe); System.out.println("Nombre points demandés : "+nbrpts); try { drawGraph.constantDataNumber(res, nbrpts, date1, date2); } catch (ParseException e) { System.out.println("Parse exception ..."); System.out.println(e.getMessage()); e.printStackTrace(); } } else{//==> appel de la méthode drawGraph.constantRangeTime String date1 = getParameter("date1"); int rangeTime = Integer.parseInt(getParameter("time")); String scaleTag = getParameter("scale"); try { drawGraph.constantRangeTime(res, rangeTime, scaleTag, date1); } catch (ParseException e) { System.out.println("Parse exception ..."); System.out.println(e.getMessage()); e.printStackTrace(); } } arrayValDateX = drawGraph.getTimeListSimply(); arrayValParamY = drawGraph.getValueListSimply(); } else { // pas de données à la sortie des requêtes sql ==> remplissage par valeurs nulles titreGraphe = ""; arrayValDateX.add(new java.util.Date()); arrayValParamY.add(Double.parseDouble("0")); } jFreeChart = drawGraph.generateGraph(arrayValDateX, arrayValParamY, titreGraphe, parameterName); chartPanel = new ChartPanel(jFreeChart); Container content = getContentPane(); content.add(chartPanel); // libération de la mémoire res = null; } }