From 2f296d5cf40b0c914857b4d00b5502bc9ea96002 Mon Sep 17 00:00:00 2001 From: oleg20111511 Date: Thu, 2 Jun 2022 16:32:01 +0300 Subject: [PATCH] Lin Spec task ready --- Copaci.in | 11 ++++++ LinSpec.txt | 1 + src/MenuActionGetHarvestPerType.java | 7 ++-- src/MenuActionLinSpec.java | 53 ++++++++++++++++++++++++++++ src/MenuBar.java | 5 ++- 5 files changed, 74 insertions(+), 3 deletions(-) create mode 100644 Copaci.in create mode 100644 LinSpec.txt create mode 100644 src/MenuActionLinSpec.java diff --git a/Copaci.in b/Copaci.in new file mode 100644 index 0000000..d97dc32 --- /dev/null +++ b/Copaci.in @@ -0,0 +1,11 @@ +10 4 +Яблоко Яблоко Яблоко Яблоко +Яблоко Груша Вишня Персик +Яблоко Абрикос Вишня Слива +Яблоко Айва Слива Слива +Яблоко Слива Слива Слива +Яблоко Слива Слива Слива +Яблоко Слива Слива Слива +Яблоко Слива Слива Слива +Яблоко Слива Слива Слива +Яблоко Слива Слива Слива \ No newline at end of file diff --git a/LinSpec.txt b/LinSpec.txt new file mode 100644 index 0000000..bb44f16 --- /dev/null +++ b/LinSpec.txt @@ -0,0 +1 @@ +Яблоко Яблоко Яблоко Яблоко diff --git a/src/MenuActionGetHarvestPerType.java b/src/MenuActionGetHarvestPerType.java index 9fb6c91..4be15b7 100644 --- a/src/MenuActionGetHarvestPerType.java +++ b/src/MenuActionGetHarvestPerType.java @@ -13,11 +13,14 @@ public class MenuActionGetHarvestPerType implements ActionListener { public void actionPerformed(ActionEvent e) { System.out.println("Get harvest per type"); + // Get sorted list of harvest per tree type List harvestData = tableModel.getTreeHarvestRating(); - StringBuilder result = new StringBuilder(); + // Create a string where each element is at a separate line + StringBuilder result = new StringBuilder(); for (Data entry : harvestData) { - result.append(String.format("%s - %.3f", entry.getTree(), entry.getHarvest())).append("\n"); + result.append(String.format("%s - %.3f", entry.getTree(), entry.getHarvest())); + result.append("\n"); } JOptionPane.showMessageDialog(null, result); diff --git a/src/MenuActionLinSpec.java b/src/MenuActionLinSpec.java new file mode 100644 index 0000000..809c97a --- /dev/null +++ b/src/MenuActionLinSpec.java @@ -0,0 +1,53 @@ +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedWriter; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +public class MenuActionLinSpec implements ActionListener { + public void actionPerformed(ActionEvent e) { + DataReader dataReader = new DataReader(); + String[][] treesGrid = dataReader.readTrees("Copaci.in"); + + int rowCount = treesGrid.length; + int colCount = treesGrid[0].length; + + // Go through each row of the grid + StringBuilder outputGrid = new StringBuilder(); + for (int row = 0; row < rowCount; row++) { + // Get first tree in the row. It will be compared to other elements to define if row is homogenous + String treeName = treesGrid[row][0]; + boolean isHomogenous = true; + + StringBuilder outputRow = new StringBuilder(); + for (int col = 0; col < colCount; col++) { + // Stop execution if a tree of different type was discovered + if (!treesGrid[row][col].equals(treeName)) { + isHomogenous = false; + break; + } + + // Add tree to output row + outputRow.append(treesGrid[row][col]); + outputRow.append(" "); + } + + if (isHomogenous) { + outputGrid.append(outputRow); + outputGrid.append("\n"); + } + } + + try { + BufferedWriter writer = new BufferedWriter(new FileWriter("LinSpec.txt")); + writer.write(outputGrid.toString()); + writer.close(); + } catch (IOException ex) { + throw new RuntimeException(ex); + } + + JOptionPane.showMessageDialog(null, "Копирование успешно"); + } +} diff --git a/src/MenuBar.java b/src/MenuBar.java index e40cdfd..090e16c 100644 --- a/src/MenuBar.java +++ b/src/MenuBar.java @@ -62,7 +62,10 @@ public class MenuBar extends JMenuBar { harvestPerTypeItem.addActionListener(new MenuActionGetHarvestPerType(tableModel)); menu.add(harvestPerTypeItem); - menu.add(createMockMenuItem("Lin Spec")); + JMenuItem linSpecItem = new JMenuItem("Lin Spec"); + linSpecItem.addActionListener(new MenuActionLinSpec()); + menu.add(linSpecItem); + menu.add(createMockMenuItem("Сектор К деревьев")); this.add(menu); }