commit ee8fe137d8cfcccc0b49254be9b0489f9ad7aa14 Author: beorc-gar Date: Fri Jan 25 21:58:17 2019 -0500 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a6fc6d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.txt +*.iml +out/ +.idea/ \ No newline at end of file diff --git a/src/pw/graansma/Main.java b/src/pw/graansma/Main.java new file mode 100644 index 0000000..21a25da --- /dev/null +++ b/src/pw/graansma/Main.java @@ -0,0 +1,127 @@ +package pw.graansma; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.List; + +public class Main { + private static final String RANKINGS_URL = "https://fantasybaseballnerd.com/service/draft-rankings"; + + private final List draft; + private final List team; + private final File teamFile; + + private Main(File f) { + teamFile = f; + draft = new ArrayList<>(); + team = new ArrayList<>(); + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + URLConnection conn = new URL(RANKINGS_URL).openConnection(); + conn.setRequestProperty("User-Agent", "Mozilla/5.0"); + Document doc = dBuilder.parse(conn.getInputStream()); + doc.getDocumentElement().normalize(); + NodeList players = doc.getElementsByTagName("Player"); + for (int i = 0; i < players.getLength(); i++) { + Node node = players.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE) { + draft.add(new Player((Element) node)); + } + } + try(BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f)))) { + String inputLine; + while((inputLine = br.readLine()) != null) { + team.add(getPlayer(inputLine.replace("\n", "").replace("\r", ""))); + } + } + } catch(Exception e) { + e.printStackTrace(); + } + } + + private void save() { + + try(PrintWriter out = new PrintWriter(new FileOutputStream(teamFile, false))) { + for(Player p : team) { + out.println(p.name); + } + out.flush(); + } catch(Exception e) { + e.printStackTrace(); + } + } + + private Player getPlayer(String name) { + for(Player p : draft) { + if(p.name.equalsIgnoreCase(name)) { + return p; + } + } + return null; + } + + private Player cut() { + int index = 0; + double benchMark = 0; + for(int i = 0; i < team.size(); i++) { + Player p = team.get(i); + double score = p.rank + p.draftPosition; + if(score > benchMark) { + benchMark = score; + index = i; + } + } + return team.remove(index); + } + + // cut 15 teamFile + // pick + public static void main(String... args) { + if(args.length < 2 || args.length > 3) { + System.err.println("Usage: java exe cut x teamFile" + + "\n or: java exe pick teamFile"); + } else { + Main m = new Main(new File(args[args.length -1])); + + switch(args[0]) { + case "cut": + int count = Integer.valueOf(args[1]); + while(m.team.size() > count) { + System.out.println(m.cut().name); + } + break; + case "pick": + //todo have a roster file I can't pick taken players + // only pick players in american league + // pick the best ranked player that I have an open position for + // positions: + /* + SP x 2 + RP x 2 + P x 2 (RP or SP) + IF x 4 (1B or 2B or SS or 3B) + OF x 4 (LF or CF or RF) + C x 1 + DH x 1 (any) + */ + break; + } + m.save(); + } + } +} diff --git a/src/pw/graansma/Player.java b/src/pw/graansma/Player.java new file mode 100644 index 0000000..8695c83 --- /dev/null +++ b/src/pw/graansma/Player.java @@ -0,0 +1,39 @@ +package pw.graansma; + +import org.w3c.dom.Element; + +public class Player { + public final int id; + public final String name; + public final int rank; + public final String position; + public final double draftPosition; + public final String league; + + public static final String AMERICAN_LEAGUE = "American"; + public static final String NATIONAL_LEAGUE = "National"; + + private String getString(Element element, String tag) { + return element.getElementsByTagName(tag).item(0).getTextContent(); + } + + public Player(Element element) { + id = Integer.valueOf(getString(element, "playerId")); + name = getString(element, "playerName"); + rank = Integer.valueOf(getString(element, "rank")); + position = getString(element, "position"); + draftPosition = Double.valueOf(getString(element, "adp")); + league = getString(element, "league"); + } + + @Override + public boolean equals(Object o) { + String name = null; + if(o instanceof String) { + name = (String)o; + } else if(o instanceof Player) { + name = ((Player) o).name; + } + return this.name != null && this.name.equalsIgnoreCase(name); + } +}