package cz.cvut.fel.restauracefel.library.service;
import cz.cvut.fel.restauracefel.library.service.UnitTypeIdEnum;
/**
* Tato trida se stara o prevadeni mernych jednotek.
*
* @author Jarda
*/
public class CodeList {
/**
* Soukromy konstruktor tridy CodeList.
*/
private CodeList(){
}
/**
* Metoda prevadi mnozstvi suroviny (atribut quantity) z jednotky
* s identifikatorem "fromUnitTypeId" na jednotku s identifikatorem
* "toUnitTypeId".
*
* @param fromUnitTypeId identifikator vychozi jednotky
* @param toUnitTypeId identifikator koncove jednotky
* @param quantity mnozstvi suroviny ve vychozi jednotce
* @return mnozstvi suroviny v koncove jednotce
*/
public static double transfer(int fromUnitTypeId, int toUnitTypeId, double quantity){
if (fromUnitTypeId == toUnitTypeId){
return quantity;
}
if (fromUnitTypeId == UnitTypeIdEnum.GRAMS.getCode() && toUnitTypeId == UnitTypeIdEnum.KILOGRAMS.getCode()){
return fromGramsToKilograms(quantity);
}
if (fromUnitTypeId == UnitTypeIdEnum.KILOGRAMS.getCode() && toUnitTypeId == UnitTypeIdEnum.GRAMS.getCode()){
return fromKilogramsToGrams(quantity);
}
double litres = 0;
if (fromUnitTypeId == UnitTypeIdEnum.MILILITRES.getCode()) litres = fromMililitresToLitres(quantity);
if (fromUnitTypeId == UnitTypeIdEnum.DECILITRES.getCode()) litres = fromDecilitresToLitres(quantity);
if (fromUnitTypeId == UnitTypeIdEnum.LITRES.getCode()) litres = quantity;
if (fromUnitTypeId == UnitTypeIdEnum.BUTTS50.getCode()) litres = fromButts50ToLitres(quantity);
if (fromUnitTypeId == UnitTypeIdEnum.BUTTS30.getCode()) litres = fromButts30ToLitres(quantity);
if (toUnitTypeId == UnitTypeIdEnum.MILILITRES.getCode()) return (fromLitresToMililitres(litres));
if (toUnitTypeId == UnitTypeIdEnum.DECILITRES.getCode()) return (fromLitresToDecilitres(litres));
if (toUnitTypeId == UnitTypeIdEnum.LITRES.getCode()) return (litres);
if (toUnitTypeId == UnitTypeIdEnum.BUTTS50.getCode()) return (fromLitresToButts50(litres));
if (toUnitTypeId == UnitTypeIdEnum.BUTTS30.getCode()) return (fromLitresToButts30(litres));
return -1;
}
/**
* Metoda prevadi kilogramy na gramy.
*
* @param kilos kilogramu
* @return gramu
*/
public static double fromKilogramsToGrams(double kilos){
return kilos * 1000;
}
/**
* Metoda prevadi gramy na kilogramy.
*
* @param grams gramu
* @return kilogramu
*/
public static double fromGramsToKilograms(double grams){
return grams / 1000;
}
/**
* Metoda prevadi 50ti litrove sudy na litry.
*
* @param butts sudu
* @return litru
*/
public static double fromButts50ToLitres(double butts){
return butts * 50;
}
/**
* Metoda prevadi litry na 50ti litrove sudy.
*
* @param litres litru
* @return sudu
*/
public static double fromLitresToButts50(double litres){
return litres / 50;
}
/**
* Metoda prevadi 30ti litrove sudy na litry.
*
* @param butts sudu
* @return litru
*/
public static double fromButts30ToLitres(double butts){
return butts * 30;
}
/**
* Metoda prevadi litry na 30ti litrove sudy.
*
* @param litres litru
* @return sudu
*/
public static double fromLitresToButts30(double litres){
return litres / 30;
}
/**
* Metoda prevadi litry na decilitry.
*
* @param litres litru
* @return decilitru
*/
public static double fromLitresToDecilitres(double litres){
return litres * 10;
}
/**
* Metoda prevadi decilitry na litry.
*
* @param decilitres decilitru
* @return litru
*/
public static double fromDecilitresToLitres(double decilitres){
return decilitres / 10;
}
/**
* Metoda prevadi litry na mililitry.
*
* @param litres litru
* @return mililitru
*/
public static double fromLitresToMililitres(double litres){
return litres * 1000;
}
/**
* Metoda prevadi mililitry na litry
*
* @param mililitres mililitru
* @return litru
*/
public static double fromMililitresToLitres(double mililitres){
return mililitres / 1000;
}
}