package clock01;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Horloge implements Observable
{
	ArrayList<Observateur> mesObservateurs = new ArrayList<Observateur>();
	private boolean fonctionne = true;
	private Trotteuse maTrotteuse = new Trotteuse();
	private GregorianCalendar monCalendrier = new GregorianCalendar();
	
	public Horloge()
	{
		maTrotteuse.start();
	}
	
	public String toString()
	{
		String maChaine = monCalendrier.get(Calendar.DAY_OF_MONTH) + "/" +
				(monCalendrier.get(Calendar.MONTH) + 1) + "/" +
				monCalendrier.get(Calendar.YEAR) + " " +
				monCalendrier.get(Calendar.HOUR_OF_DAY) + ":" +
				monCalendrier.get(Calendar.MINUTE) + ":" +
				monCalendrier.get(Calendar.SECOND);
		return (maChaine);
	}
	
	private class Trotteuse extends Thread
	{
		@Override
		public void run()
		{
			while (fonctionne)
			{
				try
				{
					Thread.sleep(5000);
				}
				catch (InterruptedException e)
				{
					e.printStackTrace();
				}
				monCalendrier.setTimeInMillis(System.currentTimeMillis());
				updateObservateurs();
			}
		}
	}

	@Override
	public void addObservateur(Observateur obs)
	{
		mesObservateurs.add(obs);
	}

	@Override
	public void updateObservateurs()
	{
		// TODO Auto-generated method stub
		for(Observateur obs : mesObservateurs)
		{
			obs.metAjour();
		}
	}
}
