import java.util.Vector;
/**
* GameInformation クラスは対局情報を保持します。
*/
public class GameInformation{
private String blackPlayer;
private String whitePlayer;
private String blackRank;
private String whiteRank;
private String event;
private String gameName;
private String date;
private String timeLimit;
private String komi;
private String rule;
private String result;
private String place;
private String gameComment;
private String size;
/**
* 空のインスタンスを生成します。
*/
public GameInformation(){
blackPlayer="";
whitePlayer="";
blackRank="";
whiteRank="";
event="";
gameName="";
date="";
timeLimit="";
komi="";
rule="";
result="";
place="";
gameComment="";
size="";
}
/**
* 対局情報を編集するときに呼び出します。SGF形式のデータツリーから、対局情報のみ抽出して保持します。
* @param vector SGF形式データ
*/
public void editGameInformation(Vector vector){
String gameInfo="";
for(int i=0;i<vector.size();i++){
if(vector.get(i) instanceof String){
String str=(String)vector.get(i);
if(str.startsWith("B[")==false && str.startsWith("W[")==false){
gameInfo=str;
break;
}
}
}
editPlayer(gameInfo);
editEvent(gameInfo);
editGameName(gameInfo);
editDate(gameInfo);
editTimeLimit(gameInfo);
editKomi(gameInfo);
editRule(gameInfo);
editResult(gameInfo);
editPlace(gameInfo);
editGameComment(gameInfo);
editSize(gameInfo);
}
/**
* 対局情報を取得します。
* @return 対局情報をSGF形式に変換したString
*/
public String getSgfGameInformation(){
String sgfGameInformation=new String(editSgfBlackPlayer(blackPlayer) +
editSgfWhitePlayer(whitePlayer) +
editSgfBlackRank(blackRank) +
editSgfWhiteRank(whiteRank) +
editSgfEvent(event) +
editSgfGameName(gameName) +
editSgfDate(date) +
editSgfTimeLimit(timeLimit) +
editSgfKomi(komi) +
editSgfRule(rule) +
editSgfResult(result) +
editSgfPlace(place) +
editSgfGameComment(gameComment) +
editSgfSize(size));
return sgfGameInformation;
}
/**
* 黒番の対局者名を設定します。
* @param str 黒番の対局者名を表すString
*/
public void setBlackPlayer(String str){
blackPlayer=str;
}
/**
* 黒番の対局者名を取得します。
* @return 黒番の対局者名を表すString
*/
public String getBlackPlayer(){
return blackPlayer;
}
/**
* 白番の対局者名を設定します。
* @param str 白番の対局者名を表すString
*/
public void setWhitePlayer(String str){
whitePlayer=str;
}
/**
* 白番の対局者名を取得します。
* @return 白番の対局者名を表すString
*/
public String getWhitePlayer(){
return whitePlayer;
}
/**
* 黒番の段位を設定します。
* @param str 黒番の段位を表すString
*/
public void setBlackRank(String str){
blackRank=str;
}
/**
* 黒番の段位を取得する。
* @return 黒番の段位を表すString
*/
public String getBlackRank(){
return blackRank;
}
/**
* 白番の段位を設定します。
* @param str 白番の段位を表すString
*/
public void setWhiteRank(String str){
whiteRank=str;
}
/**
* 白番の段位を取得します。
* @return 白番の段位を表すString
*/
public String getWhiteRank(){
return whiteRank;
}
/**
* 大会名を設定します。
* @param str 大会名を表すString
*/
public void setEvent(String str){
event=str;
}
/**
* 大会名を取得します。
* @return 大会名を表すString
*/
public String getEvent(){
return event;
}
/**
* 対局名を設定します。
* @param str 対局名を表すString
*/
public void setGameName(String str){
gameName=str;
}
/**
* 対局名を取得します。
* @return 対局名を表すString
*/
public String getGameName(){
return gameName;
}
/**
* 対局日を設定します。
* @param str 対局日を表すString
*/
public void setDate(String str){
date=str;
}
/**
* 対局日を取得します。
* @return 対局日を表すString
*/
public String getDate(){
return date;
}
/**
* 持ち時間を設定します。
* @param str 持ち時間を表すString
*/
public void setTimeLimit(String str){
timeLimit=str;
}
/**
* 持ち時間を取得します。
* @return 持ち時間を表すString
*/
public String getTimeLimit(){
return timeLimit;
}
/**
* コミを設定します。
* @param str コミを表すString
*/
public void setKomi(String str){
komi=str;
}
/**
* コミを取得します。
* @return コミを表すString
*/
public String getKomi(){
return komi;
}
/**
* ルールを設定します。
* @param str ルールを表すString
*/
public void setRule(String str){
rule=str;
}
/**
* ルールを取得します。
* @return ルールを表すString
*/
public String getRule(){
return rule;
}
/**
* 結果を設定します。
* @param str 結果を表すString
*/
public void setResult(String str){
result=str;
}
/**
* 結果を取得します。
* @return 結果を表すString
*/
public String getResult(){
return result;
}
/**
* 対局場所を設定します。
* @param str 対局場所を表すString
*/
public void setPlace(String str){
place=str;
}
/**
* 対局場所を取得します。
* @return 対局場所を表すString
*/
public String getPlace(){
return place;
}
/**
* 対局コメントを設定します。
* @param str 対局コメントを表すString
*/
public void setGameComment(String str){
gameComment=str;
}
/**
* 対局コメントを取得します。
* @return 対局コメントを表すString
*/
public String getGameComment(){
return gameComment;
}
/**
* 路数を設定します。
* @param str 路数を表すString
*/
public void setSize(String str){
size=str;
}
/**
* 路数を取得します。
* @return 路数を表すString
*/
public String getSize(){
return size;
}
//------------------------------------------------------------------------
private void editPlayer(String str){
int startIx=str.indexOf("PB[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
blackPlayer=str.substring(startIx+3,endIx);
}
}
startIx=str.indexOf("PW[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
whitePlayer=str.substring(startIx+3,endIx);
}
}
startIx=str.indexOf("BR[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
blackRank=str.substring(startIx+3,endIx);
}
}
startIx=str.indexOf("WR[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
whiteRank=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editEvent(String str){
int startIx=str.indexOf("EV[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
event=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editGameName(String str){
int startIx=str.indexOf("GN[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
gameName=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editDate(String str){
int startIx=str.indexOf("DT[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
date=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editTimeLimit(String str){
int startIx=str.indexOf("TM[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
timeLimit=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editKomi(String str){
int startIx=str.indexOf("KM[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
komi=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editRule(String str){
int startIx=str.indexOf("RU[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
rule=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editResult(String str){
int startIx=str.indexOf("RE[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
result=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editPlace(String str){
int startIx=str.indexOf("PC[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
place=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editGameComment(String str){
int startIx=str.indexOf("GC[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
gameComment=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private void editSize(String str){
int startIx=str.indexOf("SZ[");
if(startIx!=-1){
int endIx=str.indexOf("]",startIx);
if(endIx!=-1){
size=str.substring(startIx+3,endIx);
}
}
}
//------------------------------------------------------------------------
private String editSgfBlackPlayer(String str){
return new String("PB[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfWhitePlayer(String str){
return new String("PW[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfBlackRank(String str){
return new String("BR[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfWhiteRank(String str){
return new String("WR[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfEvent(String str){
return new String("EV[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfGameName(String str){
return new String("GN[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfDate(String str){
return new String("DT[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfTimeLimit(String str){
return new String("TM[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfKomi(String str){
return new String("KM[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfRule(String str){
return new String("RU[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfResult(String str){
return new String("RE[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfPlace(String str){
return new String("PC[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfGameComment(String str){
return new String("GC[" + str + "]");
}
//------------------------------------------------------------------------
private String editSgfSize(String str){
return new String("SZ[" + str + "]");
}
}