Bestimmung der Zeitpunkte von Ereignissen
ulrich
2023-03-23 d20d989f5495492f1258c8313db7c19b429111a3
commit | author | age
66d68b 1 /*
U 2   Zeitrechnung - a class library to determine calendar events
3   Copyright (c) 1984-2023 Ulrich Hilger, http://uhilger.de
4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU Affero General Public License as published by
7   the Free Software Foundation, either version 3 of the License, or
8   (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU Affero General Public License for more details.
14
15   You should have received a copy of the GNU Affero General Public License
16   along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18 package de.uhilger.zeitrechnung;
19
20 /**
21  * Ein geographischer Ort bestehend aus geographischer Laenge, Breite 
22  * sowie Hoehe und Zeitzone.
23  * 
24  * @author Ulrich Hilger
25  */
26 public class Ort {
27
28   /** name dieses Ortes */
29   private String name;
30   /** geogr. Breite dieses Ortes */
31   private double breite;
32   /** geogr. Laenge dieses Ortes */
33   private double laenge;
34   /** Hoehe dieses Ortes */
35   private double hoehe;
36   /** Zeitzone dieses Ortes */
37   private double zeitzone;
38
39   public static final String TAG_ORT = "ort";
40   public static final String ATTR_NAME = "name";
41   public static final String ATTR_LATITUDE = "lat";
42   public static final String ATTR_LONGITUDE = "long";
43   public static final String ATTR_ELEVATION = "elev";
44   public static final String ATTR_TIME_ZONE = "zone";
45   
46   /**
47    * Ein Objekt der Klasse Ort erzeugen
48    */
49   public Ort() {
50   }
51
52   /**
53    * Ein Objekt der Klasse Ort mit Vorbelegungen erzeugen
54    * 
55    * @param name  Name des Ortes
56    * @param breite  geographische Breite des Ortes (-90=Suedpol 0=Aequator +90=Nordpol)
57    * @param laenge   geographische Laenge des Ortes 
58    *       (-179=westlich von Greenwich 0=Greenwich +179=Oestlich von Greenwich +-180=Datumslinie)
59    * @param hoehe  die Hoehe des Ortes in Metern ueber dem Meer
60    * @param zeitzone  die Zeitzone des Ortes in Stunden vor oder nach Greenwich-Zeit
61    */
62   public Ort(String name, double breite, double laenge, double hoehe, double zeitzone) {
63     this.name = name;
64     this.breite = breite;
65     this.laenge = laenge;
66     this.hoehe = hoehe;
67     this.zeitzone = zeitzone;
68   }
69
70   /**
71    * Den Namen des Ortes angeben
72    * @param name the name
73    */
74   public void setName(String name) {
75     this.name = name;
76   }
77
78   /**
79    * Die geographische Breite des Ortes angeben
80    * @param breite    geographische Breite des Ortes (-90=Suedpol 0=Aequator +90=Nordpol)
81    * als Dezimalzahl. Eine Angaben in Grad muss zuvor umgerechnet werden 
82    * mit Minute/60 Sekunde/3600
83    */
84   public void setBreite(double breite) {
85     this.breite = breite;
86   }
87
88   /**
89    * Die geographische Laenge des Ortes angeben
90    * @param longitude  geographische Laenge des Ortes 
91    *       (-179=westlich von Greenwich 0=Greenwich +179=Oestlich von Greenwich +-180=Datumslinie)
92    * als Dezimalzahl. Eine Angaben in Grad muss zuvor umgerechnet werden 
93    * mit Minute/60 Sekunde/3600
94    */
95   public void setLaenge(double longitude) {
96     this.laenge = longitude;
97   }
98
99   /**
100    * Die Hoehe des Ortes angeben
101    * @param elevation die Hoehe des Ortes in Metern ueber dem Meer
102    */
103   public void setHoehe(double elevation) {
104     this.hoehe = elevation;
105   }
106
107   /**
108    * Die Zeitzone des Ortes angeben
109    * @param timeZone die Zeitzone des Ortes in Stunden vor (-) oder nach (+) Universal Time (UT)
110    */
111   public void setZeitzone(double timeZone) {
112     this.zeitzone = timeZone;
113   }
114
115   /**
116    * Den Namen des Ortes ermitteln
117    * @return  Name des Ortes
118    */
119   public String getName() {
120     return name;
121   }
122
123   /**
124    * Die geographische Laenge des Ortes ermitteln
125    * @return    geographische Laenge des Ortes 
126    *       (-179=westlich von Greenwich 0=Greenwich +179=Oestlich von Greenwich +-180=Datumslinie)
127    * als Dezimalzahl
128    */
129   public double getLaenge() {
130     return laenge;
131   }
132
133   /**
134    * Die geographische Breite des Ortes ermitteln
135    * @return  geographische Breite des Ortes (-90=Suedpol 0=Aequator +90=Nordpol)
136    * als Dezimalzahl. 
137    */
138   public double getBreite() {
139     return breite;
140   }
141
142   /**
143    * Die Hoehe des Ortes ermitteln
144    * @return  die Hoehe des Ortes in Metern ueber dem Meer
145    */
146   public double getHoehe() {
147     return hoehe;
148   }
149
150   /**
151    * Die Zeitzone des Ortes ermitteln
152    * @return die Zeitzone des Ortes in Stunden vor (-) oder nach (+) Universal Time (UT)
153    */
154   public double getZeitzone() {
155     return zeitzone;
156   }
157
158   /**
159    * den Ort als String-Objekt ermittln
160    * @return  dieses Objekt als String
161    */
162   public String toString() {
163     return getName();
164   }
165
166   /**
167    * Feststellen, ob dieser Ort gleich einem anderen Ort ist.
168    * 
169    * @param obj ein anderes Objekt, das mit diesem Objekt verglichen werden soll
170    * @return true, wenn die Objekte gleich sind, false wenn nicht
171    */
172   public boolean equals(Object obj) {
173     boolean isEqual = false;
174     if (this == obj) {
175       isEqual = true;
176     } else if (obj instanceof Ort) {
177       Ort o = (Ort) obj;
178       isEqual =
179         o.getBreite() == breite &&
180         o.getLaenge() == laenge &&
181         o.getHoehe() == hoehe &&
182         o.getZeitzone() == zeitzone;
183     }
184     return isEqual;
185   }
186
187 }