Search in sources :

Example 51 with Schema

use of com.predic8.schema.Schema in project core by s4.

the class AbstractWindowingPE method processEvent.

public void processEvent(Object event) {
    long currentTime = getCurrentTime();
    long maybeCurrentTime = -1;
    if (timestampFields != null) {
        Schema schema = schemaContainer.getSchema(event.getClass());
        String fieldName = timestampFields.get(getStreamName());
        if (fieldName != null) {
            Property property = schema.getProperties().get(fieldName);
            if (property != null && (property.getType().equals(Long.TYPE) || property.getType().equals(Long.class))) {
                try {
                    maybeCurrentTime = (Long) property.getGetterMethod().invoke(event);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
    if (maybeCurrentTime > -1) {
        currentTime = maybeCurrentTime;
        lastTimestamp = currentTime;
    }
    // convert
    long slotTime = slotUtils.getSlotAtTime(currentTime / 1000);
    if (slots == null) {
        slots = Collections.synchronizedMap(new HashMap<Long, Slot>());
    }
    Slot slot = slots.get(slotTime);
    if (slot == null) {
        try {
            slot = (Slot) slotClass.newInstance();
        } catch (IllegalAccessException iae) {
            throw new RuntimeException(iae);
        } catch (InstantiationException ie) {
            throw new RuntimeException(ie);
        }
        slots.put(slotTime, slot);
    }
    overloadDispatcher.dispatch(slot, event, slotTime, this);
}
Also used : HashMap(java.util.HashMap) Schema(io.s4.schema.Schema) Property(io.s4.schema.Schema.Property)

Example 52 with Schema

use of com.predic8.schema.Schema in project core by s4.

the class JoinPE method processEvent.

public void processEvent(Object event) {
    if (eventsToJoin == null) {
        eventsToJoin = new HashMap<String, Object>();
    }
    List<String> fieldNames = eventFields.get(getStreamName());
    if (fieldNames == null) {
        return;
    }
    // we only use the last event that comes through on the given stream
    eventsToJoin.put(getStreamName(), event);
    if (eventsToJoin.keySet().size() == eventFields.keySet().size()) {
        Object newEvent = null;
        try {
            newEvent = outputClass.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        Schema newEventSchema = schemaContainer.getSchema(newEvent.getClass());
        for (String streamName : eventsToJoin.keySet()) {
            Object partialEvent = eventsToJoin.get(streamName);
            Schema partialEventSchema = schemaContainer.getSchema(partialEvent.getClass());
            List<String> includeFields = eventFields.get(streamName);
            if (includeFields.size() == 1 && includeFields.get(0).equals("*")) {
                for (Property partialEventProperty : partialEventSchema.getProperties().values()) {
                    copyField(partialEventProperty.getName(), partialEventSchema, newEventSchema, partialEvent, newEvent);
                }
            } else {
                for (String includeField : includeFields) {
                    copyField(includeField, partialEventSchema, newEventSchema, partialEvent, newEvent);
                }
            }
        }
        dispatcher.dispatchEvent(outputStreamName, newEvent);
        if (logger.isDebugEnabled()) {
            logger.debug("STEP 7 (JoinPE): " + newEvent.toString());
        }
    }
}
Also used : Schema(io.s4.schema.Schema) Property(io.s4.schema.Schema.Property)

Example 53 with Schema

use of com.predic8.schema.Schema in project core by s4.

the class DefaultPartitioner method getKeyValues.

private List<KeyInfo> getKeyValues(Object record, Schema schema, List<String> keyNameElements, int elementIndex, List<KeyInfo> keyInfoList, KeyInfo keyInfo) {
    String keyElement = keyNameElements.get(elementIndex);
    Property property = schema.getProperties().get(keyElement);
    if (property == null) {
        return null;
    }
    keyInfo.addElementToPath(keyElement);
    Object value = null;
    try {
        value = property.getGetterMethod().invoke(record);
    } catch (Exception e) {
        if (debug) {
            System.out.println("key element is " + keyElement);
            e.printStackTrace();
        }
    }
    if (value == null) {
        // return a null KeyInfo list if we hit a null value
        return null;
    }
    if (property.isList()) {
        List list = (List) value;
        // TODO: handle case where key does not include property of
        // component type
        Schema componentSchema = property.getComponentProperty().getSchema();
        int listLength = list.size();
        for (int i = 0; i < listLength; i++) {
            Object listEntry = list.get(i);
            KeyInfo keyInfoForListEntry = keyInfo.copy();
            keyInfoForListEntry.addElementToPath(i);
            Object partialList = getKeyValues(listEntry, componentSchema, keyNameElements, elementIndex + 1, keyInfoList, keyInfoForListEntry);
            if (partialList == null) {
                return null;
            }
        }
    } else if (property.getSchema() != null) {
        return getKeyValues(value, property.getSchema(), keyNameElements, elementIndex + 1, keyInfoList, keyInfo);
    } else {
        keyInfo.setValue(String.valueOf(value));
        keyInfoList.add(keyInfo);
    }
    return keyInfoList;
}
Also used : Schema(io.s4.schema.Schema) List(java.util.List) ArrayList(java.util.ArrayList) Property(io.s4.schema.Schema.Property)

Aggregations

Schema (org.h2.schema.Schema)35 CreateSchema (org.h2.command.ddl.CreateSchema)16 DropSchema (org.h2.command.ddl.DropSchema)16 ValueString (org.h2.value.ValueString)16 Column (org.h2.table.Column)10 IndexColumn (org.h2.table.IndexColumn)10 Table (org.h2.table.Table)10 Expression (org.h2.expression.Expression)8 ExpressionColumn (org.h2.expression.ExpressionColumn)8 ValueExpression (org.h2.expression.ValueExpression)8 Schema (io.s4.schema.Schema)7 ArrayList (java.util.ArrayList)7 AlterTableAddConstraint (org.h2.command.ddl.AlterTableAddConstraint)7 AlterTableAlterColumn (org.h2.command.ddl.AlterTableAlterColumn)7 CreateTable (org.h2.command.ddl.CreateTable)7 RangeTable (org.h2.table.RangeTable)7 Property (io.s4.schema.Schema.Property)6 CreateLinkedTable (org.h2.command.ddl.CreateLinkedTable)6 DropTable (org.h2.command.ddl.DropTable)6 TruncateTable (org.h2.command.ddl.TruncateTable)6