/*
* Copyright 2014 NAVER Corp.
*
* 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 com.navercorp.pinpoint.bootstrap.plugin.jdbc.bindvalue;
import java.util.HashMap;
import java.util.Map;
public class BindValueConverter {
private static final BindValueConverter converter;
static {
converter = new BindValueConverter();
converter.register();
}
public final Map<String, Converter> convertermap = new HashMap<String, Converter>() ;
private void register() {
simpleType();
classNameType();
// There also is method with 3 parameters.
convertermap.put("setNull", new NullTypeConverter());
BytesConverter bytesConverter = new BytesConverter();
convertermap.put("setBytes", bytesConverter);
convertermap.put("setObject", new ObjectConverter());
}
private void classNameType() {
// replace with class name if we don't want to (or can't) read the value
ClassNameConverter classNameConverter = new ClassNameConverter();
// There also is method with 3 parameters.
convertermap.put("setAsciiStream", classNameConverter);
convertermap.put("setUnicodeStream", classNameConverter);
convertermap.put("setBinaryStream", classNameConverter);
// There also is method with 3 parameters.
convertermap.put("setBlob", classNameConverter);
// There also is method with 3 parameters.
convertermap.put("setClob", classNameConverter);
convertermap.put("setArray", classNameConverter);
convertermap.put("setNCharacterStream", classNameConverter);
// There also is method with 3 parameters.
convertermap.put("setNClob", classNameConverter);
convertermap.put("setCharacterStream", classNameConverter);
convertermap.put("setSQLXML", classNameConverter);
}
private void simpleType() {
SimpleTypeConverter simpleTypeConverter = new SimpleTypeConverter();
convertermap.put("setByte", simpleTypeConverter);
convertermap.put("setBoolean", simpleTypeConverter);
convertermap.put("setShort", simpleTypeConverter);
convertermap.put("setInt", simpleTypeConverter);
convertermap.put("setLong", simpleTypeConverter);
convertermap.put("setFloat", simpleTypeConverter);
convertermap.put("setDouble", simpleTypeConverter);
convertermap.put("setBigDecimal", simpleTypeConverter);
convertermap.put("setString", simpleTypeConverter);
convertermap.put("setDate", simpleTypeConverter);
// There also is method with 3 parameters.
convertermap.put("setTime", simpleTypeConverter);
//convertermap.put("setTime", simpleTypeConverter);
// There also is method with 3 parameters.
convertermap.put("setTimestamp", simpleTypeConverter);
//convertermap.put("setTimestamp", simpleTypeConverter);
// could be replaced with string
convertermap.put("setURL", simpleTypeConverter);
// could be replaced with string
convertermap.put("setRef", simpleTypeConverter);
convertermap.put("setNString", simpleTypeConverter);
}
public String convert0(String methodName, Object[] args) {
Converter converter = this.convertermap.get(methodName);
if (converter == null) {
return "";
}
return converter.convert(args);
}
public static String convert(String methodName, Object[] args) {
return converter.convert0(methodName, args);
}
}