⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 multipointtestresult.java

📁 spam source codejasen-0.9jASEN - java Anti Spam ENgine.zip 如标题所示
💻 JAVA
字号:
/*
 * @(#)MultiPointTestResult.java	04//01/2005
 *
 * Copyright (c) 2005 jASEN.org
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *   1. Redistributions of source code must retain the above copyright notice,
 *      this list of conditions and the following disclaimer.
 *
 *   2. Redistributions in binary form must reproduce the above copyright
 *      notice, this list of conditions and the following disclaimer in
 *      the documentation and/or other materials provided with the distribution.
 *
 *   3. The names of the authors may not be used to endorse or promote products
 *      derived from this software without specific prior written permission.
 *
 *   4. Any modification or additions to the software must be contributed back
 *      to the project.
 *
 *   5. Any investigation or reverse engineering of source code or binary to
 *      enable emails to bypass the filters, and hence inflict spam and or viruses
 *      onto users who use or do not use jASEN could subject the perpetrator to
 *      criminal and or civil liability.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JASEN.ORG,
 * OR ANY CONTRIBUTORS TO THIS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 */
package org.jasen.core;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

import org.jasen.error.JasenException;
import org.jasen.interfaces.JasenTestResult;
import org.jasen.interfaces.ProbabilityCalculator;

/**
 * <P>
 * 	Returned from a test when the test is intended to contribute to a total number of spam "points".
 * </P>
 * <P>
 * 	Once all point based tests are run for a single message, the ultimate probability for these
 * 	point tests is computed based on the points return and their corresponding weights
 * </P>
 * <p>
 * 	A point based test will accrue points during testing such that the higher the number of points scored,
 *  the greater the indication of spam.
 * </p>
 * <p>
 * 	The MultiPointTestResult differs from the standard PointTestResult in that it allows for multiple thresholds
 * </p>
 * @author Jason Polites
 * @see org.jasen.core.ProbabilityTestResult
 * @see org.jasen.core.PointTestResult
 */
public class MultiPointTestResult extends AbstractTestResult {

    private List results;
    private ProbabilityCalculator calculator = null;

    private float defaultProbability = 0.5f;

    /**
     * Constructs a new MultiPointTestResult
     * @param calculator The calculator to use when computing final results
     */
    public MultiPointTestResult(ProbabilityCalculator calculator) {
        super();
        this.calculator = calculator;
    }

    /**
     * Constructs a new MultiPointTestResult
     * @param calculator The calculator to use when computing final results
     * @param defaultProbability The probability to use in the absence of further information
     */
    public MultiPointTestResult(ProbabilityCalculator calculator, float defaultProbability) {
        super();
        this.calculator = calculator;
        this.defaultProbability = defaultProbability;
    }

    /**
     * Adds a single point result to this multi point result
     * @param result A point result with it's value data already populated
     */
    public void addPointResult(PointTestResult result) {
        if(results == null) {
            results = new LinkedList();
        }

        results.add(result);
    }

    /* (non-Javadoc)
     * @see org.jasen.interfaces.JasenTestResult#calculateProbability()
     */
    public float calculateProbability() throws JasenException {
        if(results != null) {
            Iterator i = results.iterator();
            double[] probs = new double[results.size()];
            int count = 0;

            while(i.hasNext()) {
                probs[count] = ((JasenTestResult)i.next()).calculateProbability();
                count++;
            }

            return (float)calculator.calculate(probs, 0, probs.length);
        }
        return defaultProbability;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -