Guest User

Untitled

a guest
Jan 15th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.31 KB | None | 0 0
  1. package analyseAPosteriori;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.Color;
  5. import java.awt.GridLayout;
  6. import java.awt.event.ItemEvent;
  7. import java.awt.event.ItemListener;
  8. import java.awt.event.KeyAdapter;
  9. import java.awt.event.KeyEvent;
  10. import java.sql.Date;
  11. import java.util.Map;
  12. import java.util.Set;
  13.  
  14. import javax.swing.JComboBox;
  15. import javax.swing.JFrame;
  16. import javax.swing.JLabel;
  17. import javax.swing.JPanel;
  18. import javax.swing.JSplitPane;
  19. import javax.swing.JTextField;
  20.  
  21. import org.jfree.chart.ChartFactory;
  22. import org.jfree.chart.ChartPanel;
  23. import org.jfree.chart.JFreeChart;
  24. import org.jfree.chart.block.CenterArrangement;
  25. import org.jfree.chart.plot.PlotOrientation;
  26. import org.jfree.data.category.CategoryDataset;
  27. import org.jfree.data.category.DefaultCategoryDataset;
  28. import org.jfree.data.general.Dataset;
  29. import org.jfree.ui.HorizontalAlignment;
  30.  
  31. import simulation.Capteur;
  32. import simulation.GestionBDD;
  33. import simulation.Type;
  34. import simulation.Utils;
  35.  
  36. public class AnalyseAPosteriori {
  37.  
  38. private GestionBDD gestionBDD;
  39.  
  40. private JPanel panelPrincipal, panelDates;
  41. private JSplitPane panelGauche, panelDroite;
  42. private ChartPanel chartPanel;
  43. private JFreeChart chart;
  44.  
  45. String sCapt1 = "";
  46. String sCapt2 = "";
  47. String sCapt3 = "";
  48. String date1 = "";
  49. String date2 = "";
  50.  
  51. public AnalyseAPosteriori(GestionBDD gestionBDD) {
  52. this.gestionBDD = gestionBDD;
  53. gererPanelGauche();
  54. gererPanelDroite();
  55. panelPrincipal = new JPanel(new GridLayout(1, 2));
  56. panelPrincipal.add(panelGauche);
  57. panelPrincipal.add(panelDroite);
  58. }
  59.  
  60. private DefaultCategoryDataset createCategoryDataset(String nomC1, Map<String, Double> valeursAPosteriori1,
  61. String nomC2, Map<String, Double> valeursAPosteriori2, String nomC3, Map<String, Double> valeursAPosteriori3) {
  62. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  63. for (Map.Entry<String, Double> entry : valeursAPosteriori1.entrySet()) {
  64. dataset.setValue(entry.getValue(), nomC1 , entry.getKey());
  65. }
  66. for (Map.Entry<String, Double> entry : valeursAPosteriori2.entrySet()) {
  67. dataset.setValue(entry.getValue(), nomC2 , entry.getKey());
  68. }
  69. for (Map.Entry<String, Double> entry : valeursAPosteriori3.entrySet()) {
  70. dataset.setValue(entry.getValue(), nomC3 , entry.getKey());
  71. }
  72. return dataset;
  73. }
  74.  
  75. private JFreeChart createChart(DefaultCategoryDataset dataset) {
  76. JFreeChart chart = ChartFactory.createLineChart("Analyse a Posteriori" , "Date",
  77. "Valeur", dataset, PlotOrientation.VERTICAL, true, true, false);
  78. return chart;
  79. }
  80.  
  81. private JFreeChart createEmptyChart() {
  82. DefaultCategoryDataset dataset = new DefaultCategoryDataset();
  83. JFreeChart chart = ChartFactory.createLineChart("Analyse a Posteriori" , "Date",
  84. "Valeur", dataset, PlotOrientation.VERTICAL, true, true, false);
  85. return chart;
  86. }
  87.  
  88. public void gererPanelGauche() {
  89. panelDates = new JPanel(new GridLayout(1, 2));
  90. // JTextField tfdate1 = new JTextField("yyyy-mm-dd hh:mm:ss"); TODO
  91. // JTextField tfdate2 = new JTextField("yyyy-mm-dd hh:mm:ss");
  92. JTextField tfdate1 = new JTextField("2000-00-00 00:00:00");
  93. JTextField tfdate2 = new JTextField("3000-00-00 00:00:00");
  94. tfdate1.setHorizontalAlignment(JTextField.CENTER);
  95. tfdate2.setHorizontalAlignment(JTextField.CENTER);
  96.  
  97.  
  98. tfdate1.addKeyListener(new KeyAdapter() {
  99. @Override
  100. public void keyPressed(KeyEvent e) {
  101. if(e.getKeyCode() == KeyEvent.VK_ENTER){
  102. String text = tfdate1.getText();
  103. if(isFormat(text)) {
  104. date1 = text;
  105. generer();
  106. }
  107. }
  108. }
  109. });
  110.  
  111. tfdate2.addKeyListener(new KeyAdapter() {
  112. @Override
  113. public void keyPressed(KeyEvent e) {
  114. if(e.getKeyCode() == KeyEvent.VK_ENTER){
  115. String text = tfdate2.getText();
  116. if(isFormat(text)) {
  117. date2 = text;
  118. generer();
  119. }
  120. }
  121. }
  122. });
  123.  
  124. panelDates.add(tfdate1);
  125. panelDates.add(tfdate2);
  126.  
  127. chart = createEmptyChart();
  128. chartPanel = new ChartPanel(chart);
  129. panelGauche = new JSplitPane(JSplitPane.VERTICAL_SPLIT, chartPanel, panelDates);
  130. panelGauche.setResizeWeight(0.8);
  131.  
  132. panelGauche = new JSplitPane(JSplitPane.VERTICAL_SPLIT, chartPanel, panelDates);
  133. panelGauche.setResizeWeight(0.8);
  134. }
  135.  
  136. public void generer() {
  137. if (date1 != "" && date2 != "" && (sCapt1 != "" || sCapt2 != "" || sCapt3 != "")) {
  138. Map<String, Double> map1 = gestionBDD.getValeursAPosteriori(sCapt1, date1, date2);
  139. Map<String, Double> map2 = gestionBDD.getValeursAPosteriori(sCapt2, date1, date2);
  140. Map<String, Double> map3 = gestionBDD.getValeursAPosteriori(sCapt3, date1, date2);
  141.  
  142. DefaultCategoryDataset dataset = createCategoryDataset(sCapt1, map1, sCapt2, map2, sCapt3, map3);
  143. chart = createChart(dataset);
  144. chartPanel.setChart(chart);
  145. //chartPanel = new ChartPanel(chart);
  146.  
  147. System.out.println("test");
  148. // panelDates = new JPanel(new GridLayout(3,1));
  149. // panelGauche = new JSplitPane(JSplitPane.VERTICAL_SPLIT, chartPanel, panelDates);
  150. // panelGauche.setResizeWeight(0.8);
  151. // panelPrincipal = new JPanel(new GridLayout(1, 2));
  152. // panelPrincipal.add(panelGauche);
  153. // panelPrincipal.add(panelDates);
  154. }
  155. }
  156.  
  157.  
  158. public boolean isFormat(String input) {
  159. return input.matches("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})");
  160. }
  161.  
  162. public void gererPanelDroite(){
  163. Type[] t = {Type.EAU, Type.ELECTRICITE, Type.TEMPERATURE, Type.AIRCOMPRIME};
  164.  
  165. JComboBox<Type> cbType = new JComboBox<>(t);
  166. JPanel bas = new JPanel(new GridLayout(1,2));
  167.  
  168. JPanel basGauche = new JPanel();
  169. JPanel basDroite = new JPanel(new GridLayout(3,1));
  170. bas.add(basGauche);
  171. bas.add(basDroite);
  172.  
  173. JComboBox<String> cbC1 = new JComboBox<String>();// cbC1.setVisible(false);
  174. basDroite.add(cbC1);
  175. JComboBox<String> cbC2 = new JComboBox<String>();// cbC2.setVisible(false);
  176. basDroite.add(cbC2);
  177. JComboBox<String> cbC3 = new JComboBox<String>();// cbC3.setVisible(false);
  178. basDroite.add(cbC3);
  179.  
  180. cbType.addItemListener(new ItemListener(){ //TODO
  181.  
  182. @Override
  183. public void itemStateChanged(ItemEvent e) {
  184. if (e.getStateChange() == ItemEvent.SELECTED) {
  185. Type type = (Type) e.getItem();
  186. Set<String> nomCapteurs = gestionBDD.getNomCapteurs(type);
  187. cbC1.removeAllItems();
  188. cbC2.removeAllItems();
  189. cbC3.removeAllItems();
  190. for (String nomCapteur : nomCapteurs) {
  191. cbC1.addItem(nomCapteur);
  192. cbC2.addItem(nomCapteur);
  193. cbC3.addItem(nomCapteur);
  194. }
  195. }
  196. }
  197. });
  198.  
  199.  
  200. cbC1.addItemListener(new ItemListener(){
  201.  
  202. @Override
  203. public void itemStateChanged(ItemEvent e) {
  204. if (e.getStateChange() == ItemEvent.SELECTED) {
  205. sCapt1 = (String) e.getItem();
  206. generer();
  207. }
  208. }
  209. });
  210.  
  211. cbC2.addItemListener(new ItemListener(){
  212.  
  213. @Override
  214. public void itemStateChanged(ItemEvent e) {
  215. if (e.getStateChange() == ItemEvent.SELECTED) {
  216. sCapt2 = (String) e.getItem();
  217. generer();
  218. }
  219. }
  220. });
  221.  
  222. cbC3.addItemListener(new ItemListener(){
  223.  
  224. @Override
  225. public void itemStateChanged(ItemEvent e) {
  226. if (e.getStateChange() == ItemEvent.SELECTED) {
  227. sCapt3 = (String) e.getItem();
  228. generer();
  229. }
  230. }
  231. });
  232.  
  233. panelDroite = new JSplitPane(JSplitPane.VERTICAL_SPLIT, cbType, bas);
  234. panelDroite.setResizeWeight(0.2);
  235. }
  236.  
  237. public void update() {
  238.  
  239. }
  240.  
  241. public JPanel getPanel() {
  242. return panelPrincipal;
  243. }
  244.  
  245. public static void main(String[] args) throws InterruptedException {
  246. GestionBDD gestionBDD = new GestionBDD();
  247. // gestionBDD.ajouterCapteurABDD(new Capteur("c1", Type.TEMPERATURE, "1A", 0, ""));
  248. // gestionBDD.ajouterCapteurABDD(new Capteur("c2", Type.AIRCOMPRIME, "2A", 0, ""));
  249. // gestionBDD.ajouterCapteurABDD(new Capteur("c3", Type.EAU, "3A", 0, ""));
  250. // gestionBDD.ajouterCapteurABDD(new Capteur("c4", Type.ELECTRICITE, "1A", 2, ""));
  251. // gestionBDD.ajouterCapteurABDD(new Capteur("c5", Type.TEMPERATURE, "3A", 1, ""));
  252. // gestionBDD.ajouterCapteurABDD(new Capteur("c6", Type.EAU, "2A", 1, ""));
  253. // gestionBDD.ajouterCapteurABDD(new Capteur("c7", Type.ELECTRICITE, "2A", 0, ""));
  254. // gestionBDD.ajouterCapteurABDD(new Capteur("c8", Type.AIRCOMPRIME, "3A", 0, ""));
  255. // gestionBDD.ajouterCapteurABDD(new Capteur("c9", Type.EAU, "1A", 2, ""));
  256. // gestionBDD.ajouterCapteurABDD(new Capteur("c10", Type.TEMPERATURE, "3A", 1, ""));
  257. // gestionBDD.ajouterCapteurABDD(new Capteur("c11", Type.AIRCOMPRIME, "2A", 1, ""));
  258. //
  259. // Thread.sleep(1200);
  260. // gestionBDD.ajouterValeurABDD("c1", "1");
  261. // Thread.sleep(1200);
  262. // gestionBDD.ajouterValeurABDD("c1", "4");
  263. // Thread.sleep(1200);
  264. // gestionBDD.ajouterValeurABDD("c1", "7");
  265. // Thread.sleep(1200);
  266. // gestionBDD.ajouterValeurABDD("c2", "2");
  267. // Thread.sleep(1200);
  268. // gestionBDD.ajouterValeurABDD("c2", "5");
  269. // Thread.sleep(1200);
  270. // gestionBDD.ajouterValeurABDD("c2", "8");
  271. // Thread.sleep(1200);
  272. // gestionBDD.ajouterValeurABDD("c3", "3");
  273. // Thread.sleep(1200);
  274. // gestionBDD.ajouterValeurABDD("c3", "6");
  275. // Thread.sleep(1200);
  276. // gestionBDD.ajouterValeurABDD("c3", "9");
  277.  
  278. AnalyseAPosteriori analyseAPosteriori = new AnalyseAPosteriori(gestionBDD);
  279. JFrame frame = new JFrame();
  280. frame.add(analyseAPosteriori.getPanel());
  281. frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
  282. frame.setVisible(true);
  283. // 3000-00-00 00:00:00
  284. // 2000-00-00 00:00:00
  285. }
  286.  
  287. }
Add Comment
Please, Sign In to add comment