@@ -232,17 +232,60 @@ public void close(Collection<String> names) {
232232 *
233233 * @param geoPackage
234234 * GeoPackage
235+ * @since 3.1.0
236+ */
237+ public void close (T geoPackage ) {
238+ if (geoPackage != null ) {
239+ try {
240+ geoPackage .close ();
241+ } catch (Exception e ) {
242+ logger .log (Level .SEVERE , "Error closing GeoPackage: "
243+ + geoPackage .getName (), e );
244+ if (!closeQuietly ) {
245+ throw e ;
246+ }
247+ }
248+ }
249+ }
250+
251+ /**
252+ * Close the GeoPackage if it is cached (same GeoPackage instance)
253+ *
254+ * @param geoPackage
255+ * GeoPackage
256+ * @return true if closed
257+ * @since 3.1.0
235258 */
236- private void close (T geoPackage ) {
237- try {
238- geoPackage .close ();
239- } catch (Exception e ) {
240- logger .log (Level .SEVERE ,
241- "Error closing GeoPackage: " + geoPackage .getName (), e );
242- if (!closeQuietly ) {
243- throw e ;
259+ public boolean closeIfCached (T geoPackage ) {
260+ boolean closed = false ;
261+ if (geoPackage != null ) {
262+ T cached = get (geoPackage .getName ());
263+ if (cached != null && cached == geoPackage ) {
264+ closed = close (geoPackage .getName ());
265+ }
266+ }
267+ return closed ;
268+ }
269+
270+ /**
271+ * Close the GeoPackage if it is not cached (GeoPackage not cached or
272+ * different instance)
273+ *
274+ * @param geoPackage
275+ * GeoPackage
276+ * @return true if closed
277+ * @since 3.1.0
278+ */
279+ public boolean closeIfNotCached (T geoPackage ) {
280+ boolean closed = false ;
281+ if (geoPackage != null ) {
282+ T cached = get (geoPackage .getName ());
283+ if (cached == null || cached != geoPackage ) {
284+ close (geoPackage );
285+ closed = true ;
244286 }
245287 }
288+ return closed ;
246289 }
247290
248291}
0 commit comments