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; } }