@Override
    protected Void doInBackground() {
        publish(new RuleTaskState(0, "[*] Checking " + rule.toString()));
        
        String htmlPage = "";
        
        try {
            htmlPage = HttpDownloader.getString(rule.getRuleURL());
        } catch(MalformedURLException ex) { 
            publish(new RuleTaskState(0, "[!] Invalid rule URL: " + ex.getMessage()));
            //this.cancel(true);
            return null;
        } catch (IOException ex) {
            publish(new RuleTaskState(0, "[!] Can't get HTML content by rule: " + ex.getMessage()));
            //this.cancel(true);
            return null;            
        }
        
        publish(new RuleTaskState(1, "[*] Got page content, checking by rule's regexpr... (" + rule.getRuleRegExpr() + ")"));
        
        RuleDrivenTextParser rdtp = new RuleDrivenTextParser(rule);
        
        ArrayList<String> resultList = rdtp.parseTextByRule(htmlPage);
        if (resultList.size() > 0) {
            publish(new RuleTaskState(2, "[*] Found some matches, you can see it in matches tab"));
            
            for (String s : resultList) {
                publish(new RuleTaskState(-1, s));
            }
        } else {
            publish(new RuleTaskState(0, "[!] There is no results matched with rule's regexpr!"));
        }
        
        
        publish(new RuleTaskState(3, "[*] Testing finished!"));
        return null;
    }