package com.poker.analyst;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
public final class TextTransfer implements ClipboardOwner {
final static String START_NEW_HAND = "Dealer: Starting a new hand";
final static String YOUR_CARDS = "Dealer: Your cards";
final static String PLAYER = "Dealer: Player";
final static String DEALER = "Dealer: ";
final static String DEALING = "Dealer: Dealing";
final static String DEALING_PREFLOP = "Dealer: Dealing cards";
final static String DEALING_FLOP = "Dealer: Dealing Flop";
final static String DEALING_TURN = "Dealer: Dealing Turn";
final static String DEALING_RIVER = "Dealer: Dealing River";
final static Integer POS_SMALL_BLIND = 1;
final static Integer POS_BIG_BLIND = 2;
final static Integer POS_MY_CARD = 6;
public void test(final String strClipboard) {
final String clipBoard = strClipboard;
final String[] arrClipBoard = clipBoard.split("\n");
System.out.println("Buffer Analyzer");
for (int i = arrClipBoard.length - 1; i > 0; i--) {
if (arrClipBoard[i].startsWith(START_NEW_HAND)) {
for (int j = arrClipBoard.length - 1; j > i; j--) {
if (arrClipBoard[j].startsWith(PLAYER)) {
//System.out.println("skip: " + arrClipBoard[j]);
continue;
}
if (arrClipBoard[j].equals(DEALER)) {
//System.out.println("skip: " + arrClipBoard[j]);
continue;
}
if (arrClipBoard[j].startsWith(DEALER)) {
System.out.println("action: " + arrClipBoard[j].substring(8));
continue;
}
//end current turn
if (arrClipBoard[j].startsWith(DEALING)) {
if (arrClipBoard[j].startsWith(DEALING_PREFLOP)) {
//System.out.println("turn is preflop");
continue;
}
System.out.println("turn is " + arrClipBoard[j].substring(8));
break;
}
}
break;
}
}
}
public static void main(final String... aArguments) {
final TextTransfer textTransfer = new TextTransfer();
final String clipBoard = textTransfer.getClipboardContents();
// System.out.println(clipBoard);
final String[] arrClipBoard = clipBoard.split("\n");
for (int i = arrClipBoard.length - 1; i > 0; i--) {
if (arrClipBoard[i].startsWith(START_NEW_HAND)) {
for (int j = arrClipBoard.length - 1; j > i; j--) {
if (arrClipBoard[j].startsWith(PLAYER)) {
//System.out.println("skip: " + arrClipBoard[j]);
continue;
}
if (arrClipBoard[j].equals(DEALER)) {
//System.out.println("skip: " + arrClipBoard[j]);
continue;
}
if (arrClipBoard[j].startsWith(DEALER)) {
System.out.println("action: " + arrClipBoard[j].substring(8));
continue;
}
//end current turn
if (arrClipBoard[j].startsWith(DEALING)) {
if (arrClipBoard[j].startsWith(DEALING_PREFLOP)) {
//System.out.println("turn is preflop");
continue;
}
System.out.println("turn is " + arrClipBoard[j].substring(8));
break;
}
}
break;
}
}
}
/**
* Empty implementation of the ClipboardOwner interface.
*/
public void lostOwnership(final Clipboard aClipboard, final Transferable aContents) {
// do nothing
}
/**
* Place a String on the clipboard, and make this class the owner of the Clipboard's contents.
*/
public void setClipboardContents(final String aString) {
final StringSelection stringSelection = new StringSelection(aString);
final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, this);
}
/**
* Get the String residing on the clipboard.
*
* @return any text found on the Clipboard; if none found, return an empty String.
*/
public String getClipboardContents() {
String result = "";
final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
// odd: the Object param of getContents is not currently used
final Transferable contents = clipboard.getContents(null);
final boolean hasTransferableText = contents != null
&& contents.isDataFlavorSupported(DataFlavor.stringFlavor);
if (hasTransferableText) {
try {
result = (String) contents.getTransferData(DataFlavor.stringFlavor);
} catch (final UnsupportedFlavorException ex) {
// highly unlikely since we are using a standard DataFlavor
System.out.println(ex);
ex.printStackTrace();
} catch (final IOException ex) {
System.out.println(ex);
ex.printStackTrace();
}
}
return result;
}
}