Commit b50da5f5e18388a7997c9484ae31601e66357d32

Authored by Remi
1 parent b08d24fc

update app

Showing 2 changed files with 235 additions and 269 deletions   Show diff stats
src/app/Menu.java
... ... @@ -19,7 +19,6 @@ import java.io.File;
19 19 import java.io.FileOutputStream;
20 20 import java.io.IOException;
21 21 import java.io.ObjectOutputStream;
22   -import java.util.ArrayList;
23 22 import java.util.Arrays;
24 23 import java.util.List;
25 24 import java.util.Objects;
... ... @@ -28,292 +27,259 @@ import java.util.regex.Matcher;
28 27 import java.util.regex.Pattern;
29 28 import java.util.stream.Collectors;
30 29  
31   -
32   -
33 30 public class Menu {
34   - public static void main(String[] args) throws IOException, CellNotFoundException, CreateCycleException, BadSyntaxException {
35   - File fichier = new File("grille.ser");
  31 +
  32 + public static void main(String[] args) throws IOException, CellNotFoundException {
  33 + File fichier = new File("grid.data");
36 34  
37 35 // ouverture d'un flux sur un fichier
38 36 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fichier));
39 37  
40 38 Grid grid = new Grid();
41 39  
42   - Scanner in=new Scanner(System.in);
43   -
44   -
45   - int choix=0;
46   - String column="";
47   - String formula="";
  40 + Scanner in = new Scanner(System.in);
  41 +
  42 + int choice;
  43 + String column;
48 44 int line;
49 45  
50 46 myLanguage();
51   - do {
52   - menu();
53   - System.out.print("VOTRE CHOIX? ");
54   - choix = in.nextInt();
55   - switch (choix) {
56   - case 1 :
57   - try {
58   - createCase(grid);
59   - } catch (CreateCycleException | CellNotFoundException | BadSyntaxException e) {
60   -
61   - e.getMessage();}
62   - break;
63   - case 2 :
64   - try {
65   - setCase(grid);
66   - } catch (CreateCycleException | CellNotFoundException | BadSyntaxException e) {
67   -
68   - e.getMessage();}
69   - break;
70   - case 3 :
71   - System.out.println("\n Entrez la colonne de la case");
72   - column= in.next();
73   - System.out.println("\n Entrez la ligne de la case");
74   - line= in.nextInt();
75   - System.out.println(grid.getCell(column, line).getId()+ ": " + grid.getCell(column, line).getDevelopedFormula());
76   - break;
77   - case 4 :
78   - System.out.println("\n Entrez la colonne de la case");
79   - column= in.next();
80   - System.out.println("\n Entrez la ligne de la case");
81   - line= in.nextInt();
82   - System.out.println(grid.getCell(column, line).getId()+ ": " + grid.getCell(column, line).toString());
83   -
84   - break;
85   - case 5 :
86   - System.out.println("\n Entrez la colonne de la case");
87   - column= in.next();
88   - System.out.println("\n Entrez la ligne de la case");
89   - line= in.nextInt();
90   - System.out.println(grid.getCell(column, line).getId()+ ": " + grid.getCell(column, line).getValue());
91   -
92   - break;
93   - case 6 :
94   -
95   - gridPrint(grid);
96   - break;
97   -
98   - case 0: // quitter
99   - }
100   - } while (choix!=0);
101   -
102   -
  47 + do {
  48 + menu();
  49 + System.out.print("VOTRE CHOIX? ");
  50 + choice = in.nextInt();
  51 + switch (choice) {
  52 + case 1:
  53 + try {
  54 + createCase(grid);
  55 + } catch (CreateCycleException | CellNotFoundException | BadSyntaxException e) {
  56 +
  57 + e.getMessage();
  58 + }
  59 + break;
  60 + case 2:
  61 + try {
  62 + setCase(grid);
  63 + } catch (CreateCycleException | CellNotFoundException | BadSyntaxException e) {
  64 +
  65 + e.getMessage();
  66 + }
  67 + break;
  68 + case 3:
  69 + System.out.println("\n Entrez la colonne de la case");
  70 + column = in.next();
  71 + System.out.println("\n Entrez la ligne de la case");
  72 + line = in.nextInt();
  73 + System.out.println(grid.getCell(column, line).getId() + ": " + grid.getCell(column, line).getDevelopedFormula());
  74 + break;
  75 + case 4:
  76 + System.out.println("\n Entrez la colonne de la case");
  77 + column = in.next();
  78 + System.out.println("\n Entrez la ligne de la case");
  79 + line = in.nextInt();
  80 + System.out.println(grid.getCell(column, line).getId() + ": " + grid.getCell(column, line).toString());
  81 + break;
  82 + case 5:
  83 + System.out.println("\n Entrez la colonne de la case");
  84 + column = in.next();
  85 + System.out.println("\n Entrez la ligne de la case");
  86 + line = in.nextInt();
  87 + System.out.println(grid.getCell(column, line).getId() + ": " + grid.getCell(column, line).getValue());
  88 + break;
  89 + case 6:
  90 + gridPrint(grid);
  91 + break;
  92 + case 0: // quitter
  93 + }
  94 + } while (choice != 0);
103 95  
104 96 oos.writeObject(grid);
105 97 oos.close();
106 98 System.out.println("\n Adiós");
107 99 }
108 100  
  101 + private static void menu() {
  102 + System.out.println("\n1: CREER UNE CASE \n2: MODIFIER UNE CASE\n3:AFFICHER FORMULE DEVELOPPEEE CASE\n4:AFFICHER FORMULE CASE\n5:AFFICHER VALEUR CASE\n6:AFFICHER GRILLE\n0: QUITTER");
  103 + }
109 104  
110   - static void menu() {
111   - System.out.println("\n1: CREER UNE CASE \n2: MODIFIER UNE CASE\n3:AFFICHER FORMULE DEVELOPPEEE CASE\n4:AFFICHER FORMULE CASE\n5:AFFICHER VALEUR CASE\n6:AFFICHER GRILLE\n0: QUITTER");
112   - }
113   -
114   - static void createCase(Grid grid) throws CreateCycleException, CellNotFoundException, BadSyntaxException {
115   -
116   - Scanner in=new Scanner(System.in);
117   -
118   - String column="";
119   - String formula="";
120   - int line;
121   - int choix=0;
122   - double value;
123   - do {
124   - System.out.println("\n1: Case avec valeur\n2: Case avec formule\n0: Quitter");
125   - System.out.print("votre choix? ");
126   - choix = in.nextInt();
127   - switch (choix) {
128   - case 1 :
129   - try {
130   - System.out.println("\n Entrez la colonne de la case");
131   - column= in.next();
132   - System.out.println("\n Entrez la ligne de la case");
133   - line= in.nextInt();
134   - System.out.println("\n Entrez la valeur de la case");
135   - value=in.nextDouble();
136   - grid.createCell(column, line, value);
137   -
138   - } catch (InvalidIntervalException exception) {
139   - System.out.println(exception.getMessage());}
140   - break;
141   - case 2 :
142   - try {
143   - System.out.println("\n Entrez la colonne de la case");
144   - column= in.next();
145   - System.out.println("\n Entrez la ligne de la case");
146   - line= in.nextInt();
147   - System.out.println("\n Entrez la formule (Ex: (A1+A2) ou SOMME(A1,A2)");
148   - formula=in.next();
149   - grid.createCell(column, line, generateFormulaWithString(formula, grid));
150   -
151   -
152   - } catch (InvalidIntervalException exception) {
153   - System.out.println(exception.getMessage());}
154   - break;
155   -
156   -
157   - case 0: // quitter
158   - }
159   - } while (choix!=0);
160   -
161   - }
162   -
163   -
164   - static void gridPrint(Grid grid) throws CreateCycleException, CellNotFoundException, BadSyntaxException {
165   -
166   - Scanner in=new Scanner(System.in);
167   -
168   - List<Cell> cells = grid.getCells();
169   - int choix=0;
170   - do {
171   - System.out.println("\n1: Afficher cases avec valeurs\n2: Afficher cases avec formules\n3: Afficher cases avec formules dévéloppées\n0: Quitter");
172   - System.out.print("votre choix? ");
173   - choix = in.nextInt();
174   - switch (choix) {
175   - case 1 :
176   -
177   -
178   - System.out.println("Affichage des valeurs :");
179   - for (Cell cell : cells)
180   - System.out.println(cell.getId() + ": " + cell.getValue());
181   - break;
182   -
183   - case 2 :
184   - System.out.println("Affichage des formules :");
185   - for (Cell cell : cells)
186   - System.out.println(cell.getId() + ": " + cell.toString());
187   -
188   - break;
189   -
190   - case 3 :
191   - System.out.println("Affichage des formules développées :");
192   - for (Cell cell : cells)
193   - System.out.println(cell.getId() + ": " + cell.getDevelopedFormula());
194   -
195   - break;
196   - case 0: // quitter
197   - }
198   - } while (choix!=0);
199   -
200   - }
201   -
202   -
203   -
204   - static void setCase(Grid grid) throws CreateCycleException, CellNotFoundException, BadSyntaxException {
205   -
206   - Scanner in=new Scanner(System.in);
207   -
208   - String column="";
209   - String formula="";
210   - int line;
211   - int choix=0;
212   - double value;
213   - do {
214   - System.out.println("\n1: Modifier case avec valeur\n2: Modifier case avec formule\n0: QUITTER");
215   - System.out.print("votre choix? ");
216   - choix = in.nextInt();
217   - switch (choix) {
218   - case 1 :
219   - System.out.println("\n Entrez la colonne de la case");
220   - column= in.next();
221   - System.out.println("\n Entrez la ligne de la case");
222   - line= in.nextInt();
223   - System.out.println("\n Entrez la valeur de la case");
224   - value=in.nextDouble();
225   - grid.setValue(column, line, value);
226   - break;
227   - case 2 :
228   - System.out.println("\n Entrez la colonne de la case");
229   - column= in.next();
230   - System.out.println("\n Entrez la ligne de la case");
231   - line= in.nextInt();
232   - System.out.println("\n Entrez la formule (Ex: (A1+A2) ou SOMME(A1,A2)");
233   - formula=in.next();
234   - grid.setFormula(column, line, generateFormulaWithString(formula, grid));
235   - break;
236   -
237   -
238   - case 0: // quitter
239   - }
240   - } while (choix!=0);
241   -
242   - }
243   -
244   - private static Formula generateFormulaWithString(String input,Grid grid) throws CellNotFoundException, BadSyntaxException {
245   - Pattern functionPattern = Pattern.compile("([A-Z]+)\\(([A-Z0-9,]+)\\)");
246   - Matcher functionMatcher = functionPattern.matcher(input);
  105 + private static void createCase(Grid grid) throws CreateCycleException, CellNotFoundException, BadSyntaxException {
  106 + Scanner in = new Scanner(System.in);
  107 +
  108 + String column;
  109 + String formula;
  110 + int line;
  111 + int choice;
  112 + double value;
  113 + do {
  114 + System.out.println("\n1: Case avec valeur\n2: Case avec formule\n0: Quitter");
  115 + System.out.print("votre choix? ");
  116 + choice = in.nextInt();
  117 + switch (choice) {
  118 + case 1:
  119 + try {
  120 + System.out.println("\n Entrez la colonne de la case");
  121 + column = in.next();
  122 + System.out.println("\n Entrez la ligne de la case");
  123 + line = in.nextInt();
  124 + System.out.println("\n Entrez la valeur de la case");
  125 + value = in.nextDouble();
  126 + grid.createCell(column, line, value);
  127 +
  128 + } catch (InvalidIntervalException exception) {
  129 + System.out.println(exception.getMessage());
  130 + }
  131 + break;
  132 + case 2:
  133 + try {
  134 + System.out.println("\n Entrez la colonne de la case");
  135 + column = in.next();
  136 + System.out.println("\n Entrez la ligne de la case");
  137 + line = in.nextInt();
  138 + System.out.println("\n Entrez la formule (Ex: (A1+A2) ou SOMME(A1,A2)");
  139 + formula = in.next();
  140 + grid.createCell(column, line, generateFormulaWithString(formula, grid));
  141 + } catch (InvalidIntervalException exception) {
  142 + System.out.println(exception.getMessage());
  143 + }
  144 + break;
  145 + case 0: // quitter
  146 + }
  147 + } while (choice != 0);
  148 +
  149 + }
  150 +
  151 + private static void gridPrint(Grid grid) {
  152 + Scanner in = new Scanner(System.in);
  153 +
  154 + List<Cell> cells = grid.getCells();
  155 + int choice;
  156 + do {
  157 + System.out.println("\n1: Afficher cases avec valeurs\n2: Afficher cases avec formules\n3: Afficher cases avec formules dévéloppées\n0: Quitter");
  158 + System.out.print("votre choix? ");
  159 + choice = in.nextInt();
  160 + switch (choice) {
  161 + case 1:
  162 + System.out.println("Affichage des valeurs :");
  163 + for (Cell cell : cells)
  164 + System.out.println(cell.getId() + ": " + cell.getValue());
  165 + break;
  166 + case 2:
  167 + System.out.println("Affichage des formules :");
  168 + for (Cell cell : cells)
  169 + System.out.println(cell.getId() + ": " + cell.toString());
  170 + break;
  171 + case 3:
  172 + System.out.println("Affichage des formules développées :");
  173 + for (Cell cell : cells)
  174 + System.out.println(cell.getId() + ": " + cell.getDevelopedFormula());
  175 + break;
  176 + case 0: // quitter
  177 + }
  178 + } while (choice != 0);
  179 + }
  180 +
  181 + private static void setCase(Grid grid) throws CreateCycleException, CellNotFoundException, BadSyntaxException {
  182 + Scanner in = new Scanner(System.in);
  183 +
  184 + String column;
  185 + String formula;
  186 + int line;
  187 + int choice;
  188 + double value;
  189 + do {
  190 + System.out.println("\n1: Modifier case avec valeur\n2: Modifier case avec formule\n0: QUITTER");
  191 + System.out.print("votre choix? ");
  192 + choice = in.nextInt();
  193 + switch (choice) {
  194 + case 1:
  195 + System.out.println("\n Entrez la colonne de la case");
  196 + column = in.next();
  197 + System.out.println("\n Entrez la ligne de la case");
  198 + line = in.nextInt();
  199 + System.out.println("\n Entrez la valeur de la case");
  200 + value = in.nextDouble();
  201 + grid.setValue(column, line, value);
  202 + break;
  203 + case 2:
  204 + System.out.println("\n Entrez la colonne de la case");
  205 + column = in.next();
  206 + System.out.println("\n Entrez la ligne de la case");
  207 + line = in.nextInt();
  208 + System.out.println("\n Entrez la formule (Ex: (A1+A2) ou SOMME(A1,A2)");
  209 + formula = in.next();
  210 + grid.setFormula(column, line, generateFormulaWithString(formula, grid));
  211 + break;
  212 + case 0: // quitter
  213 + }
  214 + } while (choice != 0);
  215 + }
  216 +
  217 + private static Formula generateFormulaWithString(String input, Grid grid) throws CellNotFoundException, BadSyntaxException {
  218 + Pattern functionPattern = Pattern.compile("([A-Z]+)\\(([A-Z0-9,]+)\\)");
  219 + Matcher functionMatcher = functionPattern.matcher(input);
  220 +
  221 + if (functionMatcher.matches()) {
  222 + List<Cell> cells = Arrays.stream(functionMatcher.group(2).split(","))
  223 + .map(c -> grid.getCell(c))
  224 + .collect(Collectors.toList());
  225 +
  226 + if (cells.contains(null))
  227 + throw new CellNotFoundException("Une des cellules demandées n'existe pas.");
247 228  
248   - if (functionMatcher.matches()) {
249   - List<Cell> cells = Arrays.stream(functionMatcher.group(2).split(","))
250   - .map(c -> grid.getCell(c))
251   - .collect(Collectors.toList());
252   -
253   - if (cells.contains(null))
254   - throw new CellNotFoundException();
255   -
256   - cells = cells.stream().filter(Objects::nonNull).collect(Collectors.toList());
257   -
258   - switch (functionMatcher.group(1)) {
259   - case "SUM":
260   - case "SOMME":
261   - return new Sum(cells);
262   - case "AVERAGE":
263   - case "MOYENNE":
264   - return new Average(cells);
265   - }
266   - } else {
267   - Pattern binaryOperationPattern = Pattern.compile("([A-Z]+[0-9]+)([+\\-*/])([A-Z]+[0-9]+)");
268   - Matcher binaryOperationMatcher = binaryOperationPattern.matcher(input);
269   -
270   - if (!binaryOperationMatcher.matches())
271   - throw new BadSyntaxException();
272   -
273   - Cell leftCell = grid.getCell(binaryOperationMatcher.group(1));
274   - Cell rightCell = grid.getCell(binaryOperationMatcher.group(3));
275   -
276   - if (leftCell == null || rightCell == null)
277   - throw new CellNotFoundException();
278   -
279   - switch (binaryOperationMatcher.group(2)) {
280   - case "+":
281   - return new Addition(leftCell, rightCell);
282   - case "-":
283   - return new Subtraction(leftCell, rightCell);
284   - case "*":
285   - return new Multiplication(leftCell, rightCell);
286   - case "/":
287   - return new Division(leftCell, rightCell);
288   - }
  229 + cells = cells.stream().filter(Objects::nonNull).collect(Collectors.toList());
  230 +
  231 + switch (functionMatcher.group(1)) {
  232 + case "SUM":
  233 + case "SOMME":
  234 + return new Sum(cells);
  235 + case "AVERAGE":
  236 + case "MOYENNE":
  237 + return new Average(cells);
289 238 }
  239 + } else {
  240 + Pattern binaryOperationPattern = Pattern.compile("([A-Z]+[0-9]+)([+\\-*/])([A-Z]+[0-9]+)");
  241 + Matcher binaryOperationMatcher = binaryOperationPattern.matcher(input);
  242 +
  243 + if (!binaryOperationMatcher.matches())
  244 + throw new BadSyntaxException();
  245 +
  246 + Cell leftCell = grid.getCell(binaryOperationMatcher.group(1));
  247 + Cell rightCell = grid.getCell(binaryOperationMatcher.group(3));
290 248  
291   - return null;
  249 + if (leftCell == null || rightCell == null)
  250 + throw new CellNotFoundException("Une des cellules demandées n'existe pas.");
  251 +
  252 + switch (binaryOperationMatcher.group(2)) {
  253 + case "+":
  254 + return new Addition(leftCell, rightCell);
  255 + case "-":
  256 + return new Subtraction(leftCell, rightCell);
  257 + case "*":
  258 + return new Multiplication(leftCell, rightCell);
  259 + case "/":
  260 + return new Division(leftCell, rightCell);
  261 + }
292 262 }
  263 +
  264 + return null;
  265 + }
293 266  
294   -
295   -static void myLanguage () {
296   -
297   - Scanner in=new Scanner(System.in);
298   -
299   - int choix=0;
300   - System.out.println("\n1: Francais/French\n2: Anglais/English");
301   - System.out.println("votre choix? ");
302   - choix = in.nextInt();
303   - switch (choix) {
304   - case 1 :
305   - Grid.language=LanguageEnum.FR;
306   -
307   - break;
308   - case 2 :
309   - Grid.language=LanguageEnum.EN;
310   - break;
311   -
312   - }
313   -}
314   -
315   -
  267 + private static void myLanguage() {
  268 + Scanner in = new Scanner(System.in);
  269 +
  270 + int choix = 0;
  271 +
  272 + System.out.println("\n1: Francais/French\n2: Anglais/English");
  273 + System.out.println("votre choix? ");
  274 + choix = in.nextInt();
  275 +
  276 + switch (choix) {
  277 + case 1:
  278 + Grid.language = LanguageEnum.FR;
  279 + break;
  280 + case 2:
  281 + Grid.language = LanguageEnum.EN;
  282 + break;
  283 + }
  284 + }
316 285 }
317   -
318   -
319   -
... ...
src/ihm/TablooProto.java
... ... @@ -232,7 +232,7 @@ public class TablooProto extends JPanel {
232 232 .collect(Collectors.toList());
233 233  
234 234 if (cells.contains(null))
235   - throw new CellNotFoundException();
  235 + throw new CellNotFoundException("Une des cellules demandées n'existe pas.");
236 236  
237 237 cells = cells.stream().filter(Objects::nonNull).collect(Collectors.toList());
238 238  
... ... @@ -255,7 +255,7 @@ public class TablooProto extends JPanel {
255 255 Cell rightCell = grid.getCell(binaryOperationMatcher.group(3));
256 256  
257 257 if (leftCell == null || rightCell == null)
258   - throw new CellNotFoundException();
  258 + throw new CellNotFoundException("Une des cellules demandées n'existe pas.");
259 259  
260 260 switch (binaryOperationMatcher.group(2)) {
261 261 case "+":
... ...