/*
***************************************************************************************
* Copyright (C) 2006 EsperTech, Inc. All rights reserved. *
* http://www.espertech.com/esper *
* 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.util.support;
import com.espertech.esper.client.EventPropertyDescriptor;
import com.espertech.esper.client.EventType;
import com.espertech.esper.client.FragmentEventType;
public enum SupportEventTypeAssertionEnum {
NAME(new Extractor() {
public Object extract(EventPropertyDescriptor desc, EventType eventType) {
return desc.getPropertyName();
}
}),
TYPE(new Extractor() {
public Object extract(EventPropertyDescriptor desc, EventType eventType) {
return desc.getPropertyType();
}
}),
FRAGEMENT_TYPE_NAME(new Extractor() {
public Object extract(EventPropertyDescriptor desc, EventType eventType) {
FragmentEventType fragType = eventType.getFragmentType(desc.getPropertyName());
if (fragType == null) {
return null;
}
return fragType.getFragmentType().getName();
}
}),
FRAGMENT_IS_INDEXED(new Extractor() {
public Object extract(EventPropertyDescriptor desc, EventType eventType) {
FragmentEventType fragType = eventType.getFragmentType(desc.getPropertyName());
if (fragType == null) {
return null;
}
return fragType.isIndexed();
}
});
private Extractor extractor;
private SupportEventTypeAssertionEnum(Extractor extractor) {
this.extractor = extractor;
}
public Extractor getExtractor() {
return extractor;
}
public interface Extractor {
public Object extract(EventPropertyDescriptor desc, EventType eventType);
}
public static SupportEventTypeAssertionEnum[] getSetWithFragment() {
return new SupportEventTypeAssertionEnum[]{NAME, TYPE, FRAGEMENT_TYPE_NAME, FRAGMENT_IS_INDEXED};
}
}