/**
 * 
 */
package tool.observable;

import java.sql.SQLException;
import java.util.HashSet;
import java.util.Set;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 * @author alexis
 *
 */
public class EasyObservable{
	/**
	 * 
	 */
	private Set<EasyObserver> observers;
	private Object compositingObject;
	
	public EasyObservable(Object compositingObject) {
		observers = new HashSet<>();
		this.compositingObject = compositingObject;
	}
	
	public EasyObservable() {
		observers = new HashSet<>();
		this.compositingObject = this;
	}
	
	public void addObserver(EasyObserver o){
		observers.add(o);
	}
	
	public void deleteObserver(EasyObserver o){
		observers.remove(o);
	}
	
	public void setCompositingObject(Object o){
		compositingObject=o;
	}
	
	public void notifyObservers(Object obj){
		for (EasyObserver o : observers){
			try {
				o.update(compositingObject, obj);
			} catch (SQLException e) {
				JOptionPane.showMessageDialog(new JFrame(), "erreur de connection à la base de donnée, l'operation n'a pu être éxécutée");
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
				JOptionPane.showMessageDialog(new JFrame(), "erreur non géré, l'operation n'a pu être éxécutée");
			}
		}
    }
}
