package es.csic.iiia.fabregues.dip.tester.client;
import java.util.List;
import es.csic.iiia.fabregues.dip.Observer;
import es.csic.iiia.fabregues.dip.Player;
import es.csic.iiia.fabregues.dip.board.Game;
import es.csic.iiia.fabregues.dip.comm.GameBuilder;
import es.csic.iiia.fabregues.dip.comm.Order2StringA;
import es.csic.iiia.fabregues.dip.orders.Order;
import es.csic.iiia.fabregues.utilities.Interface;
/**
* Tests an Observer.
*
* @author Angela Fabregues, IIIA-CSIC, fabregues@iiia.csic.es
*/
public class ObserverTester {
private Observer observer;
private final static String DEFAULT_SCO = "SCO ( AUS BUD VIE NAP TRI ) ( ENG EDI LON LVP ) ( FRA PAR BRE VEN ) ( GER MUN BER KIE MAR ) ( ITA ROM ) ( RUS MOS WAR SEV STP ) ( TUR ANK CON SMY ) ( UNO SER BEL DEN GRE HOL NWY POR RUM SWE TUN BUL SPA )";
private final static String DEFAULT_NOW = "NOW ( AUT 1911 ) ( AUS AMY BUD ) ( AUS AMY VIE ) ( AUS FLT ADR ) ( AUS FLT ALB ) ( ENG FLT SKA ) ( ENG AMY WAL ) ( ENG FLT LVP ) ( FRA FLT BAR ) ( FRA AMY PIC ) ( FRA AMY PIE ) ( GER AMY BUR ) ( GER AMY GAS ) ( GER AMY MAR ) ( GER FLT LVN MRT ( BAL ( STP SCS ) ) ) ( ITA AMY RUH ) ( RUS FLT GOB ) ( RUS FLT ARM ) ( RUS AMY LVN ) ( RUS AMY PRU ) ( TUR FLT ANK ) ( TUR AMY CON ) ( TUR AMY SMY )";
private final static String DEFAULT_POWER = "GER";
private String[] sco;
private String[] now;
private String power;
public ObserverTester(Observer player){
this.observer = player;
this.sco = DEFAULT_SCO.split(" ");
this.now = DEFAULT_NOW.split(" ");
this.power = DEFAULT_POWER;
}
public void setPower(String power){
this.power = power;
}
public void setSCO(String sco){
setSCO(sco.split(" "));
}
public void setSCO(String[] sco){
this.sco = sco;
}
public void setNOW(String now){
setNOW(now.split(" "));
}
public void setNOW(String[] now){
this.now = now;
}
public void run(){
Interface log = new Interface("observerTester");
log.printMessage(now);
log.printMessage(sco);
try{
if(observer instanceof Player){
Player player = ((Player)observer);
player.setMe(power);
Game game = GameBuilder.createGame(sco, now);
player.setGame(game);
List<Order> orders = player.play();
log.printMessage(power+" orders are:");
for(Order order: orders){
log.printMessage(Order2StringA.getOrderMsg(order));
}
}else{
observer.setGame(GameBuilder.createGame(sco, now));
}
}catch (Exception e) {
e.printStackTrace();
}
}
}