Commit b50da5f5e18388a7997c9484ae31601e66357d32
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 "+": | ... | ... |