Skip to content
Snippets Groups Projects
Esecutore.java 2.13 KiB
Newer Older
  • Learn to ignore specific revisions
  • A C's avatar
    A C committed
    package code;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileReader;
    import java.io.IOException;
    import java.time.LocalTime;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Timer;
    import java.util.TimerTask;
    
    A C's avatar
    A C committed
    import java.util.concurrent.Executor;
    
    A C's avatar
    A C committed
    
    import org.eclipse.paho.client.mqttv3.MqttException;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    
    A C's avatar
    A C committed
    public class Esecutore /* extends Thread */ {
    
    A C's avatar
    A C committed
    
    	private final Luci luci;
    
    A C's avatar
    A C committed
    	static Timer timer;
    	public Boolean running;
    	private static Esecutore istanza = null;//
    	static ArrayList<Luce> j = new ArrayList<Luce>();
    	// arraylist mi serve per sapere se una luce era accesa manualmente. Se la era
    	// non la spengo quando scade il timer
    
    	private Esecutore(Luci luci) throws IOException, JSONException {
    
    A C's avatar
    A C committed
    		this.luci = luci;
    	}
    
    
    A C's avatar
    A C committed
    	public static Esecutore istanziatore(Luci l) throws IOException, JSONException {
    		if (istanza == null) {
    			istanza = new Esecutore(l);
    		}
    		return istanza;
    	}
    
    
    A C's avatar
    A C committed
    	class AccendiTutto extends TimerTask {
    
    A C's avatar
    A C committed
    		// boolean running=false;
    		int durata = 5;
    		ArrayList<Luce> j;
    
    		public AccendiTutto(ArrayList j) {
    			this.j = j;
    		}
    
    
    A C's avatar
    A C committed
    		public void run() {
    
    A C's avatar
    A C committed
    
    			System.out.println("-----" + durata);
    			if (durata > 0) {
    				String req = "{cmd:1}";
    				for (Luce k : Luci.luciList) {
    					try {
    						luci.sendMqttMessage(Luci.getMqttTree("to", "gpio/" + k.getOUT()), req);
    
    A C's avatar
    A C committed
    					} catch (MqttException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    
    A C's avatar
    A C committed
    
    				}
    				durata--;
    			} else {
    				System.out.println("FINE!" + running);
    				String req = "{cmd:0}";
    				for (Luce k : Luci.luciList) {
    					if (!j.contains(k)) {
    						k.setStato(false);
    						try {
    							luci.sendMqttMessage(Luci.getMqttTree("to", "gpio/" + k.getOUT()), req);
    						} catch (MqttException e) {
    							// TODO Auto-generated catch block
    							e.printStackTrace();
    						}
    					}
    				}
    				j.clear();
    				timer.cancel();
    				timer.purge();
    				Subscriber.runningEsec = false;
    			}
    
    A C's avatar
    A C committed
    		}
    
    A C's avatar
    A C committed
    	}
    
    
    A C's avatar
    A C committed
    	public void run(Boolean running) {
    
    
    A C's avatar
    A C committed
    		timer = new Timer();
    
    A C's avatar
    A C committed
    		AccendiTutto a = new AccendiTutto(j);
    		this.running = running;
    		timer.schedule(a, 0, 1000);
    
    A C's avatar
    A C committed
    	}
    
    }