All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.anysoft.stream.HubHandler Maven / Gradle / Ivy

There is a newer version: 1.6.17
Show newest version
package com.anysoft.stream;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import com.anysoft.util.Factory;
import com.anysoft.util.IOTools;
import com.anysoft.util.Properties;
import com.anysoft.util.XmlTools;

/**
 * 集线器
 * 
 * @author duanyy
 *
 * @param 
 * 
 * @since 1.4.0
 * 
 * @version 1.4.4 [20140917 duanyy] 
* - Handler:handle和flush方法增加timestamp参数,以便进行时间同步
* * @version 1.6.7.9 [20170201 duanyy]
* - 采用SLF4j日志框架输出日志
*/ public class HubHandler extends AbstractHandler { /** * handlers */ protected List> handlers = new ArrayList>(); protected void onHandle(data _data,long timestamp) { for (Handler h:handlers){ if (h != null){ h.handle(_data,timestamp); } } } protected void onFlush(long timestamp) { for (Handler h:handlers){ if (h != null){ h.flush(timestamp); } } } public void close() { super.close(); for (Handler h:handlers){ if (h != null){ IOTools.close(h); } } handlers.clear(); } public void report(Element root){ super.report(root); if (handlers != null){ Document doc = root.getOwnerDocument(); for (Handler _handler:handlers){ if (_handler != null){ Element newHandler = doc.createElement(getHandlerType()); _handler.report(newHandler); root.appendChild(newHandler); } } } } public void report(Map json){ super.report(json); if (handlers != null){ List array = new ArrayList(handlers.size()); for (Handler _handler:handlers){ if (_handler != null){ Map map = new HashMap(); _handler.report(map); array.add(map); } } json.put(getHandlerType(), array); } } protected void onConfigure(Element e, Properties p) { NodeList children = XmlTools.getNodeListByPath(e, getHandlerType()); Factory> factory = new Factory>(); for (int i = 0 ; i < children.getLength() ; i ++){ Node n = children.item(i); if (n.getNodeType() != Node.ELEMENT_NODE){ continue; } try { Handler newHandler = factory.newInstance((Element)n,p); if (newHandler != null){ handlers.add(newHandler); } }catch (Exception ex){ LOG.error("Can not create handler instance",ex); } } } }