package com.esri.hadoop.hive; import org.apache.commons.logging.Log; import org.apache.hadoop.io.BytesWritable; import com.esri.hadoop.hive.GeometryUtils.OGCType; public class LogUtils { private static final int MSG_SRID_MISMATCH = 0; private static final int MSG_ARGUMENTS_NULL = 1; private static final int MSG_ARGUMENT_LENGTH_XY = 2; private static final int MSG_MULTI_ARGUMENT_LENGTH_XY = 3; private static final int MSG_INVALID_TYPE = 4; private static final int MSG_INVALID_TEXT = 5; private static final int MSG_INVALID_INDEX = 6; private static final int MSG_INTERNAL_ERROR = 7; private static final int MSG_ARGUMENT_LENGTH = 8; private static final int MSG_EXCEPTION_THROWN = 9; private static final int MSG_NOT_3D = 10; private static final int MSG_NOT_MEASURED = 11; private static String [] messages = { "Mismatched spatial references ('%d' <> '%d')", "Invalid arguments - one or more arguments are null.", "Invalid arguments. Expecting one or more x,y pairs.", "Invalid arguments. Expecting one or more x,y pairs in array argument %d.", "Invalid geometry type. Expecting %s but found %s", "Invalid arguments. Ill-formed text: %s ....", "Invalid index. Expected range [%d, %d], actual index %d.", "Internal error - %s.", "Invalid arguments. Expecting one or more arguments.", "Exception thrown by %s", "Invalid argument - not 3D", "Invalid argument - not measured" }; /** * Log when comparing geometries in different spatial references * * @param logger * @param geomref1 * @param geomref2 */ public static void Log_SRIDMismatch(Log logger, BytesWritable geomref1, BytesWritable geomref2){ logger.error(String.format(messages[MSG_SRID_MISMATCH], GeometryUtils.getWKID(geomref1), GeometryUtils.getWKID(geomref2))); } public static void Log_SRIDMismatch(Log logger, BytesWritable geomref1, int wkid2){ logger.error(String.format(messages[MSG_SRID_MISMATCH], GeometryUtils.getWKID(geomref1), wkid2)); } /** * Log when arguments passed to evaluate are null * @param logger */ public static void Log_ArgumentsNull(Log logger){ logger.error(messages[MSG_ARGUMENTS_NULL]); } public static void Log_VariableArgumentLengthXY(Log logger){ logger.error(messages[MSG_ARGUMENT_LENGTH_XY]); } public static void Log_VariableArgumentLengthXY(Log logger, int array_argument_index){ logger.error(String.format(messages[MSG_MULTI_ARGUMENT_LENGTH_XY], array_argument_index)); } public static void Log_InvalidType(Log logger, OGCType expecting, OGCType actual){ logger.error(String.format(messages[MSG_INVALID_TYPE], expecting, actual)); } public static void Log_InvalidText(Log logger, String text) { int limit = text.length(); limit = limit > 80 ? 80 : limit; logger.error(String.format(messages[MSG_INVALID_TEXT], text.substring(0, limit))); } public static void Log_InvalidIndex(Log logger, int actual, int expMin, int expMax){ logger.error(String.format(messages[MSG_INVALID_INDEX], expMin, expMax, actual)); } public static void Log_InternalError(Log logger, String text) { logger.error(String.format(messages[MSG_INTERNAL_ERROR], text)); } public static void Log_VariableArgumentLength(Log logger){ logger.error(messages[MSG_ARGUMENT_LENGTH]); } public static void Log_ExceptionThrown(Log logger, String method, Exception e){ logger.error(String.format(messages[MSG_EXCEPTION_THROWN], method), e); } public static void Log_Not3D(Log logger) { logger.error(messages[MSG_NOT_3D]); } public static void Log_NotMeasured(Log logger) { logger.error(messages[MSG_NOT_MEASURED]); } }