package org.djunits.generator; import java.lang.reflect.Field; import java.lang.reflect.Modifier; /** *

* Copyright (c) 2013-2022 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved.
* BSD-style license. See DJUNITS License. *

* @author Alexander Verbraeck * @author Peter Knoppers */ public final class GenerateStaticUNITS { /** the standard units. */ private static final String[] STANDARD_UNITS = new String[] { "AbsoluteTemperatureUnit", "AccelerationUnit", "AngleUnit", "AngularAccelerationUnit", "AngularVelocityUnit", "AreaUnit", "DensityUnit", "DimensionlessUnit", "DirectionUnit", "DurationUnit", "ElectricalChargeUnit", "ElectricalCurrentUnit", "ElectricalPotentialUnit", "ElectricalResistanceUnit", "EnergyUnit", "FlowMassUnit", "FlowVolumeUnit", "ForceUnit", "FrequencyUnit", "LengthUnit", "LinearDensityUnit", "MassUnit", "MomentumUnit", "PositionUnit", "PowerUnit", "PressureUnit", "SolidAngleUnit", "SpeedUnit", "TemperatureUnit", "TimeUnit", "TorqueUnit", "VolumeUnit", "AbsorbedDoseUnit", "AmountOfSubstanceUnit", "CatalyticActivityUnit", "ElectricalCapacitanceUnit", "ElectricalConductanceUnit", "ElectricalInductanceUnit", "EquivalentDoseUnit", "IlluminanceUnit", "LuminousFluxUnit", "LuminousIntensityUnit", "MagneticFluxDensityUnit", "MagneticFluxUnit", "RadioActivityUnit" }; /** * */ private GenerateStaticUNITS() { // utility class } /** * @param args String[]; should be empty */ public static void main(String[] args) { for (String className : STANDARD_UNITS) { System.out.println(); System.out.println( " /****************************************************************************************************************/"); String s = " /******************************************************XX********************************************************/"; String cs = className.toUpperCase().replace("UNIT", ""); int i = cs.length() + 2; cs = (i % 2 == 1) ? cs + " " : cs; i = (i % 2 == 1) ? i + 2 : i; i = i / 2; s = s.replace("********************".substring(0, i - 1) + "X", " " + cs + " "); s = s.replace("X********************".substring(0, i), ""); System.out.println(s); System.out.println( " /****************************************************************************************************************/"); System.out.println(); @SuppressWarnings("rawtypes") Class c; try { c = Class.forName("org.djunits.unit." + className); } catch (Exception exception) { System.err.println("Could not find unit " + className); System.exit(-1); return; } int l = 0; for (Field f : c.getFields()) { if (Modifier.isPublic(f.getModifiers()) && Modifier.isStatic(f.getModifiers()) && Modifier.isFinal(f.getModifiers()) && !f.getName().equals("SI") && !f.getName().equals("STANDARD_UNITS")) { String n = f.getName(); if (f.getName().contains("ELECTRONVOLT")) { n = cs.trim() + "_" + n; } l = Math.max(l, n.length()); } } for (Field f : c.getFields()) { if (Modifier.isPublic(f.getModifiers()) && Modifier.isStatic(f.getModifiers()) && Modifier.isFinal(f.getModifiers()) && !f.getName().equals("SI") && !f.getName().equals("STANDARD_UNITS")) { String n = f.getName(); if (f.getName().contains("ELECTRONVOLT")) { n = cs.trim() + "_" + n; } if (!n.equals("BASE") && !n.equals("DEFAULT")) { if (c.getSimpleName().equals("AbsoluteTemperatureUnit") || c.getSimpleName().equals("PositionUnit")) n = n + "_ABS"; System.out.println(String.format(" /** */ %-45s = %s;", c.getSimpleName() + " " + n, c.getSimpleName() + "." + f.getName())); } } } if (className.contains("Dimensionless")) { System.out.println(String.format(" /** */ %-45s = %s;", c.getSimpleName() + " UNIT", c.getSimpleName() + ".SI")); } } } }