/**
  * Metodo responsavel por gerar operacoes aleatorias
  *
  * @return
  */
 public static Operacao gerarOperacao() {
   Operacao op = new Operacao();
   op.setDescricao(EnumEmpresa.values()[new Random().nextInt(3)].getDescricao());
   op.setQuantidadeLotes((long) new Random().nextInt(5));
   op.setTipoOperacao(EnumTipoOperacao.values()[new Random().nextInt(2)]);
   op.setValorLote(new BigDecimal(new Random().nextInt(130)));
   return op;
 }
  public static void main(String[] args) {

    ActiveMQConnectionFactory connectionFactory =
        new ActiveMQConnectionFactory("admin", "password", BROKER_URL);
    Connection connection = null;

    try {

      connection = connectionFactory.createConnection();
      connection.setClientID("duravel");
      connection.start();

      Session session = connection.createSession(NON_TRANSACTED, Session.AUTO_ACKNOWLEDGE);

      Destination destination;
      MessageProducer producer = null;
      for (int i = 0; i < NUM_MESSAGES_TO_SEND; i++) {

        System.out.println("Sending message #" + i);

        Operacao op = gerarOperacao();
        destination = session.createTopic(op.getDescricao());
        producer = session.createProducer(destination);

        ObjectMessage message = session.createObjectMessage(op);

        swingBasic.start(op);

        producer.send(message);
        Thread.sleep(DELAY);
      }

      producer.send(session.createTextMessage("END"));

      producer.close();
      session.close();

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (connection != null) {
        try {
          connection.close();
        } catch (JMSException e) {
          e.printStackTrace();
        }
      }
    }
  }
  public static void main(String[] args) {

    Operacao operacao1 = new Soma();
    Operacao operacao2 = new Subtracao();
    Operacao operacao3 = new Multiplicacao();
    Operacao operacao4 = new Divisao();

    operacao1.efetuarOperacao(9, 3);
    operacao2.efetuarOperacao(9, 3);
    operacao3.efetuarOperacao(9, 3);
    operacao4.efetuarOperacao(9, 3);
  }