Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/src/java.sql.rowset/share/classes/javax/sql/rowset/serial/SerialDatalink.java
40948 views
1
/*
2
* Copyright (c) 2003, 2019, 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
package javax.sql.rowset.serial;
27
28
import java.sql.*;
29
import java.io.*;
30
import java.net.URL;
31
32
33
/**
34
* A serialized mapping in the Java programming language of an SQL
35
* <code>DATALINK</code> value. A <code>DATALINK</code> value
36
* references a file outside of the underlying data source that the
37
* data source manages.
38
* <P>
39
* <code>RowSet</code> implementations can use the method <code>RowSet.getURL</code>
40
* to retrieve a <code>java.net.URL</code> object, which can be used
41
* to manipulate the external data.
42
* <pre>
43
* java.net.URL url = rowset.getURL(1);
44
* </pre>
45
*
46
* <h2> Thread safety </h2>
47
*
48
* A SerialDatalink is not safe for use by multiple concurrent threads. If a
49
* SerialDatalink is to be used by more than one thread then access to the
50
* SerialDatalink should be controlled by appropriate synchronization.
51
*
52
* @since 1.5
53
*/
54
public class SerialDatalink implements Serializable, Cloneable {
55
56
/**
57
* The extracted URL field retrieved from the DATALINK field.
58
* @serial
59
*/
60
private URL url;
61
62
/**
63
* The SQL type of the elements in this <code>SerialDatalink</code>
64
* object. The type is expressed as one of the constants from the
65
* class <code>java.sql.Types</code>.
66
* @serial
67
*/
68
private int baseType;
69
70
/**
71
* The type name used by the DBMS for the elements in the SQL
72
* <code>DATALINK</code> value that this SerialDatalink object
73
* represents.
74
* @serial
75
*/
76
private String baseTypeName;
77
78
/**
79
* Constructs a new <code>SerialDatalink</code> object from the given
80
* <code>java.net.URL</code> object.
81
*
82
* @param url the {@code URL} to create the {@code SerialDataLink} from
83
* @throws SerialException if url parameter is a null
84
*/
85
public SerialDatalink(URL url) throws SerialException {
86
if (url == null) {
87
throw new SerialException("Cannot serialize empty URL instance");
88
}
89
this.url = url;
90
}
91
92
/**
93
* Returns a new URL that is a copy of this <code>SerialDatalink</code>
94
* object.
95
*
96
* @return a copy of this <code>SerialDatalink</code> object as a
97
* <code>URL</code> object in the Java programming language.
98
* @throws SerialException if the <code>URL</code> object cannot be de-serialized
99
*/
100
public URL getDatalink() throws SerialException {
101
102
URL aURL = null;
103
104
try {
105
aURL = new URL((this.url).toString());
106
} catch (java.net.MalformedURLException e) {
107
throw new SerialException("MalformedURLException: " + e.getMessage());
108
}
109
return aURL;
110
}
111
112
/**
113
* Compares this {@code SerialDatalink} to the specified object.
114
* The result is {@code true} if and only if the argument is not
115
* {@code null} and is a {@code SerialDatalink} object whose URL is
116
* identical to this object's URL
117
*
118
* @param obj The object to compare this {@code SerialDatalink} against
119
*
120
* @return {@code true} if the given object represents a {@code SerialDatalink}
121
* equivalent to this SerialDatalink, {@code false} otherwise
122
*
123
*/
124
public boolean equals(Object obj) {
125
if (this == obj) {
126
return true;
127
}
128
if (obj instanceof SerialDatalink) {
129
SerialDatalink sdl = (SerialDatalink) obj;
130
return url.equals(sdl.url);
131
}
132
return false;
133
}
134
135
/**
136
* Returns a hash code for this {@code SerialDatalink}. The hash code for a
137
* {@code SerialDatalink} object is taken as the hash code of
138
* the {@code URL} it stores
139
*
140
* @return a hash code value for this object.
141
*/
142
public int hashCode() {
143
return 31 + url.hashCode();
144
}
145
146
/**
147
* Returns a clone of this {@code SerialDatalink}.
148
*
149
* @return a clone of this SerialDatalink
150
*/
151
public Object clone() {
152
try {
153
SerialDatalink sdl = (SerialDatalink) super.clone();
154
return sdl;
155
} catch (CloneNotSupportedException ex) {
156
// this shouldn't happen, since we are Cloneable
157
throw new InternalError();
158
}
159
}
160
161
/**
162
* readObject and writeObject are called to restore the state
163
* of the {@code SerialDatalink}
164
* from a stream. Note: we leverage the default Serialized form
165
*/
166
167
/**
168
* The identifier that assists in the serialization of this
169
* {@code SerialDatalink} object.
170
*/
171
static final long serialVersionUID = 2826907821828733626L;
172
}
173
174