/*! ****************************************************************************** * * 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.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import org.pentaho.di.core.metrics.MetricsSnapshotType; public class Metrics implements MetricsInterface { // Database // public static Metrics METRIC_DATABASE_CONNECT_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_CONNECT", "Connect to database" ); public static Metrics METRIC_DATABASE_CONNECT_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_CONNECT", "Connect to database" ); public static Metrics METRIC_DATABASE_PREPARE_SQL_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_PREPARE_SQL", "Prepare SQL statement" ); public static Metrics METRIC_DATABASE_PREPARE_SQL_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_PREPARE_SQL", "Prepare SQL statement" ); public static Metrics METRIC_DATABASE_CREATE_SQL_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_CREATE_SQL", "Create SQL statement" ); public static Metrics METRIC_DATABASE_CREATE_SQL_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_CREATE_SQL", "Create SQL statement" ); public static Metrics METRIC_DATABASE_SQL_VALUES_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_SQL_VALUES", "Set values on perpared statement" ); public static Metrics METRIC_DATABASE_SQL_VALUES_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_SQL_VALUES", "Set values on perpared statement" ); public static Metrics METRIC_DATABASE_EXECUTE_SQL_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_EXECUTE_SQL", "Execute SQL statement" ); public static Metrics METRIC_DATABASE_EXECUTE_SQL_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_EXECUTE_SQL", "Execute SQL statement" ); public static Metrics METRIC_DATABASE_OPEN_QUERY_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_OPEN_QUERY", "Open SQL query" ); public static Metrics METRIC_DATABASE_OPEN_QUERY_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_OPEN_QUERY", "Open SQL query" ); public static Metrics METRIC_DATABASE_GET_ROW_META_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_GET_ROW_META", "Get row metadata" ); public static Metrics METRIC_DATABASE_GET_ROW_META_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_GET_ROW_META", "Get row metadata" ); public static Metrics METRIC_DATABASE_SET_LOOKUP_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_SET_LOOKUP", "Set lookup values" ); public static Metrics METRIC_DATABASE_SET_LOOKUP_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_SET_LOOKUP", "Set lookup values" ); public static Metrics METRIC_DATABASE_PREPARE_UPDATE_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_PREPARE_UPDATE", "Prepare update" ); public static Metrics METRIC_DATABASE_PREPARE_UPDATE_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_PREPARE_UPDATE", "Prepare update" ); public static Metrics METRIC_DATABASE_PREPARE_DELETE_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_PREPARE_DELETE", "Prepare delete" ); public static Metrics METRIC_DATABASE_PREPARE_DELETE_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_PREPARE_DELETE", "Prepare delete" ); public static Metrics METRIC_DATABASE_PREPARE_DBPROC_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_PREPARE_DBPROC", "Prepare DB procedure" ); public static Metrics METRIC_DATABASE_PREPARE_DBPROC_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_PREPARE_DBPROC", "Prepare DB procedure" ); public static Metrics METRIC_DATABASE_GET_LOOKUP_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_GET_LOOKUP", "Get lookup" ); public static Metrics METRIC_DATABASE_GET_LOOKUP_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_GET_LOOKUP", "Get lookup" ); public static Metrics METRIC_DATABASE_GET_DBMETA_START = new Metrics( MetricsSnapshotType.START, "METRIC_DATABASE_GET_DBMETA", "Get DB metadata" ); public static Metrics METRIC_DATABASE_GET_DBMETA_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_DATABASE_GET_DBMETA", "Get DB metadata" ); public static Metrics METRIC_DATABASE_GET_ROW_COUNT = new Metrics( MetricsSnapshotType.COUNT, "METRIC_DATABASE_GET_ROW_COUNT", "Get row from DB (count)" ); public static Metrics METRIC_DATABASE_GET_ROW_SUM_TIME = new Metrics( MetricsSnapshotType.SUM, "METRIC_DATABASE_GET_ROW_SUM_TIME", "Get row from DB (total time)" ); public static Metrics METRIC_DATABASE_GET_ROW_MIN_TIME = new Metrics( MetricsSnapshotType.MIN, "METRIC_DATABASE_GET_ROW_MIN_TIME", "Get row from DB (min time)" ); public static Metrics METRIC_DATABASE_GET_ROW_MAX_TIME = new Metrics( MetricsSnapshotType.MAX, "METRIC_DATABASE_GET_ROW_MAX_TIME", "Get row from DB (max time)" ); // Plugin registry... // public static Metrics METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSIONS_START = new Metrics( MetricsSnapshotType.START, "METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSIONS", "Register all plugin extensions" ); public static Metrics METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSIONS_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSIONS", "Register all plugin extensions" ); public static Metrics METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSION_START = new Metrics( MetricsSnapshotType.START, "METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSION", "Register a plugin extension" ); public static Metrics METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSION_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_PLUGIN_REGISTRY_REGISTER_EXTENSION", "Register a plugin extension" ); public static Metrics METRIC_PLUGIN_REGISTRY_PLUGIN_REGISTRATION_START = new Metrics( MetricsSnapshotType.START, "METRIC_PLUGIN_REGISTRY_PLUGIN_REGISTRATION", "Register plugins" ); public static Metrics METRIC_PLUGIN_REGISTRY_PLUGIN_REGISTRATION_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_PLUGIN_REGISTRY_PLUGIN_REGISTRATION", "Register plugins" ); public static Metrics METRIC_PLUGIN_REGISTRY_PLUGIN_TYPE_REGISTRATION_START = new Metrics( MetricsSnapshotType.START, "METRIC_PLUGIN_REGISTRY_PLUGIN_TYPE_REGISTRATION", "Register plugins of a certain type" ); public static Metrics METRIC_PLUGIN_REGISTRY_PLUGIN_TYPE_REGISTRATION_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_PLUGIN_REGISTRY_PLUGIN_TYPE_REGISTRATION", "Register plugins of a certain type" ); // Transformation // public static Metrics METRIC_TRANSFORMATION_EXECUTION_START = new Metrics( MetricsSnapshotType.START, "METRIC_TRANSFORMATION_EXECUTION", "Execute a transformation" ); public static Metrics METRIC_TRANSFORMATION_EXECUTION_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_TRANSFORMATION_EXECUTION", "Execute a transformation" ); public static Metrics METRIC_TRANSFORMATION_INIT_START = new Metrics( MetricsSnapshotType.START, "METRIC_TRANSFORMATION_INIT", "Initialize a transformation" ); public static Metrics METRIC_TRANSFORMATION_INIT_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_TRANSFORMATION_INIT", "Initialize a transformation" ); public static Metrics METRIC_STEP_EXECUTION_START = new Metrics( MetricsSnapshotType.START, "METRIC_STEP_EXECUTION", "Execute a step" ); public static Metrics METRIC_STEP_EXECUTION_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_STEP_EXECUTION", "Execute a step" ); public static Metrics METRIC_STEP_INIT_START = new Metrics( MetricsSnapshotType.START, "METRIC_STEP_INIT", "Initialize a step" ); public static Metrics METRIC_STEP_INIT_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_STEP_INIT", "Initialize a step" ); // Logging back-end // public static Metrics METRIC_CENTRAL_LOG_STORE_TIMEOUT_CLEAN_TIME = new Metrics( MetricsSnapshotType.SUM, "METRIC_CENTRAL_LOG_STORE_TIMEOUT_CLEAN_TIME", "Time consumed removing old log records (ms)" ); public static Metrics METRIC_CENTRAL_LOG_STORE_TIMEOUT_CLEAN_COUNT = new Metrics( MetricsSnapshotType.COUNT, "METRIC_CENTRAL_LOG_STORE_TIMEOUT_CLEAN_COUNT", "Number of times removed old log records" ); public static Metrics METRIC_LOGGING_REGISTRY_CLEAN_TIME = new Metrics( MetricsSnapshotType.SUM, "METRIC_LOGGING_REGISTRY_CLEAN_TIME", "Time consumed removing old log registry entries (ms)" ); public static Metrics METRIC_LOGGING_REGISTRY_CLEAN_COUNT = new Metrics( MetricsSnapshotType.COUNT, "METRIC_LOGGING_REGISTRY_CLEAN_COUNT", "Number of times removed old log registry entries" ); public static Metrics METRIC_LOGGING_REGISTRY_GET_CHILDREN_TIME = new Metrics( MetricsSnapshotType.SUM, "METRIC_LOGGING_REGISTRY_GET_CHILDREN_TIME", "Time consumed getting log registry children (ms)" ); public static Metrics METRIC_LOGGING_REGISTRY_GET_CHILDREN_COUNT = new Metrics( MetricsSnapshotType.COUNT, "METRIC_LOGGING_REGISTRY_GET_CHILDREN_COUNT", "Number of times retrieved log registry children" ); // Job // public static Metrics METRIC_JOB_START = new Metrics( MetricsSnapshotType.START, "METRIC_JOB_EXECUTION", "Execute a job" ); public static Metrics METRIC_JOB_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_JOB_EXECUTION", "Execute a job" ); public static Metrics METRIC_JOBENTRY_START = new Metrics( MetricsSnapshotType.START, "METRIC_JOBENTRY_EXECUTION", "Execute a job entry" ); public static Metrics METRIC_JOBENTRY_STOP = new Metrics( MetricsSnapshotType.STOP, "METRIC_JOBENTRY_EXECUTION", "Execute a job entry" ); private String code; private String description; private MetricsSnapshotType type; public Metrics( MetricsSnapshotType type, String code, String description ) { this.type = type; this.code = code; this.description = description; } @Override public String getDescription() { return description; } @Override public String getCode() { return code; } @Override public MetricsSnapshotType getType() { return type; } @Override public boolean equals( Object obj ) { if ( !( obj instanceof MetricsInterface ) ) { return false; } if ( this == obj ) { return true; } return ( (MetricsInterface) obj ).getCode().equalsIgnoreCase( code ); } public static List<MetricsInterface> getDefaultMetrics() { List<MetricsInterface> metrics = new ArrayList<MetricsInterface>(); for ( Field field : Metrics.class.getDeclaredFields() ) { if ( field.getType().equals( Metrics.class ) && field.getName().startsWith( "METRIC_" ) ) { field.setAccessible( true ); try { metrics.add( (MetricsInterface) field.get( null ) ); } catch ( Exception e ) { e.printStackTrace(); // it either works or doesn't, seems more like a JRE problem if it doesn't. } } } return metrics; } }