From 2aa4c45b397eda7b951b2ee70c819f9b51ed6707 Mon Sep 17 00:00:00 2001 From: Melissa Zhang Date: Thu, 3 Mar 2016 15:50:50 -0500 Subject: [PATCH 1/3] betfactory --- .classpath | 6 ++++++ src/roulette/BetFactory.java | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 .classpath create mode 100644 src/roulette/BetFactory.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..fb50116 --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/roulette/BetFactory.java b/src/roulette/BetFactory.java new file mode 100644 index 0000000..e215703 --- /dev/null +++ b/src/roulette/BetFactory.java @@ -0,0 +1,19 @@ +package roulette; + +import java.util.Arrays; +import java.util.List; + +public class BetFactory { + List betClassList = Arrays.asList(new OddEven(null, 0),new RedBlack(null, 0),new ThreeConsecutive(null, 0)); + public BetFactory(){ + + } + public Bet makeBetClass(String name){ + for (Bet b: betClassList){ + if (b.getClass().getName()==name){ + return b; + } + } + return null; + } +} From 62c1fe1468d30a0af8ab47e981f312ea590e7703 Mon Sep 17 00:00:00 2001 From: Melissa Zhang Date: Thu, 3 Mar 2016 16:01:34 -0500 Subject: [PATCH 2/3] reflection --- src/roulette/BetFactory.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/roulette/BetFactory.java b/src/roulette/BetFactory.java index e215703..7551aa7 100644 --- a/src/roulette/BetFactory.java +++ b/src/roulette/BetFactory.java @@ -9,10 +9,22 @@ public BetFactory(){ } public Bet makeBetClass(String name){ - for (Bet b: betClassList){ - if (b.getClass().getName()==name){ - return b; - } + Class c = null; + try { + c = Class.forName(name); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + try { + return (Bet) c.newInstance(); + } catch (InstantiationException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); } return null; } From 60e52aa01d76b5f19654d27f4f2401aae94290b7 Mon Sep 17 00:00:00 2001 From: Melissa Zhang Date: Thu, 3 Mar 2016 16:09:29 -0500 Subject: [PATCH 3/3] properties file --- src/betProperties.properties | 6 ++++++ src/roulette/BetFactory.java | 25 ++++++++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 src/betProperties.properties diff --git a/src/betProperties.properties b/src/betProperties.properties new file mode 100644 index 0000000..8a7c9c1 --- /dev/null +++ b/src/betProperties.properties @@ -0,0 +1,6 @@ +OddEvenOdds = 50 +OddEvenDescription = OddEven +RedBlackOdds = 50 +RedBlackDescription = RedBlack +ThreeConsecutiveOdds = 30 +ThreeConsecutiveDescription = ThreeConsecutive \ No newline at end of file diff --git a/src/roulette/BetFactory.java b/src/roulette/BetFactory.java index 7551aa7..0c90b97 100644 --- a/src/roulette/BetFactory.java +++ b/src/roulette/BetFactory.java @@ -1,10 +1,14 @@ package roulette; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; import java.util.Arrays; import java.util.List; +import java.util.ResourceBundle; public class BetFactory { List betClassList = Arrays.asList(new OddEven(null, 0),new RedBlack(null, 0),new ThreeConsecutive(null, 0)); + ResourceBundle betResources = ResourceBundle.getBundle("betProperties"); public BetFactory(){ } @@ -18,7 +22,26 @@ public Bet makeBetClass(String name){ } try { - return (Bet) c.newInstance(); + Constructor betConstructor = null; + try { + betConstructor = c.getConstructor(); + } catch (NoSuchMethodException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } catch (SecurityException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + try { + return (Bet) betConstructor.newInstance(betResources.getString(name+"Odds"), betResources.getString(name+"Description")); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InvocationTargetException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace();