package org.wildstang.wildrank.desktop.modes; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JTextField; import org.json.JSONArray; import org.json.JSONObject; import org.wildstang.wildrank.desktop.TextFieldHintHandler; import org.wildstang.wildrank.desktop.utils.FileUtilities; import org.wildstang.wildrank.desktop.utils.Logger; public class ManualTeamEntering extends Mode implements ActionListener { private class TeamInfo { public String name; public String number; public TeamInfo(String number, String name) { this.number = number; this.name = name; } } JTextField teamNumber; JTextField teamName; JButton addTeam; JButton createList; private ArrayList<TeamInfo> teamsList = new ArrayList<TeamInfo>(); @Override protected void initializePanel() { teamNumber = new JTextField("Team number"); teamNumber.addFocusListener(new TextFieldHintHandler(teamNumber, "Team number")); teamName = new JTextField("Team name"); teamName.addFocusListener(new TextFieldHintHandler(teamName, "Team name")); addTeam = new JButton("Add team"); addTeam.addActionListener(this); createList = new JButton("Create list"); createList.addActionListener(this); c.gridx = 0; c.gridy = 0; panel.add(teamNumber, c); c.gridx = 1; panel.add(teamName, c); c.gridx = 2; panel.add(addTeam, c); c.gridx = 0; c.gridy = 1; c.gridwidth = 3; panel.add(createList, c); update.setMode("Team Adder"); } private void generateList() { // Load eisting teams list JSONObject rootObject = new JSONObject(); JSONArray teamsjson = new JSONArray(); try { File existing = new File(FileUtilities.getSyncedDirectory() + File.separator + "event" + File.separator + "pit.json"); if (existing.exists()) { BufferedReader br = new BufferedReader(new FileReader(existing)); StringBuilder builder = new StringBuilder(); String line = new String(); while ((line = br.readLine()) != null) { builder.append(line); } br.close(); rootObject = new JSONObject(builder.toString()); teamsjson = rootObject.getJSONArray("team"); } } catch (IOException e) { e.printStackTrace(); } List<String> tabletNames = new ArrayList<String>(); tabletNames.add(0, "red_1"); tabletNames.add(1, "red_2"); tabletNames.add(2, "red_3"); tabletNames.add(3, "blue_1"); tabletNames.add(4, "blue_2"); tabletNames.add(5, "blue_3"); int posCounter = 0; for (int i = 0; i < teamsList.size(); i++) { JSONObject team = new JSONObject(); team.put("number", ((TeamInfo) teamsList.get(i)).number); team.put("name", ((TeamInfo) teamsList.get(i)).name); team.put("pit_team_id", tabletNames.get(posCounter)); posCounter++; if (posCounter == 6) { posCounter = 0; } teamsjson.put(team); } rootObject.put("team", teamsjson); File file = new File(FileUtilities.getSyncedDirectory() + File.separator + "event" + File.separator + "pit.json"); File flash = new File(FileUtilities.getFlashDriveSyncedDirectory() + File.separator + "event" + File.separator + "pit.json"); Logger.getInstance().log("Local path: " + file.getAbsolutePath()); Logger.getInstance().log("Flash path: " + flash.getAbsolutePath()); file.getParentFile().mkdirs(); flash.getParentFile().mkdirs(); try { if (!file.exists()) { file.createNewFile(); } if (!flash.exists()) { flash.createNewFile(); } BufferedWriter bw = new BufferedWriter(new FileWriter(file)); BufferedWriter bwt = new BufferedWriter(new FileWriter(flash)); bw.write(rootObject.toString()); bwt.write(rootObject.toString()); bw.flush(); bw.close(); bwt.flush(); bwt.close(); } catch (IOException e) { e.printStackTrace(); } } @Override public void actionPerformed(ActionEvent source) { if (source.getSource() == addTeam) { TeamInfo team = new TeamInfo(teamNumber.getText().trim(), teamName.getText().trim()); teamsList.add(team); update.updateData("Team " + teamNumber.getText() + " Added", 0, 0); teamNumber.setText("Team number"); teamName.setText("Team name"); teamNumber.requestFocus(); } else if (source.getSource() == createList) { generateList(); } } }