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 LinearUnit<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_ATTOMETER;
32
33
34 public static final AreaUnit SQUARE_FEMTOMETER;
35
36
37 public static final AreaUnit SQUARE_PICOMETER;
38
39
40 public static final AreaUnit SQUARE_NANOMETER;
41
42
43 public static final AreaUnit SQUARE_MICROMETER;
44
45
46 public static final AreaUnit SQUARE_MILLIMETER;
47
48
49 public static final AreaUnit SQUARE_METER;
50
51
52 public static final AreaUnit SQUARE_CENTIMETER;
53
54
55 public static final AreaUnit SQUARE_DECIMETER;
56
57
58 public static final AreaUnit SQUARE_DEKAMETER;
59
60
61 public static final AreaUnit SQUARE_HECTOMETER;
62
63
64 public static final AreaUnit SQUARE_KILOMETER;
65
66
67 public static final AreaUnit SQUARE_MEGAMETER;
68
69
70 public static final AreaUnit CENTIARE;
71
72
73 public static final AreaUnit ARE;
74
75
76 public static final AreaUnit HECTARE;
77
78
79 public static final AreaUnit SQUARE_MILE;
80
81
82 public static final AreaUnit SQUARE_NAUTICAL_MILE;
83
84
85 public static final AreaUnit SQUARE_FOOT;
86
87
88 public static final AreaUnit SQUARE_INCH;
89
90
91 public static final AreaUnit SQUARE_YARD;
92
93
94 public static final AreaUnit ACRE;
95
96 static
97 {
98 SI = new AreaUnit(LengthUnit.METER, "AreaUnit.m^2", SI_DERIVED);
99 SQUARE_METER = SI;
100 SQUARE_ATTOMETER = new AreaUnit(LengthUnit.ATTOMETER, "AreaUnit.am^2", SI_DERIVED);
101 SQUARE_FEMTOMETER = new AreaUnit(LengthUnit.FEMTOMETER, "AreaUnit.fm^2", SI_DERIVED);
102 SQUARE_PICOMETER = new AreaUnit(LengthUnit.PICOMETER, "AreaUnit.pm^2", SI_DERIVED);
103 SQUARE_NANOMETER = new AreaUnit(LengthUnit.NANOMETER, "AreaUnit.nm^2", SI_DERIVED);
104 SQUARE_MICROMETER = new AreaUnit(LengthUnit.MICROMETER, "AreaUnit.mum^2", SI_DERIVED);
105 SQUARE_MILLIMETER = new AreaUnit(LengthUnit.MILLIMETER, "AreaUnit.mm^2", SI_DERIVED);
106 SQUARE_CENTIMETER = new AreaUnit(LengthUnit.CENTIMETER, "AreaUnit.cm^2", SI_DERIVED);
107 SQUARE_DECIMETER = new AreaUnit(LengthUnit.DECIMETER, "AreaUnit.dm^2", SI_DERIVED);
108 SQUARE_DEKAMETER = new AreaUnit(LengthUnit.DEKAMETER, "AreaUnit.dam^2", SI_DERIVED);
109 SQUARE_HECTOMETER = new AreaUnit(LengthUnit.HECTOMETER, "AreaUnit.hm^2", SI_DERIVED);
110 SQUARE_KILOMETER = new AreaUnit(LengthUnit.KILOMETER, "AreaUnit.km^2", SI_DERIVED);
111 SQUARE_MEGAMETER = new AreaUnit(LengthUnit.MEGAMETER, "AreaUnit.Mm^2", SI_DERIVED);
112 CENTIARE = new AreaUnit("AreaUnit.ca", OTHER, SQUARE_METER, 1.0);
113 ARE = new AreaUnit("AreaUnit.a", OTHER, SQUARE_METER, 100.0);
114 HECTARE = new AreaUnit("AreaUnit.ha", OTHER, ARE, 100.0);
115 SQUARE_NAUTICAL_MILE = new AreaUnit(LengthUnit.NAUTICAL_MILE, "AreaUnit.Nmi^2", OTHER);
116 SQUARE_MILE = new AreaUnit(LengthUnit.MILE, "AreaUnit.mi^2", IMPERIAL);
117 SQUARE_FOOT = new AreaUnit(LengthUnit.FOOT, "AreaUnit.ft^2", IMPERIAL);
118 SQUARE_INCH = new AreaUnit(LengthUnit.INCH, "AreaUnit.in^2", IMPERIAL);
119 SQUARE_YARD = new AreaUnit(LengthUnit.YARD, "AreaUnit.yd^2", IMPERIAL);
120 ACRE = new AreaUnit("AreaUnit.ac", IMPERIAL, SQUARE_YARD, 4840.0);
121 }
122
123
124
125
126
127
128
129 private AreaUnit(final LengthUnit lengthUnit, final String abbreviationKey, final UnitSystem unitSystem)
130 {
131 super(abbreviationKey, unitSystem, SQUARE_METER, lengthUnit.getScaleFactor() * lengthUnit.getScaleFactor());
132 this.lengthUnit = lengthUnit;
133 }
134
135
136
137
138
139
140
141
142 public AreaUnit(final LengthUnit lengthUnit, final String name, final String abbreviation, final UnitSystem unitSystem)
143 {
144 super(name, abbreviation, unitSystem, SQUARE_METER, lengthUnit.getScaleFactor() * lengthUnit.getScaleFactor());
145 this.lengthUnit = lengthUnit;
146 }
147
148
149
150
151
152
153
154
155
156 private AreaUnit(final String abbreviationKey, final UnitSystem unitSystem, final AreaUnit referenceUnit,
157 final double scaleFactorToReferenceUnit)
158 {
159 super(abbreviationKey, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
160 this.lengthUnit = referenceUnit.getLengthUnit();
161 }
162
163
164
165
166
167
168
169
170
171
172 public AreaUnit(final String name, final String abbreviation, final UnitSystem unitSystem, final AreaUnit referenceUnit,
173 final double scaleFactorToReferenceUnit)
174 {
175 super(name, abbreviation, unitSystem, referenceUnit, scaleFactorToReferenceUnit);
176 this.lengthUnit = referenceUnit.getLengthUnit();
177 }
178
179
180
181
182 public final LengthUnit getLengthUnit()
183 {
184 return this.lengthUnit;
185 }
186
187
188 @Override
189 public final AreaUnit getStandardUnit()
190 {
191 return SQUARE_METER;
192 }
193
194
195 @Override
196 public final String getSICoefficientsString()
197 {
198 return "m2";
199 }
200
201 }