private int checkAllOpt(String stmt, int offset) { char c1 = stmt.charAt(++offset); if (c1 == '-') { if (stmt.length() > offset + 1) { offset = checkSeriesOpt(stmt, offset); if (stmt.length() > offset + 1) { char c2 = stmt.charAt(++offset); if (c2 == ' ' || c2 == '\t' || c2 == '\r' || c2 == '\n' || c2 == '/' || c2 == '#') { offset = skipSpaceAndComment(stmt, offset); if (stmt.length() == offset + 1) return CONFIG_ALL; return checkAllOpt(stmt, offset); } else { /* -t/-f xxx */ return OTHER; } } return CONFIG_ALL; } return OTHER; } return OTHER; }
public int parse(String stmt, int offset) { if (stmt.length() > offset + 1) { switch (stmt.charAt(++offset)) { case '_': case '-': return checkConfigAll(stmt, offset); default: offset = skipSpaceAndComment(stmt, offset); if (stmt.length() == ++offset) return CONFIG; else return OTHER; } } return CONFIG; }
private int checkConfigAll(String stmt, int offset) { if (stmt.length() > offset + 2) { char c1 = stmt.charAt(++offset); char c2 = stmt.charAt(++offset); char c3 = stmt.charAt(++offset); if ((c1 == 'a' || c1 == 'A') && (c2 == 'l' || c2 == 'L') && (c3 == 'l' || c3 == 'L')) { if (stmt.length() > offset + 1) { char c4 = stmt.charAt(++offset); if (c4 == ' ' || c4 == '\t' || c4 == '\r' || c4 == '\n' || c4 == '/' || c4 == '#') { offset = skipSpaceAndComment(stmt, offset); if (stmt.length() == offset + 1) return CONFIG_ALL; return checkAllOpt(stmt, offset); } } else { return CONFIG_ALL; } } } return OTHER; }
public static void execute(ManagerConnection c, String stmt, int offset) { ManagerParseConfig parser = new ManagerParseConfig(); int rs = parser.parse(stmt, offset); switch (rs) { case ManagerParseConfig.CONFIG: ReloadConfig.execute(c, false, 0); break; case ManagerParseConfig.CONFIG_ALL: ReloadConfig.execute(c, true, parser.getMode()); break; default: c.writeErrMessage(ErrorCode.ER_YES, "Unsupported statement"); } }
@Test public void testReloadConfigAll() { ManagerParseConfig parser = new ManagerParseConfig(); Assert.assertEquals(ManagerParseConfig.CONFIG, parser.parse("reload @@config", 14)); Assert.assertEquals(0, parser.getMode()); ManagerParseConfig parser1 = new ManagerParseConfig(); Assert.assertEquals(ManagerParseConfig.CONFIG_ALL, parser1.parse("reload @@config-all", 14)); Assert.assertEquals(0, parser1.getMode()); ManagerParseConfig parser2 = new ManagerParseConfig(); Assert.assertEquals(ManagerParseConfig.CONFIG_ALL, parser2.parse("reload @@config_all -s", 14)); Assert.assertEquals(1, parser2.getMode()); ManagerParseConfig parser3 = new ManagerParseConfig(); Assert.assertEquals(ManagerParseConfig.CONFIG_ALL, parser3.parse("reload @@config_all -f", 14)); Assert.assertEquals(2, parser3.getMode()); ManagerParseConfig parser4 = new ManagerParseConfig(); Assert.assertEquals(ManagerParseConfig.CONFIG_ALL, parser4.parse("reload @@config_all -s -f", 14)); Assert.assertEquals(3, parser4.getMode()); }