package org.jvalue.ods.processor.filter; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.inject.name.Named; import org.jvalue.ods.api.sources.DataSource; import org.jvalue.ods.db.DataRepository; import org.jvalue.ods.processor.specification.Argument; import org.jvalue.ods.processor.specification.CreationMethod; import org.jvalue.ods.api.processors.ProcessorType; public interface FilterFactory { static final String NAME_DB_INSERTION_FILTER = "DbInsertionFilter", NAME_NOTIFICATION_FILTER = "NotificationFilter", NAME_INT_TO_STRING_KEY_FILTER = "IntToStringKeyFilter", NAME_INVALID_DOCUMENT_FILTER = "InvalidDocumentFilter", NAME_PEGEL_ONLINE_MERGER = "PegelOnlineMerger", NAME_PEGEL_BRANDENBURG_MERGER = "PegelBrandenburgMerger"; @CreationMethod(name = NAME_NOTIFICATION_FILTER, filterType = ProcessorType.FILTER) @Named(NAME_NOTIFICATION_FILTER) public Filter<ObjectNode, ObjectNode> createNotificationFilter(DataSource source); @CreationMethod(name = NAME_DB_INSERTION_FILTER, filterType = ProcessorType.FILTER) @Named(NAME_DB_INSERTION_FILTER) public Filter<ObjectNode, ObjectNode> createDbInsertionFilter(DataSource source, DataRepository dataRepository, @Argument("updateData") boolean updateDataIfExists); @CreationMethod(name = NAME_INT_TO_STRING_KEY_FILTER, filterType = ProcessorType.FILTER) @Named(NAME_INT_TO_STRING_KEY_FILTER) public Filter<ObjectNode, ObjectNode> createIntToStringKeyFilter(DataSource source); @CreationMethod(name = NAME_INVALID_DOCUMENT_FILTER, filterType = ProcessorType.FILTER) @Named(NAME_INVALID_DOCUMENT_FILTER) public Filter<ArrayNode, ArrayNode> createInvalidDocumentFilter(DataSource source); @CreationMethod(name = NAME_PEGEL_ONLINE_MERGER, filterType = ProcessorType.FILTER) @Named(NAME_PEGEL_ONLINE_MERGER) public Filter<ObjectNode, ObjectNode> createPegelOnlineMerger(DataSource source); @CreationMethod(name = NAME_PEGEL_BRANDENBURG_MERGER, filterType = ProcessorType.FILTER) @Named(NAME_PEGEL_BRANDENBURG_MERGER) public Filter<ObjectNode, ObjectNode> createPegelBrandenburgMerger(DataSource source); }