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-2019 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              "AreaUnit", "DensityUnit", "DimensionlessUnit", "DirectionUnit", "DurationUnit", "ElectricalChargeUnit",
20              "ElectricalCurrentUnit", "ElectricalPotentialUnit", "ElectricalResistanceUnit", "EnergyUnit", "FlowMassUnit",
21              "FlowVolumeUnit", "ForceUnit", "FrequencyUnit", "LengthUnit", "LinearDensityUnit", "MassUnit", "PositionUnit",
22              "PowerUnit", "PressureUnit", "SolidAngleUnit", "SpeedUnit", "TemperatureUnit", "TimeUnit", "TorqueUnit",
23              "VolumeUnit", "AbsorbedDoseUnit", "AmountOfSubstanceUnit", "CatalyticActivityUnit", "ElectricalCapacitanceUnit",
24              "ElectricalConductanceUnit", "ElectricalInductanceUnit", "EquivalentDoseUnit", "IlluminanceUnit",
25              "LuminousFluxUnit", "LuminousIntensityUnit", "MagneticFluxDensityUnit", "MagneticFluxUnit", "RadioActivityUnit" };
26  
27      /**
28       * 
29       */
30      private GenerateStaticUNITS()
31      {
32          // utility class
33      }
34  
35      /**
36       * @param args String[]; should be empty
37       */
38      public static void main(String[] args)
39      {
40          for (String className : STANDARD_UNITS)
41          {
42              System.out.println();
43              System.out.println(
44                      "    /****************************************************************************************************************/");
45              String s =
46                      "    /******************************************************XX********************************************************/";
47              String cs = className.toUpperCase().replace("UNIT", "");
48              int i = cs.length() + 2;
49              cs = (i % 2 == 1) ? cs + " " : cs;
50              i = (i % 2 == 1) ? i + 2 : i;
51              i = i / 2;
52              s = s.replace("********************".substring(0, i - 1) + "X", " " + cs + " ");
53              s = s.replace("X********************".substring(0, i), "");
54              System.out.println(s);
55              System.out.println(
56                      "    /****************************************************************************************************************/");
57              System.out.println();
58  
59              @SuppressWarnings("rawtypes")
60              Class c;
61              try
62              {
63                  c = Class.forName("org.djunits.unit." + className);
64              }
65              catch (Exception exception)
66              {
67                  System.err.println("Could not find unit " + className);
68                  System.exit(-1);
69                  return;
70              }
71  
72              int l = 0;
73              for (Field f : c.getFields())
74              {
75                  if (Modifier.isPublic(f.getModifiers()) && Modifier.isStatic(f.getModifiers())
76                          && Modifier.isFinal(f.getModifiers()) && !f.getName().equals("SI")
77                          && !f.getName().equals("STANDARD_UNITS"))
78                  {
79                      String n = f.getName();
80                      if (f.getName().contains("ELECTRONVOLT"))
81                      {
82                          n = cs.trim() + "_" + n;
83                      }
84                      l = Math.max(l, n.length());
85                  }
86              }
87  
88              for (Field f : c.getFields())
89              {
90                  if (Modifier.isPublic(f.getModifiers()) && Modifier.isStatic(f.getModifiers())
91                          && Modifier.isFinal(f.getModifiers()) && !f.getName().equals("SI")
92                          && !f.getName().equals("STANDARD_UNITS"))
93                  {
94                      String n = f.getName();
95                      if (f.getName().contains("ELECTRONVOLT"))
96                      {
97                          n = cs.trim() + "_" + n;
98                      }
99  
100                     if (!n.equals("BASE") && !n.equals("DEFAULT"))
101                     {
102                         if (c.getSimpleName().equals("AbsoluteTemperatureUnit") || c.getSimpleName().equals("PositionUnit"))
103                             n = n + "_ABS";
104                         System.out.println(String.format("    %-45s = %s;", c.getSimpleName() + " " + n,
105                                 c.getSimpleName() + "." + f.getName()));
106                     }
107                 }
108             }
109             if (className.contains("Dimensionless"))
110             {
111                 System.out.println(String.format("    %-45s = %s;", c.getSimpleName() + " UNIT",
112                         c.getSimpleName() + ".SI"));
113             }
114         }
115     }
116 
117 }