1 package org.djunits.unit;
2
3 import static org.djunits.unit.unitsystem.UnitSystem.IMPERIAL;
4 import static org.djunits.unit.unitsystem.UnitSystem.OTHER;
5 import static org.djunits.unit.unitsystem.UnitSystem.SI_DERIVED;
6
7 import org.djunits.unit.unitsystem.UnitSystem;
8
9
10
11
12
13
14
15
16
17
18
19 public class AreaUnit extends Unit<AreaUnit>
20 {
21
22 private static final long serialVersionUID = 20140607L;
23
24
25 private final LengthUnit lengthUnit;
26
27
28 public static final AreaUnit SI;
29
30
31 public static final AreaUnit SQUARE_METER;
32
33
34 public static final AreaUnit SQUARE_KM;
35
36
37 public static final AreaUnit SQUARE_CENTIMETER;
38
39
40 public static final AreaUnit SQUARE_MILLIMETER;
41
42
43 public static final AreaUnit ARE;
44
45
46 public static final AreaUnit HECTARE;
47
48
49 public static final AreaUnit SQUARE_MILE;
50
51
52 public static final AreaUnit SQUARE_FOOT;
53
54
55 public static final AreaUnit SQUARE_INCH;
56
57
58 public static final AreaUnit SQUARE_YARD;
59
60
61 public static final AreaUnit ACRE;
62
63 static
64 {
65 SI = new AreaUnit(LengthUnit.METER, "AreaUnit.square_meter", "AreaUnit.m^2", SI_DERIVED, true);
66 SQUARE_METER = SI;
67 SQUARE_KM = new AreaUnit(LengthUnit.KILOMETER, "AreaUnit.square_kilometer", "AreaUnit.km^2", SI_DERIVED, true);
68 SQUARE_CENTIMETER =
69 new AreaUnit(LengthUnit.CENTIMETER, "AreaUnit.square_centimeter", "AreaUnit.cm^2", SI_DERIVED, true);
70 SQUARE_MILLIMETER =
71 new AreaUnit(LengthUnit.MILLIMETER, "AreaUnit.square_millimeter", "AreaUnit.mm^2", SI_DERIVED, true);
72 ARE = new AreaUnit("AreaUnit.are", "AreaUnit.a", OTHER, SQUARE_METER, 100.0, true);
73 HECTARE = new AreaUnit("AreaUnit.hectare", "AreaUnit.ha", OTHER, ARE, 100.0, true);
74 SQUARE_MILE = new AreaUnit(LengthUnit.MILE, "AreaUnit.square_mile", "AreaUnit.mi^2", IMPERIAL, true);
75 SQUARE_FOOT = new AreaUnit(LengthUnit.FOOT, "AreaUnit.square_foot", "AreaUnit.ft^2", IMPERIAL, true);
76 SQUARE_INCH = new AreaUnit(LengthUnit.INCH, "AreaUnit.square_inch", "AreaUnit.in^2", IMPERIAL, true);
77 SQUARE_YARD = new AreaUnit(LengthUnit.YARD, "AreaUnit.square_yard", "AreaUnit.yd^2", IMPERIAL, true);
78 ACRE = new AreaUnit("AreaUnit.acre", "AreaUnit.ac", IMPERIAL, SQUARE_YARD, 4840.0, true);
79 }
80
81
82
83
84
85
86
87
88
89
90 private AreaUnit(final LengthUnit lengthUnit, final String nameOrNameKey,
91 final String abbreviationOrAbbreviationKey, final UnitSystem unitSystem, final boolean standardUnit)
92 {
93 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, SQUARE_METER, lengthUnit
94 .getConversionFactorToStandardUnit()
95 * lengthUnit.getConversionFactorToStandardUnit(), standardUnit);
96 this.lengthUnit = lengthUnit;
97 }
98
99
100
101
102
103
104
105
106 public AreaUnit(final LengthUnit lengthUnit, final String name, final String abbreviation,
107 final UnitSystem unitSystem)
108 {
109 this(lengthUnit, name, abbreviation, unitSystem, false);
110 }
111
112
113
114
115
116
117
118
119
120
121
122 private AreaUnit(final String nameOrNameKey, final String abbreviationOrAbbreviationKey,
123 final UnitSystem unitSystem, final AreaUnit referenceUnit, final double conversionFactorToReferenceUnit,
124 final boolean standardUnit)
125 {
126 super(nameOrNameKey, abbreviationOrAbbreviationKey, unitSystem, referenceUnit, conversionFactorToReferenceUnit,
127 standardUnit);
128 this.lengthUnit = referenceUnit.getLengthUnit();
129 }
130
131
132
133
134
135
136
137
138
139 public AreaUnit(final String name, final String abbreviation, final UnitSystem unitSystem,
140 final AreaUnit referenceUnit, final double conversionFactorToReferenceUnit)
141 {
142 this(name, abbreviation, unitSystem, referenceUnit, conversionFactorToReferenceUnit, false);
143 }
144
145
146
147
148 public final LengthUnit getLengthUnit()
149 {
150 return this.lengthUnit;
151 }
152
153
154 @Override
155 public final AreaUnit getStandardUnit()
156 {
157 return SQUARE_METER;
158 }
159
160
161 @Override
162 public final String getSICoefficientsString()
163 {
164 return "m2";
165 }
166
167 }