View Javadoc
1   package org.djunits.generator;
2   
3   import java.lang.reflect.Field;
4   import java.lang.reflect.Modifier;
5   
6   /**
7    * <p>
8    * Copyright (c) 2013-2020 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
9    * BSD-style license. See <a href="https://djunits.org/docs/license.html">DJUNITS License</a>.
10   * </p>
11   * @author <a href="https://www.tudelft.nl/averbraeck">Alexander Verbraeck</a>
12   * @author <a href="https://www.tudelft.nl/staff/p.knoppers/">Peter Knoppers</a>
13   * @author <a href="https://www.transport.citg.tudelft.nl">Wouter Schakel</a>
14   */
15  public final class GenerateStaticUNITS
16  {
17      /** the standard units. */
18      private static final String[] STANDARD_UNITS = new String[] { "AbsoluteTemperatureUnit", "AccelerationUnit", "AngleUnit",
19              "AngularAccelerationUnit", "AngularVelocityUnit", "AreaUnit", "DensityUnit", "DimensionlessUnit", "DirectionUnit",
20              "DurationUnit", "ElectricalChargeUnit", "ElectricalCurrentUnit", "ElectricalPotentialUnit",
21              "ElectricalResistanceUnit", "EnergyUnit", "FlowMassUnit", "FlowVolumeUnit", "ForceUnit", "FrequencyUnit",
22              "LengthUnit", "LinearDensityUnit", "MassUnit", "MomentumUnit", "PositionUnit", "PowerUnit", "PressureUnit",
23              "SolidAngleUnit", "SpeedUnit", "TemperatureUnit", "TimeUnit", "TorqueUnit", "VolumeUnit", "AbsorbedDoseUnit",
24              "AmountOfSubstanceUnit", "CatalyticActivityUnit", "ElectricalCapacitanceUnit", "ElectricalConductanceUnit",
25              "ElectricalInductanceUnit", "EquivalentDoseUnit", "IlluminanceUnit", "LuminousFluxUnit", "LuminousIntensityUnit",
26              "MagneticFluxDensityUnit", "MagneticFluxUnit", "RadioActivityUnit" };
27  
28      /**
29       * 
30       */
31      private GenerateStaticUNITS()
32      {
33          // utility class
34      }
35  
36      /**
37       * @param args String[]; should be empty
38       */
39      public static void main(String[] args)
40      {
41          for (String className : STANDARD_UNITS)
42          {
43              System.out.println();
44              System.out.println(
45                      "    /****************************************************************************************************************/");
46              String s =
47                      "    /******************************************************XX********************************************************/";
48              String cs = className.toUpperCase().replace("UNIT", "");
49              int i = cs.length() + 2;
50              cs = (i % 2 == 1) ? cs + " " : cs;
51              i = (i % 2 == 1) ? i + 2 : i;
52              i = i / 2;
53              s = s.replace("********************".substring(0, i - 1) + "X", " " + cs + " ");
54              s = s.replace("X********************".substring(0, i), "");
55              System.out.println(s);
56              System.out.println(
57                      "    /****************************************************************************************************************/");
58              System.out.println();
59  
60              @SuppressWarnings("rawtypes")
61              Class c;
62              try
63              {
64                  c = Class.forName("org.djunits.unit." + className);
65              }
66              catch (Exception exception)
67              {
68                  System.err.println("Could not find unit " + className);
69                  System.exit(-1);
70                  return;
71              }
72  
73              int l = 0;
74              for (Field f : c.getFields())
75              {
76                  if (Modifier.isPublic(f.getModifiers()) && Modifier.isStatic(f.getModifiers())
77                          && Modifier.isFinal(f.getModifiers()) && !f.getName().equals("SI")
78                          && !f.getName().equals("STANDARD_UNITS"))
79                  {
80                      String n = f.getName();
81                      if (f.getName().contains("ELECTRONVOLT"))
82                      {
83                          n = cs.trim() + "_" + n;
84                      }
85                      l = Math.max(l, n.length());
86                  }
87              }
88  
89              for (Field f : c.getFields())
90              {
91                  if (Modifier.isPublic(f.getModifiers()) && Modifier.isStatic(f.getModifiers())
92                          && Modifier.isFinal(f.getModifiers()) && !f.getName().equals("SI")
93                          && !f.getName().equals("STANDARD_UNITS"))
94                  {
95                      String n = f.getName();
96                      if (f.getName().contains("ELECTRONVOLT"))
97                      {
98                          n = cs.trim() + "_" + n;
99                      }
100 
101                     if (!n.equals("BASE") && !n.equals("DEFAULT"))
102                     {
103                         if (c.getSimpleName().equals("AbsoluteTemperatureUnit") || c.getSimpleName().equals("PositionUnit"))
104                             n = n + "_ABS";
105                         System.out.println(String.format("    %-45s = %s;", c.getSimpleName() + " " + n,
106                                 c.getSimpleName() + "." + f.getName()));
107                     }
108                 }
109             }
110             if (className.contains("Dimensionless"))
111             {
112                 System.out.println(String.format("    %-45s = %s;", c.getSimpleName() + " UNIT", c.getSimpleName() + ".SI"));
113             }
114         }
115     }
116 
117 }