| /** |
| * |
| * 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()); |
| // } |
| } |
| } |
| } |