* org.onap.dmaap
* ================================================================================
* Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ *
+ * Modifications Copyright (C) 2019 IBM.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
import java.sql.*;
import java.util.*;
-import org.apache.log4j.Logger;
+import org.onap.dmaap.dbcapi.model.*;
+
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
public class DBFieldHandler {
- static final EELFLogger errorLogger = EELFManager.getInstance().getErrorLogger();
+ static final EELFLogger errorLogger = EELFManager.getInstance().getErrorLogger();
+
+ public DBFieldHandler(Class<?> c, String fieldname, int fieldnum) throws Exception {
+ this(c, fieldname, fieldnum, null);
+ }
+ public DBFieldHandler(Class<?> c, String fieldname, int fieldnum, SqlOp op) throws Exception {
+ this.fieldnum = fieldnum;
+ StringBuilder sb = new StringBuilder();
+ for (String s: fieldname.split("_")) {
+ sb.append(s.substring(0, 1).toUpperCase()).append(s.substring(1));
+ }
+ String camelcase = sb.toString();
+ try {
+ objget = c.getMethod("is" + camelcase);
+ } catch (Exception e) {
+ errorLogger.warn("No 'is' method for " + c.getName() + " so trying 'get' method");
+ objget = c.getMethod("get" + camelcase);
+ }
+ objset = c.getMethod("set" + camelcase, objget.getReturnType());
+ sqlop = op;
+ if (sqlop != null) {
+ return;
+ }
+ Class<?> x = objget.getReturnType();
+ if (x.isEnum()) {
+ sqlop = new EnumSql(x);
+ return;
+ }
+ sqlop = sqltypes.get(x.getName());
+ if (sqlop != null) {
+ return;
+ }
+ errorLogger.error(DmaapbcLogMessageEnum.DB_NO_FIELD_HANDLER, c.getName(), fieldname, Integer.toString(fieldnum), x.getName());
+ }
public static interface SqlOp {
public Object get(ResultSet rs, int index) throws Exception;
ps.setString(index, null);
return;
}
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
String sep = "";
for (String s: val) {
sb.append(sep).append(fesc(s));
}
private static Map<String, SqlOp> sqltypes;
static {
- sqltypes = new HashMap<String, SqlOp>();
+ sqltypes = new HashMap<>();
sqltypes.put("[Ljava.lang.String;", new AofString());
sqltypes.put("java.util.Date", new SqlDate());
try {
new SqlType("Short");
new SqlType("String");
} catch (Exception e) {
+ errorLogger.error("Error", e);
errorLogger.error(DmaapbcLogMessageEnum.DB_ACCESS_INIT_ERROR, e.getMessage() );
}
}
public void fromSQL(ResultSet r, Object o) throws Exception {
objset.invoke(o, sqlop.get(r, fieldnum));
}
- public DBFieldHandler(Class<?> c, String fieldname, int fieldnum) throws Exception {
- this(c, fieldname, fieldnum, null);
- }
- public DBFieldHandler(Class<?> c, String fieldname, int fieldnum, SqlOp op) throws Exception {
- this.fieldnum = fieldnum;
- StringBuffer sb = new StringBuffer();
- for (String s: fieldname.split("_")) {
- sb.append(s.substring(0, 1).toUpperCase()).append(s.substring(1));
- }
- String camelcase = sb.toString();
- try {
- objget = c.getMethod("is" + camelcase);
- } catch (Exception e) {
- objget = c.getMethod("get" + camelcase);
- }
- objset = c.getMethod("set" + camelcase, objget.getReturnType());
- sqlop = op;
- if (sqlop != null) {
- return;
- }
- Class<?> x = objget.getReturnType();
- if (x.isEnum()) {
- sqlop = new EnumSql(x);
- return;
- }
- sqlop = sqltypes.get(x.getName());
- if (sqlop != null) {
- return;
- }
- errorLogger.error(DmaapbcLogMessageEnum.DB_NO_FIELD_HANDLER, c.getName(), fieldname, Integer.toString(fieldnum), x.getName());
- }
public static String fesc(String s) {
if (s == null) {
return(s);