import java.util.StringTokenizer;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileReader;
import java.io.BufferedReader;
import util.file.InvalidFileFormatException;
import misc.Separators;
class Config {
static private String meta_startZone = "ZonaInicial";
static private String meta_startRoom = "SalaInicial";
static private String meta_worldDir = "DiretorioDeMundo";
static private String meta_worldFileName = "ArquivoDeMundo";
//static private String meta_serialFileName = "ArquivoDeSerie";
static private String meta_helpFileName = "ArquivoDeAjuda";
static private String meta_stateFileName = "ArquivoDeEstado";
static private String meta_userFilesDir = "DiretorioDeUsuarios";
static private String meta_itemFilesDir = "DiretorioDePosses";
static private String meta_boardFilesDir = "DiretorioDeQuadros";
static private String meta_maxSpam = "MaximoDeAbuso";
static private String meta_motdFileName = "ArquivoDeMensagemDoDia";
private String startZone = null;
private String startRoom = null;
private String worldDir = null;
private String worldFileName = null;
//private String serialFileName = null;
private String helpFileName = null;
private String stateFileName = null;
private String userFilesDir = null;
private String itemFilesDir = null;
private String boardFilesDir = null;
private String maxSpam = null;
private String motdFileName = null;
private String checkNewMeta(String oldInfo, String newInfo)
throws InvalidFileFormatException {
if (oldInfo != null)
throw new InvalidFileFormatException();
return newInfo;
}
private void checkNullInfo(String info)
throws InvalidFileFormatException {
if (info == null)
throw new InvalidFileFormatException();
}
Config(String configFileName)
throws FileNotFoundException, IOException, InvalidFileFormatException {
BufferedReader configFile = new BufferedReader(new FileReader(configFileName));
for (; ; ) {
if (!configFile.ready())
throw new InvalidFileFormatException();
String buf = configFile.readLine().trim();
if (buf.length() == 0)
continue;
StringTokenizer toker = new StringTokenizer(buf);
if (!toker.hasMoreTokens())
continue;
String meta = toker.nextToken();
if (meta.startsWith(Separators.REM))
continue;
if (meta.startsWith(Separators.EOF))
break;
if (!toker.hasMoreTokens())
throw new InvalidFileFormatException();
String info = toker.nextToken();
if (meta.equals(meta_startZone))
startZone = checkNewMeta(startZone, info);
else if (meta.equals(meta_startRoom))
startRoom = checkNewMeta(startRoom, info);
else if (meta.equals(meta_worldDir))
worldDir = checkNewMeta(worldDir, info);
/* else if (meta.equals(meta_serialFileName))
serialFileName = checkNewMeta(serialFileName, info); */
else if (meta.equals(meta_worldFileName))
worldFileName = checkNewMeta(worldFileName, info);
/*else if (meta.equals(meta_serialFileName))
serialFileName = checkNewMeta(serialFileName, info); */
else if (meta.equals(meta_helpFileName))
helpFileName = checkNewMeta(helpFileName, info);
else if (meta.equals(meta_stateFileName))
stateFileName = checkNewMeta(stateFileName, info);
else if (meta.equals(meta_userFilesDir))
userFilesDir = checkNewMeta(userFilesDir, info);
else if (meta.equals(meta_itemFilesDir))
itemFilesDir = checkNewMeta(itemFilesDir, info);
else if (meta.equals(meta_boardFilesDir))
boardFilesDir = checkNewMeta(boardFilesDir, info);
else if (meta.equals(meta_maxSpam))
maxSpam = checkNewMeta(maxSpam, info);
else if (meta.equals(meta_motdFileName))
motdFileName = checkNewMeta(motdFileName, info);
else
throw new InvalidFileFormatException();
}
configFile.close();
checkNullInfo(startZone);
checkNullInfo(startRoom);
checkNullInfo(worldDir);
checkNullInfo(worldFileName);
//checkNullInfo(serialFileName);
checkNullInfo(helpFileName);
checkNullInfo(stateFileName);
checkNullInfo(userFilesDir);
checkNullInfo(itemFilesDir);
checkNullInfo(boardFilesDir);
checkNullInfo(maxSpam);
checkNullInfo(motdFileName);
}
int getStartZone() { return Integer.parseInt(startZone); }
int getStartRoom() { return Integer.parseInt(startRoom); }
String getWorldDir() { return worldDir; }
String getWorldFileName() { return worldFileName; }
//String getSerialFileName() { return serialFileName; }
String getHelpFileName() { return helpFileName; }
String getStateFileName() { return stateFileName; }
String getUserFilesDir() { return userFilesDir; }
String getItemFilesDir() { return itemFilesDir; }
String getBoardFilesDir() { return boardFilesDir; }
int getMaxSpam() { return Integer.parseInt(maxSpam); }
String getMotdFileName() { return motdFileName; }
}