Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.base/share/classes/sun/util/resources/TimeZoneNamesBundle.java
41159 views
1
/*
2
* Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation. Oracle designates this
8
* particular file as subject to the "Classpath" exception as provided
9
* by Oracle in the LICENSE file that accompanied this code.
10
*
11
* This code is distributed in the hope that it will be useful, but WITHOUT
12
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14
* version 2 for more details (a copy is included in the LICENSE file that
15
* accompanied this code).
16
*
17
* You should have received a copy of the GNU General Public License version
18
* 2 along with this work; if not, write to the Free Software Foundation,
19
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20
*
21
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22
* or visit www.oracle.com if you need additional information or have any
23
* questions.
24
*/
25
26
/*
27
* (C) Copyright Taligent, Inc. 1996, 1997 - All Rights Reserved
28
* (C) Copyright IBM Corp. 1996 - 1998 - All Rights Reserved
29
*
30
* The original version of this source code and documentation
31
* is copyrighted and owned by Taligent, Inc., a wholly-owned
32
* subsidiary of IBM. These materials are provided under terms
33
* of a License Agreement between Taligent and Sun. This technology
34
* is protected by multiple US and International patents.
35
*
36
* This notice and attribution to Taligent may not be removed.
37
* Taligent is a registered trademark of Taligent, Inc.
38
*
39
*/
40
41
package sun.util.resources;
42
43
import java.util.Map;
44
import java.util.LinkedHashMap;
45
import java.util.LinkedHashSet;
46
import java.util.MissingResourceException;
47
import java.util.Objects;
48
import java.util.Set;
49
50
/**
51
* Subclass of <code>ResourceBundle</code> with special
52
* functionality for time zone names. The additional functionality:
53
* <ul>
54
* <li>Preserves the order of entries in the <code>getContents</code>
55
* array for the enumeration returned by <code>getKeys</code>.
56
* <li>Inserts the time zone ID (the key of the bundle entries) into
57
* the string arrays returned by <code>handleGetObject</code>.
58
* </ul>
59
* All <code>TimeZoneNames</code> resource bundles must extend this
60
* class and implement the <code>getContents</code> method.
61
*/
62
public abstract class TimeZoneNamesBundle extends OpenListResourceBundle {
63
64
/**
65
* Maps time zone IDs to locale-specific names.
66
* The value returned is an array of five strings:
67
* <ul>
68
* <li>The time zone ID (same as the key, not localized).
69
* <li>The long name of the time zone in standard time (localized).
70
* <li>The short name of the time zone in standard time (localized).
71
* <li>The long name of the time zone in daylight savings time (localized).
72
* <li>The short name of the time zone in daylight savings time (localized).
73
* <li>The long name of the time zone in generic form (localized).
74
* <li>The short name of the time zone in generic form (localized).
75
* </ul>
76
* The localized names come from the subclasses's
77
* <code>getContents</code> implementations, while the time zone
78
* ID is inserted into the returned array by this method.
79
*/
80
@Override
81
public Object handleGetObject(String key) {
82
Object val = super.handleGetObject(key);
83
if (val instanceof String[]) {
84
String[] contents = (String[]) val;
85
int clen = contents.length;
86
String[] tmpobj = new String[7];
87
tmpobj[0] = key;
88
System.arraycopy(contents, 0, tmpobj, 1, clen);
89
return tmpobj;
90
}
91
return val;
92
}
93
94
/**
95
* Use LinkedHashMap to preserve the order of bundle entries.
96
*/
97
@Override
98
protected <K, V> Map<K, V> createMap(int size) {
99
return new LinkedHashMap<>(size);
100
}
101
102
/**
103
* Use LinkedHashSet to preserve the key order.
104
* @param <E> the type of elements
105
* @return a Set
106
*/
107
@Override
108
protected <E> Set<E> createSet() {
109
return new LinkedHashSet<>();
110
}
111
112
/**
113
* Provides key/value mappings for a specific
114
* resource bundle. Each entry of the array
115
* returned must be an array with two elements:
116
* <ul>
117
* <li>The key, which must be a string.
118
* <li>The value, which must be an array of
119
* four strings:
120
* <ul>
121
* <li>The long name of the time zone in standard time.
122
* <li>The short name of the time zone in standard time.
123
* <li>The long name of the time zone in daylight savings time.
124
* <li>The short name of the time zone in daylight savings time.
125
* </ul>
126
* </ul>
127
*/
128
protected abstract Object[][] getContents();
129
}
130
131