Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.yammer.metrics.jdbi.strategies;
  
  
 
 public final class NameStrategies {
     public static final StatementNameStrategy CHECK_EMPTY = new CheckEmptyStrategy();
     public static final StatementNameStrategy CHECK_RAW = new CheckRawStrategy();
     public static final StatementNameStrategy SQL_OBJECT = new SqlObjectStrategy();
     public static final StatementNameStrategy NAIVE_NAME = new NaiveNameStrategy();
     public static final StatementNameStrategy CONTEXT_CLASS = new ContextClassStrategy();
     public static final StatementNameStrategy CONTEXT_NAME = new ContextNameStrategy();

    
An empty SQL statement.
 
     private static final MetricName EMPTY_SQL = new MetricName("sql""empty""");

    
Unknown SQL.
 
     static final MetricName UNKNOWN_SQL = new MetricName("sql""unknown""");

    
Context attribute name for the metric class.
 
     public static final String STATEMENT_CLASS = "_metric_class";

    
Context attribute name for the metric group.
 
     public static final String STATEMENT_GROUP = "_metric_group";

    
Context attribute name for the metric type.
 
     public static final String STATEMENT_TYPE = "_metric_type";

    
Context attribute name for the metric name.
 
     public static final String STATEMENT_NAME = "_metric_name";
 
     private static MetricName forRawSql(String rawSql) {
         return StatementName.getJmxSafeName("sql""raw"rawSql);
     }
 
     static final class CheckEmptyStrategy implements StatementNameStrategy {
         private CheckEmptyStrategy() {
         }
 
         @Override
         public MetricName getStatementName(StatementContext statementContext) {
             final String rawSql = statementContext.getRawSql();
 
             if (rawSql == null || rawSql.length() == 0) {
                 return ;
             }
             return null;
         }
     }
 
     static final class CheckRawStrategy implements StatementNameStrategy {
         private CheckRawStrategy() {
         }
 
         @Override
         public MetricName getStatementName(StatementContext statementContext) {
             final String rawSql = statementContext.getRawSql();
 
             if (ClasspathStatementLocator.looksLikeSql(rawSql)) {
                 return forRawSql(rawSql);
             }
             return null;
         }
     }
 
     static final class NaiveNameStrategy implements StatementNameStrategy {
         private NaiveNameStrategy() {
         }
 
         @Override
         public MetricName getStatementName(StatementContext statementContext) {
             final String rawSql = statementContext.getRawSql();
 
             // Is it using the template loader?
             final int colon = rawSql.indexOf(':');
 
             if (colon == -1) {
                 // No package? Just return the name, JDBI figured out somehow on how to find the raw sql for this statement.
                 return forRawSql(rawSql);
             }
 
             final String group = rawSql.substring(0, colon);
            final String name = rawSql.substring(colon + 1);
            return StatementName.getJmxSafeName(groupname"");
        }
    }
    static final class SqlObjectStrategy implements StatementNameStrategy {
        private SqlObjectStrategy() {
        }
        @Override
        public MetricName getStatementName(StatementContext statementContext) {
            final Class<?> clazz = statementContext.getSqlObjectType();
            final Method method = statementContext.getSqlObjectMethod();
            if (clazz != null) {
                final String rawSql = statementContext.getRawSql();
                final String group = clazz.getPackage().getName();
                final String name = clazz.getSimpleName();
                final String type = method == null ? rawSql : method.getName();
                return StatementName.getJmxSafeName(groupnametype);
            }
            return null;
        }
    }
    static final class ContextClassStrategy implements StatementNameStrategy {
        private ContextClassStrategy() {
        }
        @Override
        public MetricName getStatementName(StatementContext statementContext) {
            final Object classObj = statementContext.getAttribute();
            final Object nameObj = statementContext.getAttribute();
            if (classObj == null || nameObj == null) {
                return null;
            }
            final String className = (StringclassObj;
            final String statementName = (StringnameObj;
            final int dotPos = className.lastIndexOf('.');
            if (dotPos == -1) {
                return null;
            }
            return StatementName.getJmxSafeName(className.substring(0, dotPos),
                                                className.substring(dotPos + 1),
                                                statementName);
        }
    }
    static final class ContextNameStrategy implements StatementNameStrategy {
        
File pattern to shorten the group name.
        private static final Pattern SHORT_PATTERN = Pattern.compile("^(.*?)/(.*?)(-sql)?\\.st(g)?$");
        private ContextNameStrategy() {
        }
        @Override
        public MetricName getStatementName(StatementContext statementContext) {
            final Object groupObj = statementContext.getAttribute();
            final Object typeObj = statementContext.getAttribute();
            final Object nameObj = statementContext.getAttribute();
            if (groupObj == null || nameObj == null) {
                return null;
            }
            final String group = (StringgroupObj;
            final String statementName = (StringnameObj;
            if (typeObj == null) {
                final Matcher matcher = .matcher(group);
                if (matcher.matches()) {
                    final String groupName = matcher.group(1);
                    final String typeName = matcher.group(2);
                    return StatementName.getJmxSafeName(groupNametypeNamestatementName);
                }
                return StatementName.getJmxSafeName(groupstatementName"");
            } else {
                final String type = (StringtypeObj;
                return StatementName.getJmxSafeName(grouptypestatementName);
            }
        }
    }
    private NameStrategies() {
    }
New to GrepCode? Check out our FAQ X