/* * 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.metadata; import org.teiid.translator.ExecutionFactory; import org.teiid.translator.TranslatorException; /** * A hook for externalizing view, procedure, and other metadata. * * One of the two load methods should be overriden. */ public abstract class MetadataRepository<F,C> { /** * Loads the schema information for the vdb for the given schemaName. Loads table, procedures, functions, indexes etc. * @param factory * @param executionFactory may be null if loading a virtual source * @param connectionFactory may be null if source is not available * @param text the text used to configure the load * @return * @throws TranslatorException to indicate a recoverable error, otherwise a RuntimeException */ public void loadMetadata(MetadataFactory factory, ExecutionFactory<F, C> executionFactory, F connectionFactory, String text) throws TranslatorException { loadMetadata(factory, executionFactory, connectionFactory); } /** * Loads the schema information for the vdb for the given schemaName. Loads table, procedures, functions, indexes etc. * @param factory * @param executionFactory may be null if loading a virtual source * @param connectionFactory may be null if source is not available * @return * @throws TranslatorException to indicate a recoverable error, otherwise a RuntimeException */ public void loadMetadata(MetadataFactory factory, ExecutionFactory<F, C> executionFactory, F connectionFactory) throws TranslatorException { } /** * Call back function, when "alter view" definition is called * @param vdbName * @param vdbVersion * @param table * @param viewDefinition */ public void setViewDefinition(String vdbName, String vdbVersion, Table table, String viewDefinition) {} /** * Call back function, when "alter trigger" is called * @param vdbName * @param vdbVersion * @param table * @param triggerOperation * @param triggerDefinition */ public void setInsteadOfTriggerDefinition(String vdbName, String vdbVersion, Table table, Table.TriggerEvent triggerOperation, String triggerDefinition) {} /** * Callback function, when "alter trigger" is called to enable or disable a trigger * @param vdbName * @param vdbVersion * @param table * @param triggerOperation * @param enabled */ public void setInsteadOfTriggerEnabled(String vdbName, String vdbVersion, Table table, Table.TriggerEvent triggerOperation, boolean enabled) {} /** * Call back function, when "alter procedure" is called to set the procedure definition * @param vdbName * @param vdbVersion * @param procedure * @param procedureDefinition */ public void setProcedureDefinition(String vdbName, String vdbVersion, Procedure procedure, String procedureDefinition) {} /** * Set the {@link TableStats} for the given table * @param vdbName * @param vdbVersion * @param table * @param tableStats */ public void setTableStats(String vdbName, String vdbVersion, Table table, TableStats tableStats) {} /** * Set the {@link ColumnStats} for a given column * @param vdbName * @param vdbVersion * @param column * @param columnStats */ public void setColumnStats(String vdbName, String vdbVersion, Column column, ColumnStats columnStats) {} /** * Set an extension metadata property for a given record. * @param vdbName * @param vdbVersion * @param record * @param name * @param value */ public void setProperty(String vdbName, String vdbVersion, AbstractMetadataRecord record, String name, String value) {} }