Package com.espertech.esper.dataflow.util

Source Code of com.espertech.esper.dataflow.util.DefaultSupportGraphEventUtil$MyEvent

/*
* *************************************************************************************
*  Copyright (C) 2008 EsperTech, Inc. All rights reserved.                            *
*  http://esper.codehaus.org                                                          *
*  http://www.espertech.com                                                           *
*  ---------------------------------------------------------------------------------- *
*  The software in this package is published under the terms of the GPL license       *
*  a copy of which has been included with this distribution in the license.txt file.  *
* *************************************************************************************
*/

package com.espertech.esper.dataflow.util;

import com.espertech.esper.client.ConfigurationEventTypeXMLDOM;
import com.espertech.esper.client.EPServiceProvider;
import com.espertech.esper.event.SendableEvent;
import com.espertech.esper.event.arr.SendableEventObjectArray;
import com.espertech.esper.event.bean.SendableEventBean;
import com.espertech.esper.event.map.SendableEventMap;
import com.espertech.esper.event.xml.SendableEventXML;
import com.espertech.esper.util.ParserTool;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;

import javax.xml.parsers.DocumentBuilderFactory;
import java.io.InputStream;
import java.io.StringReader;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class DefaultSupportGraphEventUtil {

    public static final String CLASSLOADER_SCHEMA_URI = "regression/threeProperties.xsd";

    public static void addTypeConfiguration(EPServiceProvider epService) {
        HashMap<String, Object> propertyTypes = new LinkedHashMap<String, Object>();
        propertyTypes.put("myDouble", Double.class);
        propertyTypes.put("myInt", Integer.class);
        propertyTypes.put("myString", String.class);
        epService.getEPAdministrator().getConfiguration().addEventType("MyMapEvent", propertyTypes);
        epService.getEPAdministrator().getConfiguration().addEventType("MyOAEvent", "myDouble,myInt,myString".split(","), new Object[] {Double.class, Integer.class, String.class});
        epService.getEPAdministrator().getConfiguration().addEventType(MyEvent.class);
        epService.getEPAdministrator().getConfiguration().addEventType("MyXMLEvent", getConfig());
    }

    public static SendableEvent[] getXMLEventsSendable() {
        Object[] xmlEvents = getXMLEvents();
        SendableEvent[] xmls = new SendableEvent[xmlEvents.length];
        for (int i = 0; i < xmlEvents.length; i++) {
            xmls[i] = new SendableEventXML((Node) xmlEvents[i]);
        }
        return xmls;
    }

    public static SendableEvent[] getOAEventsSendable() {
        Object[] oaEvents = getOAEvents();
        SendableEvent[] oas = new SendableEvent[oaEvents.length];
        for (int i = 0; i < oaEvents.length; i++) {
            oas[i] = new SendableEventObjectArray((Object[]) oaEvents[i], "MyOAEvent");
        }
        return oas;
    }

    public static SendableEvent[] getMapEventsSendable() {
        Object[] mapEvents = getMapEvents();
        SendableEvent[] sendables = new SendableEvent[mapEvents.length];
        for (int i = 0; i < mapEvents.length; i++) {
            sendables[i] = new SendableEventMap((Map<String, Object>) mapEvents[i], "MyMapEvent");
        }
        return sendables;
    }

    public static SendableEvent[] getPOJOEventsSendable() {
        Object[] pojoEvents = getPOJOEvents();
        SendableEvent[] sendables = new SendableEvent[pojoEvents.length];
        for (int i = 0; i < pojoEvents.length; i++) {
            sendables[i] = new SendableEventBean(pojoEvents[i]);
        }
        return sendables;
    }

    public static Object[] getXMLEvents() {
        return new Object[]{makeXMLEvent(1.1d, 1, "one"), makeXMLEvent(2.2d, 2, "two")};
    }

    public static Object[] getOAEvents() {
        return new Object[]{new Object[]{1.1d, 1, "one"}, new Object[]{2.2d, 2, "two"}};
    }

    public static Object[] getMapEvents() {
        return new Object[] {makeMapEvent(1.1, 1, "one"), makeMapEvent(2.2d, 2, "two")};
    }

    public static Object[] getPOJOEvents() {
        return new Object[] {new MyEvent(1.1d, 1, "one"), new MyEvent(2.2d, 2, "two")};
    }

    private static ConfigurationEventTypeXMLDOM getConfig() {
        ConfigurationEventTypeXMLDOM eventTypeMeta = new ConfigurationEventTypeXMLDOM();
        eventTypeMeta.setRootElementName("rootelement");
        InputStream schemaStream = DefaultSupportGraphEventUtil.class.getClassLoader().getResourceAsStream(CLASSLOADER_SCHEMA_URI);
        if (schemaStream == null) {
            throw new IllegalStateException("Failed to load schema '" + CLASSLOADER_SCHEMA_URI + "'");
        }
        String schemaText = ParserTool.linesToText(ParserTool.readFile(schemaStream));
        eventTypeMeta.setSchemaText(schemaText);
        return eventTypeMeta;
    }

    private static Node makeXMLEvent(double myDouble, int myInt, String myString) {
        String xml = "<rootelement myDouble=\"VAL_DBL\" myInt=\"VAL_INT\" myString=\"VAL_STR\" />";
        xml = xml.replaceAll("VAL_DBL", Double.toString(myDouble));
        xml = xml.replaceAll("VAL_INT", Integer.toString(myInt));
        xml = xml.replaceAll("VAL_STR", myString);

        InputSource source = new InputSource(new StringReader(xml));
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        builderFactory.setNamespaceAware(true);
        try {
            return builderFactory.newDocumentBuilder().parse(source).getDocumentElement();
        } catch (Exception e) {
            throw new RuntimeException("Failed to parse '" + xml + "' as XML: " + e.getMessage(), e);
        }
    }

    private static Map<String, Object> makeMapEvent(double myDouble, int myInt, String myString) {
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("myDouble", myDouble);
        map.put("myInt", myInt);
        map.put("myString", myString);
        return map;
    }

    public static class MyEvent {
        private final double myDouble;
        private final int myInt;
        private final String myString;

        public MyEvent(double myDouble, int myInt, String myString) {
            this.myDouble = myDouble;
            this.myInt = myInt;
            this.myString = myString;
        }

        public int getMyInt() {
            return myInt;
        }

        public double getMyDouble() {
            return myDouble;
        }

        public String getMyString() {
            return myString;
        }
    }
}
TOP

Related Classes of com.espertech.esper.dataflow.util.DefaultSupportGraphEventUtil$MyEvent

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.