Package de.willuhn.jameica.hbci.synchronize.hbci

Source Code of de.willuhn.jameica.hbci.synchronize.hbci.HBCITraceMessageConsumer

/**********************************************************************
*
* Copyright (c) by Olaf Willuhn
* All rights reserved
*
**********************************************************************/

package de.willuhn.jameica.hbci.synchronize.hbci;

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

import de.willuhn.annotation.Lifecycle;
import de.willuhn.annotation.Lifecycle.Type;
import de.willuhn.jameica.messaging.Message;
import de.willuhn.jameica.messaging.MessageConsumer;
import de.willuhn.logging.Logger;
import de.willuhn.util.History;

/**
* Empfaengt HBCI-Trace-Messages.
*/
@Lifecycle(Type.CONTEXT) // Noetig, damit wir an die selbe Instanz kommen, die der MessageService verwendet
public class HBCITraceMessageConsumer implements MessageConsumer
{
  private Map<String,History> history = new HashMap<String,History>();
  private History current = null;
 
  /**
   * @see de.willuhn.jameica.messaging.MessageConsumer#getExpectedMessageTypes()
   */
  public Class[] getExpectedMessageTypes()
  {
    return new Class[]{HBCITraceMessage.class};
  }

  /**
   * @see de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
   */
  public void handleMessage(Message message) throws Exception
  {
    HBCITraceMessage msg = (HBCITraceMessage) message;
   
    if (msg.getType() == HBCITraceMessage.Type.ID)
    {
      current = history.get(msg.getData());
      if (current == null)
      {
        current = new History(100);
        history.put(msg.getData(),current);
      }
     
      return;
    }
   
    if (current == null)
    {
      Logger.debug("no ID to assign HBCI trace to");
      return;
    }
   
    current.push(msg);
  }
 
  /**
   * Liefert den HBCI-Trace zur angegebenen ID.
   * @param id die ID. Typischerweise die des Konto.
   * @return der HBCI-Trace.
   */
  public List<HBCITraceMessage> getTrace(String id)
  {
    History h = this.history.get(id);
    List<HBCITraceMessage> list = new ArrayList<HBCITraceMessage>();
   
    if (h != null)
      list.addAll(h.elements());
   
    return list;
  }

  /**
   * @see de.willuhn.jameica.messaging.MessageConsumer#autoRegister()
   */
  public boolean autoRegister()
  {
    return false; // per Manifest
  }
}

TOP

Related Classes of de.willuhn.jameica.hbci.synchronize.hbci.HBCITraceMessageConsumer

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.