1 7 8 package org.jdesktop.dataset; 9 10 import java.beans.PropertyChangeListener ; 11 import java.beans.PropertyChangeSupport ; 12 import java.util.logging.Level ; 13 import java.util.logging.Logger ; 14 15 22 public abstract class DataConnection { 23 26 private static final Logger LOG = Logger.getLogger(DataConnection.class.getName()); 27 28 32 private PropertyChangeSupport pcs = new PropertyChangeSupport (this); 33 34 39 private boolean connected = false; 40 41 60 public void setConnected(boolean b) { 61 if (b && !connected) { 62 try { 63 LOG.fine("Attempting to connect to the data store"); 64 connect(); 65 connected = true; 66 LOG.fine("Connected to the data store, firing property change event"); 67 pcs.firePropertyChange("connected", false, true); 68 } catch (Exception e) { 69 LOG.log(Level.SEVERE, "Failed to connect to the data store.", e); 70 connected = false; 73 } 74 } else if (!b && connected) { 75 try { 76 LOG.fine("Attempting to disconnect from the data store"); 77 disconnect(); 78 } catch (Exception e) { 79 LOG.log(Level.WARNING, "Failed to physically disconnect from the data store, " + 80 "but will continue to logically disconnect from the data store.", e); 81 e.printStackTrace(); 82 } finally { 83 connected = false; 84 LOG.fine("Logically disconnected from the data store, firing property change event"); 85 pcs.firePropertyChange("connected", true, false); 86 } 87 } 88 } 89 90 93 public boolean isConnected() { 94 return connected; 95 } 96 97 106 protected abstract void connect() throws Exception ; 107 108 116 protected abstract void disconnect() throws Exception ; 117 118 122 public void addPropertyChangeListener(PropertyChangeListener listener) { 123 pcs.addPropertyChangeListener(listener); 124 } 125 126 131 public void addPropertyChangeListener(String propertyName, 132 PropertyChangeListener listener) { 133 pcs.addPropertyChangeListener(propertyName, listener); 134 } 135 136 public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { 137 pcs.removePropertyChangeListener(propertyName, listener); 138 } 139 140 } | Popular Tags |