package uc.protocols.hub; import helpers.GH; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; import logger.LoggerFactory; import org.apache.log4j.Level; import org.apache.log4j.Logger; import uc.Command; import uc.protocols.DCProtocol; /** * * * INFO UserCommand.java Line:73 UserCommand not parseable: $UserCommand 1 3 • Tv-Geek • \Week listning\List shows in database$<%[mynick]> +sl| * * example: * $UserCommand 1 2 Misc\ Drop user $$To: °^Goose^° From: %[mynick] $<%[mynick]> #drop %[nick]| * $UserCommand 255 7 //delete all * $UserCommand 0 7 // add separator * * first number: what: 255 = clear , 0 = separator , 1 = usual command , 2 = usual command restricted to single user * * second number: * 1 = Hub - ignored? * 2 = User * 4 = Search * 8 = FileList * * @author Quicksilver * */ public class UserCommand extends AbstractNMDCHubProtocolCommand { private static Logger logger = LoggerFactory.make(); private final Pattern delete; private final Pattern normalCommand; private final Pattern separator; public UserCommand() { normalCommand = Pattern.compile( prefix +" ([12]) ("+SHORT+") ("+TEXT_NODOLLAR+")\\$([^|]*?)"+ESCAPED_PIPE+"?"); delete = Pattern.compile(prefix + " 255 ("+SHORT+").*"); separator = Pattern.compile(prefix +" 0 ("+SHORT+")("+TEXT+")"); } @Override public void handle(Hub hub,String command) throws IOException { logger.debug("usercommand received: "+command); Matcher m = null; if ((m = normalCommand.matcher(command)).matches()) { boolean multi = Integer.parseInt(m.group(1)) == 1; int where = Integer.parseInt(m.group(2)); String path = m.group(3); String com = m.group(4)+"|"; String toSend = DCProtocol.reverseReplaces(com); hub.addUserCommand(new Command(path,multi,where,toSend,hub.getFavHub().getHubaddy())); } else if ((m = delete.matcher(command)).matches() ) { int where = Integer.parseInt(m.group(1)); hub.deleteUserCommands(where); } else if ((m = separator.matcher(command)).matches()) { int where = Integer.parseInt(m.group(1)); String path = m.group(2); path = path.trim(); Command com = hub.getLastUserCommand(); if (GH.isEmpty(path) && com != null) { path = com.getParentPath()+"\\"; // logger.debug("path of sep: "+path); } hub.addUserCommand(new Command(where,path,hub.getFavHub().getHubaddy())); } else { logger.log(hub.isOpHub()?Level.INFO:Level.DEBUG, "UserCommand not parseable: "+command); } } // /** // * test for the pattern of UserCommand // */ // public static void main(String[] args) { // // String pm = "$UserCommand 1 3 • Tv-Geek • \\Week listning\\List shows in database$<%[mynick]> +sl|";//"$UserCommand 1 2 Misc\\ Drop user $$To: °^Goose^° From: %[mynick] $<%[mynick]> #drop %[nick]|"; // String x = "$UserCommand 255 3" ; // UserCommand uc = new UserCommand(); // Matcher m = uc.normalCommand.matcher(pm); // Matcher m2 = uc.delete.matcher(x); // boolean matches = m.matches(), matches2 = m2.matches(); // // System.out.println(matches+" "+matches2); // if (matches) { // System.out.println(m.group(1)); // System.out.println(m.group(2)); // System.out.println(m.group(3)); // System.out.println(m.group(4)); // } // } }