protected static ArrayList<ConnectionInformation> readSettings() { ArrayList<ConnectionInformation> conInfoList = new ArrayList<ConnectionInformation>(); ArrayList<Settings> settingsList = SettingsReader.readSettings(settings_file); try { if (settingsList == null) { SimpleIO.createFolder(settings_folder); SimpleIO.createFile(settings_file); createSettings(); logger.error("Populate settings.conf before running."); System.exit(1); } } catch (IOException e) { logger.error("I/O error", e.getCause()); } ConnectionInformation connectionInformation; Profile profile; for (Settings settings : settingsList) { try { connectionInformation = new ConnectionInformation(); connectionInformation.setServeralias(settings.getSetting("server_alias")); connectionInformation.setHostname(settings.getSetting("hostname")); connectionInformation.setPort(settings.getSetting("port")); connectionInformation.setIpv6(Boolean.parseBoolean(settings.getSetting("ipv6"))); String bindAddress = settings.getSetting("bind_address"); if (bindAddress != null && !bindAddress.isEmpty()) { connectionInformation.setBindAddress(bindAddress); } String channels = settings.getSetting("channels"); if (channels != null) { for (String channel : channels.split(",")) { connectionInformation.addChannel(channel); } } profile = new Profile( settings.getSetting("nickname"), settings.getSetting("alt_nickname"), settings.getSetting("realname"), settings.getSetting("ident"), settings.getSetting("email")); profile.setQuitMessage(settings.getSetting("quitmsg")); connectionInformation.setProfile(profile); if (connectionInformation.isValid() && profile.isValid()) { conInfoList.add(connectionInformation); logger.info("Settings are in order, connecting.."); } else { logger.error("Settings need to be populated properly."); } } catch (UnknownHostException unknownHostException) { logger.error( String.format( "Can't bind to selected hostname, skipping this connection entry. exception '%s'", unknownHostException.getMessage())); } } return conInfoList; }