Package fr.imag.adele.apam.test.lights.panel

Source Code of fr.imag.adele.apam.test.lights.panel.LightManagerTester

/**
* Copyright 2011-2013 Universite Joseph Fourier, LIG, ADELE team
*   Licensed under the Apache License, Version 2.0 (the "License");
*   you may not use this file except in compliance with the License.
*   You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
*   Unless required by applicable law or agreed to in writing, software
*   distributed under the License is distributed on an "AS IS" BASIS,
*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*   See the License for the specific language governing permissions and
*   limitations under the License.
*
* DeviceManagerPanel.java - 3 juil. 2013
*/
package fr.imag.adele.apam.test.lights.panel;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fr.imag.adele.apam.ApamResolver;
import fr.imag.adele.apam.CST;
import fr.imag.adele.apam.Instance;
import fr.imag.adele.apam.Link;
import fr.imag.adele.apam.test.lights.devices.BinaryLight;
import fr.imag.adele.apam.test.lights.devices.SimpleButton;
import fr.imag.adele.apam.test.lights.devices.messages.LightStatusChanged;

/**
* @author thibaud
*
*/
public class LightManagerTester implements ActionListener {

    Set<BinaryLight> theLights;

    Set<SimpleButton> theButtons;

    JFrame myFrame;
    JButton btn1;
    JButton btn2;
    JButton btn3;

    private int toShow;

    private static Logger logger = LoggerFactory
      .getLogger(LightManagerTester.class);

    /**
     *
     */
    public LightManagerTester() {
  super();
    }

    /*
     * (non-Javadoc)
     *
     * @see
     * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
     */
    @Override
    public void actionPerformed(ActionEvent e) {
  try {
      if (e.getSource() == btn1) {
    testMyKitchenBinding();
      } else if (e.getSource() == btn2) {
    testButtonKitchen();
      } else if (e.getSource() == btn3) {
    testButtonLiving();
      }
  } catch (Exception exc) {
      exc.printStackTrace();
  }
    }

    public void aLightStatusHasChanged(LightStatusChanged event) {
  logger.debug("aLightStatusHasChanged(LightStatusChanged event, light  on : "
    + event.isLightOn() + ")");
  rebuildLightsColumn();
    }

    /**
     * CallBack method on dependency resolution
     *
     * @param button
     */

    public void newButton(Instance inst) {
  SimpleButton btn = (SimpleButton) inst.getServiceObject();
  logger.debug("newButton(SimpleButton button : " + btn.getName()
    + " in " + btn.getLocation() + ")");
  rebuildButtonsColumn();
    }

    /**
     * CallBack method on dependency resolution
     *
     * @param light
     */
    public void newLight(Instance inst) {
  BinaryLight light = (BinaryLight) inst.getServiceObject();
  logger.debug("newLight(Instance light : " + light.getName() + " in "
    + light.getLocation() + ")");
  rebuildLightsColumn();
    }

    private void rebuildButtonsColumn() {
      logger.debug("rebuildButtonsColumn(), found " + ((theButtons==null)?0:theButtons.size())
    + " buttons to add to the list");

  if (theButtons != null && theButtons.size() > 0) {
      Iterator<SimpleButton> it = theButtons.iterator();
      while (it.hasNext()) {
    SimpleButton btn = it.next();
    logger.debug("rebuildButtonsColumn() -> " + btn.getName()
      + " is in " + btn.getLocation());

      }
  }
    }

    private void rebuildLightsColumn() {
  logger.debug("rebuildLightsColumn(), found " + ((theLights==null)?0:theLights.size())
    + " lights to add to the list");

  if (theLights != null && theLights.size() > 0) {
      Iterator<BinaryLight> it = theLights.iterator();
      while (it.hasNext()) {
    BinaryLight light = it.next();
    logger.debug("rebuildLightsColumn() -> " + light.getName()
      + " is in " + light.getLocation());

      }
  }
    }

    /**
     * CallBack method on dependency resolution
     */
    public void removeButton(Instance inst) {
  SimpleButton btn = (SimpleButton) inst.getServiceObject();
  logger.debug("removeButton(SimpleButton button : " + btn.getName()
    + " in " + btn.getLocation() + ")");
  rebuildButtonsColumn();
    }

    /**
     * CallBack method on dependency resolution
     */
    public void removeLight(Instance inst) {
  BinaryLight light = (BinaryLight) inst.getServiceObject();
  logger.debug("removeLight(Instance light : " + light.getName() + " in "
    + light.getLocation() + ")");
  rebuildLightsColumn();
    }

    public void show() {
  if (toShow > 0) {
      myFrame.setVisible(true);
  } else {
      myFrame.setVisible(false);
  }

    }

    private void shutDownLights() {
  for (BinaryLight light : theLights) {
      light.setLightStatus(false);
  }
    }

    public void started() {
  logger.debug("started()");

  myFrame = new JFrame();
  myFrame.setLayout(new BoxLayout(myFrame.getContentPane(),
    BoxLayout.Y_AXIS));
  btn1 = new JButton("test 1: My Kitchen relations (default)");
  btn2 = new JButton("test 2: press Button Kitchen");
  btn3 = new JButton("test 3: press Button Living");
  btn1.addActionListener(this);
  btn2.addActionListener(this);
  btn3.addActionListener(this);
  myFrame.add(btn1);
  myFrame.add(btn2);
  myFrame.add(btn3);

  rebuildLightsColumn();
  rebuildButtonsColumn();
  myFrame.pack();
  if (toShow > 0) {
      myFrame.setVisible(true);
  }

    }

    public void stopped() {
  logger.debug("stopped()");
    }

    public void testButtonKitchen() throws Exception {
  shutDownLights();
  try {
      Thread.sleep(200);
  } catch (InterruptedException e) {
      logger.error("Test stopped");
      e.printStackTrace();
  }
  testPressButton("kitchen");
  try {
      Thread.sleep(200);
  } catch (InterruptedException e) {
      logger.error("Test stopped");
      e.printStackTrace();
  }
  String error = "";

  for (BinaryLight light : theLights) {
      if (light.getLocation().equals("kitchen")) {
    if (!light.isLightOn()) {
        error += light.getName() + " in " + light.getLocation()
          + " is off (should be on);";
    }
      } else if (light.isLightOn()) {
    error += light.getName() + " in " + light.getLocation()
      + " is off (should be on);";
      }
  }
  if (!error.equals("")) {
      logger.error("Light status incorrect : " + error);
      throw new Exception("Light status incorrect : " + error);
  }
    }

    public void testButtonLiving() throws Exception {
  shutDownLights();
  try {
      Thread.sleep(200);
  } catch (InterruptedException e) {
      logger.error("Test stopped");
      e.printStackTrace();
  }
  testPressButton("living");
  try {
      Thread.sleep(200);
  } catch (InterruptedException e) {
      logger.error("Test stopped");
      e.printStackTrace();
  }
  String error = "";

  for (BinaryLight light : theLights) {
      // no light should be on because there is now Lighting application
      // in the living
      if (light.isLightOn()) {
    error += light.getName() + " in " + light.getLocation()
      + " is on (should be off);";
      }
  }
  if (!error.equals("")) {
      logger.error("Light status incorrect : " + error);
      throw new Exception("Light status incorrect : " + error);
  }
    }

    @Deprecated
    public void testMyKitchenBinding() {
  logger.info("testMyKitchenBinding()");
  ApamResolver resolver = CST.apamResolver;
  Instance lightApplication = resolver.findInstByName(null, "myKitchen");

  Set<String> theoricLinks = new HashSet<String>();
  theoricLinks.add("buttonKitchen");
  theoricLinks.add("lightKitchen");

  Set<Link> listRelations = lightApplication.getRawLinks();
  Iterator<Link> it = listRelations.iterator();
  while (it.hasNext()) {
      Link rel = it.next();
      logger.debug("testMyKitchenBinding(), link to "
        + rel.getDestination().getName());
      // Should find one binding with buttonKitchen and one binding with a
      // lightKitchen
      if (theoricLinks.contains(rel.getDestination().getName())) {
    theoricLinks.remove(rel.getDestination().getName());
      } else {
    logger.error("testMyKitchenBinding() -> this link should not exists");
      }
  }
  if (theoricLinks.size() > 0) {
      logger.error("testMyKitchenBinding() -> not all links completed");
  }

    }

    public void testPressButton(String location) {
  logger.info("testPressButton(), Location button to test " + location);
  if (theButtons != null && theButtons.size() > 0) {
      boolean found = false;
      Iterator<SimpleButton> it = theButtons.iterator();
      while (it.hasNext() && !found) {
    SimpleButton btn = it.next();
    if (btn.getLocation().equals(location)) {
        logger.debug("testPressButton(), found button to test");
        found = true;
        btn.pressButton();
    }
      }
  }
    }

}
TOP

Related Classes of fr.imag.adele.apam.test.lights.panel.LightManagerTester

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.