package com.aelitis.azureus.core.speedmanager.impl.v2;
import org.gudy.azureus2.core3.internat.MessageText;
import com.aelitis.azureus.core.speedmanager.SpeedManagerLimitEstimate;
/**
* Created on Jun 5, 2007
* Created by Alan Snyder
* Copyright (C) 2007 Aelitis, All Rights Reserved.
* <p/>
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* <p/>
* AELITIS, SAS au capital de 63.529,40 euros
* 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France.
*/
public class SpeedLimitConfidence
implements Comparable
{
public static final SpeedLimitConfidence NONE = new SpeedLimitConfidence("NONE",0, SpeedManagerLimitEstimate.TYPE_UNKNOWN);
public static final SpeedLimitConfidence LOW = new SpeedLimitConfidence("LOW",1, SpeedManagerLimitEstimate.TYPE_ESTIMATED);
public static final SpeedLimitConfidence MED = new SpeedLimitConfidence("MED",2, SpeedManagerLimitEstimate.TYPE_CHOKE_ESTIMATED);
public static final SpeedLimitConfidence HIGH = new SpeedLimitConfidence("HIGH",3, SpeedManagerLimitEstimate.TYPE_MEASURED_MIN);
public static final SpeedLimitConfidence ABSOLUTE = new SpeedLimitConfidence("ABSOLUTE",4, SpeedManagerLimitEstimate.TYPE_MANUAL);
private final String name;
private final int order;
private final float estimateType;
private SpeedLimitConfidence(String _name, int _order, float _speedLimitEstimateType){
name = _name;
order = _order;
estimateType = _speedLimitEstimateType;
}
public static SpeedLimitConfidence convertType( float type ){
if( type <= SpeedLimitConfidence.NONE.estimateType ){
return NONE;
}else if( type <= SpeedLimitConfidence.LOW.estimateType ){
return LOW;
}else if( type <= SpeedLimitConfidence.MED.estimateType ){
return MED;
}else if( type <= SpeedLimitConfidence.HIGH.estimateType ){
return HIGH;
}else{
return ABSOLUTE;
}
}//convertType
/**
* Turns a string into a SpeedLimitConfidence class.
* @param setting - String is expected to be one of: NONE, LOW, MED, HIGH, ABSOLUE.
* @return - class corresponding to String. If it isn't one of the know values then NONE is returned.
*/
public static SpeedLimitConfidence parseString(String setting){
SpeedLimitConfidence retVal = SpeedLimitConfidence.NONE;
if(setting==null){
return retVal;
}
if( "NONE".equalsIgnoreCase(setting) ){
return SpeedLimitConfidence.NONE;
}else if("LOW".equalsIgnoreCase(setting)){
return SpeedLimitConfidence.LOW;
}else if("MED".equalsIgnoreCase(setting)){
return SpeedLimitConfidence.MED;
}else if("HIGH".equalsIgnoreCase(setting)){
return SpeedLimitConfidence.HIGH;
}else if("ABSOLUTE".equalsIgnoreCase(setting)){
return SpeedLimitConfidence.ABSOLUTE;
}
return retVal;
}
public float asEstimateType(){
return estimateType;
}
public static String asEstimateTypeString(float type){
//ToDo: move to proper class. This is to do something now.
if( type==SpeedManagerLimitEstimate.TYPE_UNKNOWN ){
return "Unknown";
}else if( type==SpeedManagerLimitEstimate.TYPE_ESTIMATED){
return "Estimate";
}else if( type==SpeedManagerLimitEstimate.TYPE_MANUAL){
return "Fixed";
}
return "";
}
public String getString(){
return name;
}
private static final String MESSAGE_BUNDLE_PREFIX = "SpeedTestWizard.name.conf.level.";
/**
* Get the internationalized string for UI panels and
* drop downs.
* @return - Internationalized String.
*/
public String getInternationalizedString(){
return MessageText.getString( MESSAGE_BUNDLE_PREFIX + name.toLowerCase() );
}
/**
* compareTo to with boolean syntax.
*
* @param limitConf -
* @return - true if greater then, false if equal or less.
*/
public boolean isGreater(SpeedLimitConfidence limitConf)
{
if( this.compareTo(limitConf)>0 ){
return true;
}
return false;
}
/**
* Comparable interface
* @param limitConf - Item to compare with.
* @return -
*/
public int compareTo(SpeedLimitConfidence limitConf){
return (order - limitConf.order);
}
/**
* Comparable interface.
* @param obj -
* @return -
*/
public int compareTo(Object obj){
if( !(obj instanceof SpeedLimitConfidence) ){
throw new ClassCastException("Only comparable to SpeedLimitConfidence class.");
}
SpeedLimitConfidence casted = (SpeedLimitConfidence) obj;
return compareTo(casted);
}
}
|