blob: 8e8fb36dbc5bd188ffe5a783be729aaec553ca39 [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.xtext.functionlibrary.common.uomo.test;
import java.util.Locale;
import org.eclipse.uomo.units.SymbolMap;
import org.eclipse.uomo.units.impl.BaseAmount;
import org.eclipse.uomo.units.impl.format.LocalUnitFormatImpl;
import org.eclipse.uomo.units.impl.system.USCustomary;
import org.eclipse.osbp.xtext.functionlibrary.common.uomo.ISystemOfQuantityUnits;
import org.eclipse.osbp.xtext.functionlibrary.common.uomo.ImperialLengthUnit;
import org.eclipse.osbp.xtext.functionlibrary.common.uomo.MetricAreaUnit;
import org.eclipse.osbp.xtext.functionlibrary.common.uomo.MetricLengthUnit;
import org.eclipse.osbp.xtext.functionlibrary.common.uomo.MetricMassUnit;
import org.eclipse.osbp.xtext.functionlibrary.common.uomo.MetricVolumeUnit;
import org.eclipse.osbp.xtext.functionlibrary.common.uomo.SystemsOfQuantityUnits;
import org.unitsofmeasurement.quantity.Area;
import org.unitsofmeasurement.quantity.Length;
import org.unitsofmeasurement.quantity.Mass;
import org.unitsofmeasurement.quantity.Volume;
import org.unitsofmeasurement.unit.Unit;
public class Sample {
public static void main(String[] args) {
// Locale.setDefault(Locale.UK);
System.out.println("LOCALE: "+Locale.getDefault());
BaseAmount<Length> metricLength = MetricLengthUnit.amount(1240, MetricLengthUnit.M);
BaseAmount<Length> imperialLength = ImperialLengthUnit.amount(10000, ImperialLengthUnit.FT);
BaseAmount<Area> metricArea = MetricAreaUnit.amount(1.5, MetricAreaUnit.M2);
BaseAmount<Volume> metricVolume = MetricVolumeUnit.amount(1.5, MetricVolumeUnit.L);
BaseAmount<Mass> metricMass = MetricMassUnit.amount(1.5, MetricMassUnit.KG);
LocalUnitFormatImpl formatDE = LocalUnitFormatImpl.getInstance(Locale.GERMANY);
LocalUnitFormatImpl formatUS = LocalUnitFormatImpl.getInstance(Locale.US);
LocalUnitFormatImpl formatUK = LocalUnitFormatImpl.getInstance(Locale.UK);
System.out.println("------ IMPERIAL.FT ------");
System.out.println(imperialLength);
// System.out.println(imperialLength.getNumber() + " " + formatUS.format(imperialLength.getUnit()));
System.out.println("------ MetricLengthUnit.CM ------");
Unit<Length> unit = ImperialLengthUnit.IN;
LocalUnitFormatImpl format = LocalUnitFormatImpl.getInstance();
String symbol = format.format(unit);
System.out.println(symbol);
String symbolDE = formatDE.format(unit);
System.out.println(symbolDE);
Unit<Length> sysUnitDE = unit.getSystemUnit();
System.out.println(sysUnitDE.getSymbol());
String symbolUS = formatUS.format(unit);
System.out.println(symbolUS);
String symbolUK = formatUK.format(unit);
System.out.println(symbolUK);
Unit<Length> sysUnit = unit.getSystemUnit();
System.out.println(sysUnit.getSymbol());
System.out.println("--- Metric source ---");
transformAmount(metricLength, true);
System.out.println("--- Imperial source ---");
transformAmount(imperialLength, true);
System.out.println("--- Metric source ---");
transformAmount(metricArea, true);
System.out.println("--- Metric source ---");
transformAmount(metricVolume, true);
System.out.println("--- Metric source ---");
transformAmount(metricMass, true);
System.out.println("---------------------");
BaseAmount<?> sizes[] = {
MetricLengthUnit.amount(10, MetricLengthUnit.CM),
MetricLengthUnit.amount(300, MetricLengthUnit.MM),
MetricLengthUnit.amount(2, MetricLengthUnit.M)
};
System.out.println("(w)idth = "+sizes[0]);
transformAmount(sizes[0], false);
System.out.println("(h)eight = "+sizes[1]);
transformAmount(sizes[1], false);
System.out.println("(d)epth = "+sizes[2]);
transformAmount(sizes[2], false);
for (int i=0; i<3; i++) {
BaseAmount result = MetricAreaUnit.calculateQuadrat((BaseAmount<Length>) sizes[i]);
System.out.println("area("+sizes[i]+") = "+result);
transformAmount(result, false);
}
for (int i=0; i<3; i++) {
BaseAmount result = MetricAreaUnit.calculateRectangle((BaseAmount<Length>) sizes[(i+0)%3], (BaseAmount<Length>) sizes[(i+1)%3]);
System.out.println("area("+sizes[(i+0)%3]+" x "+sizes[(i+1)%3]+") = "+result);
transformAmount(result, false);
}
for (int i=0; i<3; i++) {
BaseAmount result = MetricVolumeUnit.calculateCube((BaseAmount<Length>) sizes[i]);
System.out.println("volume("+sizes[i]+") = "+result);
transformAmount(result, false);
}
BaseAmount result = MetricVolumeUnit.calculateCuboid((BaseAmount<Length>) sizes[0], (BaseAmount<Length>) sizes[1], (BaseAmount<Length>) sizes[2]);
System.out.println("volume("+sizes[0]+" x "+sizes[1]+" x "+sizes[2]+") = "+result);
transformAmount(result, false);
System.out.println("=====================");
}
private static void transformAmount(BaseAmount<?> amount, boolean showResult) {
// LocalUnitFormatImpl formatUS = LocalUnitFormatImpl.getInstance(Locale.US);
if (showResult) {
// System.out.println(amount.getNumber() + " " + formatUS.format(amount.getUnit()));
System.out.println(amount);
}
for (ISystemOfQuantityUnits baseUnit : SystemsOfQuantityUnits.elements(amount)) {
if (showResult) {
System.out.println("--> "+baseUnit.getName());
}
// for (Object unit : baseUnit.getUnits()) {
// System.out.println(" = "+amount.to((Unit) unit).toString());
// }
}
}
}