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); } }