package dfatool.strategy.elements;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.eclipse.core.runtime.IPath;

import patterns.Observer;
import patterns.Subject;
import dfatool.io.AtomIOXML;
import dfatool.io.ChannelIOXML;
import dfatool.io.DatatypeIOXML;
import dfatool.io.IAtomIO;
import dfatool.io.IChannelIO;
import dfatool.io.IDatatypeIO;
import dfatool.io.INetworkIO;
import dfatool.io.IVarIO;
import dfatool.io.NetworkIOXML;
import dfatool.io.VarIOXML;

public class Network extends Subject implements Observer{
	
	
	
	INetworkIO network;
	private static Network instance;
	private boolean isNetworkReady;
	private Network(IPath projectPath){
		network = new NetworkIOXML();
	}
	
	public static Network createNetwork(){
		if(instance == null)
			instance = new Network();
		return instance;
	}

	
	public void updateElement(NetworkElement ne){
		network.updateElement(ne);
		System.out.println("Alerting");
		alertAll();
	}
	
	public void removeElement(NetworkElement ne){
		network.removeElement(new NetworkElement(ne.name, null));
		alertAll();
	}
	
	public List<NetworkElement> getList(){
		return new ArrayList<NetworkElement>(network.listElements());
	}

	@Override
	public void update() {
		network = new NetworkIOXML(Configuration.getInstance().getNetworkFile());
		isNetworkReady = true;
		alertAll();
	}
	
	public boolean isNetworkReady() {
		return isNetworkReady;
	}
	
	public void setNetworkReady(boolean isNetworkReady) {
		this.isNetworkReady = isNetworkReady;
	}
	

}
