/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.core.logging;
import java.util.List;
import org.pentaho.di.core.RowMetaAndData;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.repository.RepositoryAttributeInterface;
public interface LogTableCoreInterface {
/**
* Saves the log table to a repository.
*
* @param attributeInterface
* The attribute interface used to store the attributes
*/
public void saveToRepository( RepositoryAttributeInterface attributeInterface ) throws KettleException;
/**
* Loads details of the log table from a repository.
*
* @param attributeInterface
* The attribute interface used to load the attributes
*/
public void loadFromRepository( RepositoryAttributeInterface attributeInterface ) throws KettleException;
public String getConnectionName();
public void setConnectionName( String connectionName );
public DatabaseMeta getDatabaseMeta();
public List<LogTableField> getFields();
/**
* @return The locally defined log schema name
*/
public String getSchemaName();
/**
* @return The locally defined log table name
*/
public String getTableName();
/**
* @return The actual schema name taking into account optionally defined KETTLE variables for global logging
* configuration
*/
public String getActualSchemaName();
/**
* @return The actual table name taking into account optionally defined KETTLE variabled for global logging
* configuration
*/
public String getActualTableName();
/**
* Assemble the log record from the logging subject.
*
* @param status
* The status to log
* @param subject
* The subject object to log
* @param parent
* The parent object to log
* @return The log record to write
* @throws in
* case there is a problem with the log record creation (incorrect settings, ...)
*/
public RowMetaAndData getLogRecord( LogStatus status, Object subject, Object parent ) throws KettleException;
public String getLogTableType();
public String getConnectionNameVariable();
public String getSchemaNameVariable();
public String getTableNameVariable();
public boolean isDefined();
/**
* @return The string that describes the timeout in days (variable supported) as a floating point number
*/
public String getTimeoutInDays();
/**
* @return the field that represents the log date field or null if none was defined.
*/
public LogTableField getLogDateField();
/**
* @return the field that represents the key to this logging table (batch id etc)
*/
public LogTableField getKeyField();
/**
* @return the appropriately quoted (by the database metadata) schema/table combination
*/
public String getQuotedSchemaTableCombination();
/**
* @return the field that represents the logging text (or null if none is found)
*/
public LogTableField getLogField();
/**
* @return the field that represents the status (or null if none is found)
*/
public LogTableField getStatusField();
/**
* @return the field that represents the number of errors (or null if none is found)
*/
public LogTableField getErrorsField();
/**
* @return the field that represents the name of the object that is being used (or null if none is found)
*/
public LogTableField getNameField();
/**
* @return A list of rows that contain the recommended indexed fields for this logging table.
*/
public List<RowMetaInterface> getRecommendedIndexes();
/**
* Clone the log table
*
* @return The cloned log table
*/
public Object clone();
/**
* Replace the metadata of the logtable with the one of the specified
*
* @param logTableInterface
* the new log table details
*/
public void replaceMeta( LogTableCoreInterface logTableInterface );
}