Coverage Report - com.timjohnstondev.unitconverter.model.PropertyList
 
Classes in this File Line Coverage Branch Coverage Complexity
PropertyList
100%
25/25
87%
7/8
1.5
 
 1  
 /**
 2  
  * Copyright 2009 Timothy Johnston Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
 3  
  * file except in compliance with the License. You may obtain a copy of the License at
 4  
  * 
 5  
  * http://www.apache.org/licenses/LICENSE-2.0
 6  
  * 
 7  
  * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 8  
  * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 9  
  * specific language governing permissions and limitations under the License.
 10  
  */
 11  
 package com.timjohnstondev.unitconverter.model;
 12  
 
 13  
 import java.util.ArrayList;
 14  
 import java.util.List;
 15  
 
 16  
 /**
 17  
  * A collection of {@link Property}s and their unit symbols/names from the data source.
 18  
  */
 19  20
 public class PropertyList extends ArrayList <Property>
 20  
 {
 21  
   /**
 22  
    * Returns a list of all the {@link Property} names in the data source. This list is organized by the order the
 23  
    * properties appear in the data source.
 24  
    * 
 25  
    * @return a list of the {@code Property} names
 26  
    */
 27  
   public final List <String> getPropertyNames()
 28  
   {
 29  3
     final List <String> propertyNames = new ArrayList <String>();
 30  3
     for (Property property : this)
 31  
     {
 32  23
       propertyNames.add(property.getName());
 33  
     }
 34  3
     return propertyNames;
 35  
   }
 36  
 
 37  
   /**
 38  
    * Returns the {@link Conversion} factor or formula for the given {@link Property} for going from one set of units to
 39  
    * another.
 40  
    * 
 41  
    * @param propertyName the name of the {@code Property} that will be converted, such as temperature, pressure or
 42  
    *          length
 43  
    * @param fromSymbol the original units
 44  
    * @param toSymbol the desired units
 45  
    * @return the {@code Conversion} factor or formula to perform the conversion
 46  
    */
 47  
   public final String getConversion(final String propertyName, final String fromSymbol, final String toSymbol)
 48  
   {
 49  2
     final Property property = getPropertyByName(propertyName);
 50  2
     return property.getConversion(fromSymbol, toSymbol);
 51  
   }
 52  
 
 53  
   /**
 54  
    * Returns a list of all the symbols for the given {@link Property} in the data source. The order of the symbols is
 55  
    * determined by the underlying {@code Property}. This list order was initially based on the order the symbols appear
 56  
    * in the data source for the {@code Property}.
 57  
    * 
 58  
    * @param propertyName the name of the {@code Property} that is the basis for the units
 59  
    * @return a list of the symbols
 60  
    */
 61  
   public final List <String> getSymbols(final String propertyName)
 62  
   {
 63  12
     final Property property = getPropertyByName(propertyName);
 64  12
     return property.getSymbols();
 65  
   }
 66  
 
 67  
   /**
 68  
    * Returns a list, minus the symbol provided, of the symbols for the given {@link Property} in the data source. The
 69  
    * order of the symbols is determined by the underlying {@code Property}. This list order was initially based on the
 70  
    * order the symbols appear in the data source for this {@code Property}.
 71  
    * 
 72  
    * @param property the name of the {@code Property} that is the basis for the units
 73  
    * @param fromSymbol the symbol to leave out of the list
 74  
    * @return a list of the symbols
 75  
    */
 76  
   public final List <String> getSymbols(final String property, final String fromSymbol)
 77  
   {
 78  3
     final List <String> symbols = getSymbols(property);
 79  3
     symbols.remove(fromSymbol);
 80  3
     return symbols;
 81  
   }
 82  
 
 83  
   /**
 84  
    * Returns this symbol's name in unabbreviated words for this {@link Property}.
 85  
    * 
 86  
    * @param propertyName the name of the {@code Property} that is the basis for this unit
 87  
    * @param unitSymbol the symbol that represents the returned name
 88  
    * @return the name for this symbol
 89  
    */
 90  
   public final String getUnitName(final String propertyName, final String unitSymbol)
 91  
   {
 92  2
     final Property property = getPropertyByName(propertyName);
 93  2
     return property.getUnitName(unitSymbol);
 94  
   }
 95  
 
 96  
   private Property getPropertyByName(final String propertyName)
 97  
   {
 98  20
     Property property = null;
 99  20
     for (Property prop : this)
 100  
     {
 101  110
       if (propertyName.equals(prop.getName()))
 102  
       {
 103  20
         property = prop;
 104  20
         break;
 105  
       }
 106  
     }
 107  20
     return property;
 108  
   }
 109  
 
 110  
   /**
 111  
    * Updates the unit separator symbol
 112  
    * 
 113  
    * @param symbol the new unit separator symbol
 114  
    */
 115  
   public final void setUnitSeparator(final String symbol)
 116  
   {
 117  2
     for (Property prop : this)
 118  
     {
 119  20
       prop.setUnitSeparator(symbol);
 120  
     }
 121  2
   }
 122  
 
 123  
   /**
 124  
    * Returns {@code true} if this {@code Property} can do mole to mass and mass to mole unit conversions, else {@code
 125  
    * false}
 126  
    * 
 127  
    * @param propertyName name of the property
 128  
    * @return {@code true} if this {@code Property} can do mole to mass and mass to mole unit conversions, else {@code
 129  
    *         false}
 130  
    */
 131  
   public final boolean usesMoles(final String propertyName)
 132  
   {
 133  4
     final Property property = getPropertyByName(propertyName);
 134  4
     return property.usesMoles();
 135  
   }
 136  
 }