// $HeadURL$ // $Id$ // // Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College. // // Screensaver is an open-source project developed by the ICCB-L and NSRB labs // at Harvard Medical School. This software is distributed under the terms of // the GNU General Public License. package edu.harvard.med.screensaver.model; import java.math.BigDecimal; import java.math.RoundingMode; import edu.harvard.med.screensaver.util.StringUtils; /** * A Concentration, in either millimolar, micromolar or nanomolar units, with * 1-nanoliter resolution (maximum). */ public class MolarConcentration extends Quantity<MolarConcentration,MolarUnit> { public MolarConcentration(Integer value) { super(value, MolarUnit.MILLIMOLAR); } public MolarConcentration(Integer value, MolarUnit units) { super(value.toString(), units); } public MolarConcentration(Long value) { this(value, MolarUnit.MILLIMOLAR); } public MolarConcentration(Long value, MolarUnit units) { super(value.toString(), units); } /** * Create a Concentration using a String representation of a decimal number, provided * in the specified units. If value has a fractional value, converts to units * that are small enough to hold the provided value as a whole number. * * @param value * @param units */ public MolarConcentration(String value, MolarUnit units) { super(new BigDecimal(value), units); } public MolarConcentration(String value, MolarUnit units, RoundingMode roundingMode) { super(new BigDecimal(value), units, roundingMode); } public MolarConcentration(BigDecimal value, MolarUnit units) { super(value, units); } @Override protected MolarConcentration newQuantity(BigDecimal value, MolarUnit unit) { return new MolarConcentration(value, unit); } /** * @motivation for UI */ public static MolarConcentration makeConcentration(String value, MolarUnit unit) { MolarConcentration c = null; if (!StringUtils.isEmpty(value)) { c = new MolarConcentration(value, unit).convertToReasonableUnits(); } return c; } public static MolarConcentration makeConcentration(String value, MolarUnit unit, RoundingMode roundingMode) { MolarConcentration c = null; if (!StringUtils.isEmpty(value)) { c = new MolarConcentration(value, unit, roundingMode).convertToReasonableUnits(); } return c; } }