/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.events;
import java.util.List;
import org.teiid.Replicated;
import org.teiid.client.util.ResultsFuture;
import org.teiid.metadata.ColumnStats;
import org.teiid.metadata.Table;
import org.teiid.metadata.TableStats;
/**
* Distributes events across the Teiid cluster
*/
public interface EventDistributor {
/**
* Update the given materialized view row.
* The tuple is expected to be in table order, which has the primary key first.
* Deletes need to only send the key, not the entire row contents.
*
* @param vdbName
* @param vdbVersion
* @param schema
* @param viewName
* @param tuple
* @param delete
*/
@Deprecated
@Replicated(remoteOnly=true)
void updateMatViewRow(String vdbName, int vdbVersion, String schema, String viewName, List<?> tuple, boolean delete);
/**
* Update the given materialized view row.
* The tuple is expected to be in table order, which has the primary key first.
* Deletes need to only send the key, not the entire row contents.
*
* @param vdbName
* @param vdbVersion
* @param schema
* @param viewName
* @param tuple
* @param delete
*/
@Replicated(remoteOnly=true)
void updateMatViewRow(String vdbName, String vdbVersion, String schema, String viewName, List<?> tuple, boolean delete);
/**
* Notify that the table data has changed.
* @param vdbName
* @param vdbVersion
* @param schema
* @param tableNames
*/
@Deprecated
@Replicated(remoteOnly=true)
void dataModification(String vdbName, int vdbVersion, String schema, String... tableNames);
/**
* Notify that the table data has changed.
* @param vdbName
* @param vdbVersion
* @param schema
* @param tableNames
*/
@Replicated(remoteOnly=true)
void dataModification(String vdbName, String vdbVersion, String schema, String... tableNames);
/**
* Set the column stats
* @param vdbName
* @param vdbVersion
* @param schemaName
* @param tableName
* @param columnName
* @param stats
*/
@Deprecated
@Replicated(remoteOnly=true)
void setColumnStats(String vdbName, int vdbVersion, String schemaName,
String tableName, String columnName, ColumnStats stats);
/**
* Set the column stats
* @param vdbName
* @param vdbVersion
* @param schemaName
* @param tableName
* @param columnName
* @param stats
*/
@Replicated(remoteOnly=true)
void setColumnStats(String vdbName, String vdbVersion, String schemaName,
String tableName, String columnName, ColumnStats stats);
/**
* Set the table stats
* @param vdbName
* @param vdbVersion
* @param schemaName
* @param tableName
* @param stats
*/
@Deprecated
@Replicated(remoteOnly=true)
void setTableStats(String vdbName, int vdbVersion, String schemaName,
String tableName, TableStats stats);
/**
* Set the table stats
* @param vdbName
* @param vdbVersion
* @param schemaName
* @param tableName
* @param stats
*/
@Replicated(remoteOnly=true)
void setTableStats(String vdbName, String vdbVersion, String schemaName,
String tableName, TableStats stats);
/**
* Set the given property value
* @param vdbName
* @param vdbVersion
* @param uuid
* @param name
* @param value
*/
@Deprecated
@Replicated(remoteOnly=true)
void setProperty(String vdbName, int vdbVersion, String uuid, String name, String value);
/**
* Set the given property value
* @param vdbName
* @param vdbVersion
* @param uuid
* @param name
* @param value
*/
@Replicated(remoteOnly=true)
void setProperty(String vdbName, String vdbVersion, String uuid, String name, String value);
/**
* Set the instead of trigger definition. Only one of either the triggerDefinition or enabled should be specified.
* @param vdbName
* @param vdbVersion
* @param schema
* @param viewName
* @param triggerEvent
* @param triggerDefinition
* @param enabled
*/
@Deprecated
@Replicated(remoteOnly=true)
void setInsteadOfTriggerDefinition(String vdbName, int vdbVersion, String schema, String viewName, Table.TriggerEvent triggerEvent, String triggerDefinition, Boolean enabled);
/**
* Set the instead of trigger definition. Only one of either the triggerDefinition or enabled should be specified.
* @param vdbName
* @param vdbVersion
* @param schema
* @param viewName
* @param triggerEvent
* @param triggerDefinition
* @param enabled
*/
@Replicated(remoteOnly=true)
void setInsteadOfTriggerDefinition(String vdbName, String vdbVersion, String schema, String viewName, Table.TriggerEvent triggerEvent, String triggerDefinition, Boolean enabled);
/**
* Set the procedure definition
* @param vdbName
* @param vdbVersion
* @param schema
* @param procName
* @param definition
*/
@Deprecated
@Replicated(remoteOnly=true)
void setProcedureDefinition(String vdbName, int vdbVersion, String schema, String procName, String definition);
/**
* Set the procedure definition
* @param vdbName
* @param vdbVersion
* @param schema
* @param procName
* @param definition
*/
@Replicated(remoteOnly=true)
void setProcedureDefinition(String vdbName, String vdbVersion, String schema, String procName, String definition);
/**
* Set the view definition
* @param vdbName
* @param vdbVersion
* @param schema
* @param viewName
* @param definition
*/
@Deprecated
@Replicated(remoteOnly=true)
void setViewDefinition(String vdbName, int vdbVersion, String schema, String viewName, String definition);
/**
* Set the view definition
* @param vdbName
* @param vdbVersion
* @param schema
* @param viewName
* @param definition
*/
@Replicated(remoteOnly=true)
void setViewDefinition(String vdbName, String vdbVersion, String schema, String viewName, String definition);
/**
* Add EventListener for callback on events
* @param listener
*/
void register(EventListener listener);
/**
* Remove EventListener
* @param listener
*/
void unregister(EventListener listener);
/**
* Notify that the table data has changed.
* <br>For an insert only the newValues are provided.
* <br>For a delete only the oldValues are provided.
* <br>For an update both are provided.
* @return a {@link ResultsFuture} if execution has started, or null if no execution has started
* @param vdbName
* @param vdbVersion
* @param schema
* @param tableNames
*/
ResultsFuture<?> dataModification(String vdbName, String vdbVersion, String schema, String tableName, Object[] oldValues, Object[] newValues, String[] columnNames);
}