/* * ************************************************************************************* * 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.rowregex; import com.espertech.esper.client.EventBean; import com.espertech.esper.collection.MultiKeyUntyped; /** * State for a partial NFA match. */ public class RegexNFAStateEntry { private final int matchBeginEventSeqNo; private final long matchBeginEventTime; private final RegexNFAState state; private final EventBean[] eventsPerStream; private final int[] greedycountPerState; private final MultimatchState[] optionalMultiMatches; private final Object partitionKey; private int matchEndEventSeqNo; /** * Ctor. * @param matchBeginEventSeqNo the event number where the match started * @param matchBeginEventTime the time the first match occured * @param state the current match state * @param eventsPerStream events for each single-match variable * @param greedycountPerState number of greedy matches over all variables * @param optionalMultiMatches matches for multirow-variables * @param partitionKey key of partition */ public RegexNFAStateEntry(int matchBeginEventSeqNo, long matchBeginEventTime, RegexNFAState state, EventBean[] eventsPerStream, int[] greedycountPerState, MultimatchState[] optionalMultiMatches, Object partitionKey) { this.matchBeginEventSeqNo = matchBeginEventSeqNo; this.matchBeginEventTime = matchBeginEventTime; this.state = state; this.eventsPerStream = eventsPerStream; this.greedycountPerState = greedycountPerState; this.optionalMultiMatches = optionalMultiMatches; this.partitionKey = partitionKey; } /** * Returns the event number of the first matching event. * @return event number */ public int getMatchBeginEventSeqNo() { return matchBeginEventSeqNo; } /** * Returns the time of the first matching event. * @return time */ public long getMatchBeginEventTime() { return matchBeginEventTime; } /** * Returns the partial matches. * @return state */ public RegexNFAState getState() { return state; } /** * Returns the single-variable matches. * @return match events */ public EventBean[] getEventsPerStream() { return eventsPerStream; } /** * Returns the multirow-variable matches, if any. * @return matches */ public MultimatchState[] getOptionalMultiMatches() { return optionalMultiMatches; } /** * Returns the count of greedy matches per state. * @return greedy counts */ public int[] getGreedycountPerState() { return greedycountPerState; } /** * Sets the match end event number. * @param matchEndEventSeqNo match end event num */ public void setMatchEndEventSeqNo(int matchEndEventSeqNo) { this.matchEndEventSeqNo = matchEndEventSeqNo; } /** * Returns the match end event number. * @return num */ public int getMatchEndEventSeqNo() { return matchEndEventSeqNo; } /** * Returns the partition key. * @return key */ public Object getPartitionKey() { return partitionKey; } public String toString() { return "Entry " + state.toString(); } }