From 9108a4de200d8b133ba546dd5df796e0e2ba8606 Mon Sep 17 00:00:00 2001 From: Ziver Koc Date: Fri, 29 Jan 2016 12:59:37 +0100 Subject: [PATCH] Improved DBBean logging, needs some more work --- Zutil.jar | Bin 1194886 -> 1194813 bytes src/zutil/db/bean/DBBean.java | 59 +++++++++--------- src/zutil/db/bean/DBBeanConfig.java | 2 +- src/zutil/db/bean/DBBeanSQLResultHandler.java | 20 +++--- 4 files changed, 40 insertions(+), 41 deletions(-) diff --git a/Zutil.jar b/Zutil.jar index c3de400c046601d3c460130292f81b73f8e66080..208b6182f78cf73391adb39f145885417de8606c 100755 GIT binary patch delta 19786 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 R3A32;t2j$_d}X4__y^Zd27Ukl diff --git a/src/zutil/db/bean/DBBean.java b/src/zutil/db/bean/DBBean.java index b127fb3..96229a8 100755 --- a/src/zutil/db/bean/DBBean.java +++ b/src/zutil/db/bean/DBBean.java @@ -183,7 +183,7 @@ public abstract class DBBean { } String sql = query.toString(); - logger.finest("Save query("+c.getName()+" id:"+this.getId()+"): "+ sql); + logger.finest("Save Bean("+c.getName()+", id: "+this.getId()+") query: "+ sql); PreparedStatement stmt = db.getPreparedStatement( sql ); // Put in the variables in the SQL int index = 1; @@ -191,11 +191,11 @@ public abstract class DBBean { // Another DBBean class if( DBBean.class.isAssignableFrom( field.getType() )){ - DBBean subobj = (DBBean)getFieldValue(field); - if(subobj != null){ - if( recursive || subobj.getId() == null ) - subobj.save(db); - stmt.setObject(index, subobj.getId() ); + DBBean subObj = (DBBean)getFieldValue(field); + if(subObj != null){ + if( recursive || subObj.getId() == null ) + subObj.save(db); + stmt.setObject(index, subObj.getId() ); } else stmt.setObject(index, null); @@ -204,7 +204,7 @@ public abstract class DBBean { // A list of DBBeans else if( List.class.isAssignableFrom( field.getType() ) && field.getAnnotation( DBLinkTable.class ) != null){ - // Du stuff later + // Do stuff later } // Normal field else{ @@ -228,34 +228,34 @@ public abstract class DBBean { List list = (List)getFieldValue(field); if( list != null ){ DBLinkTable linkTable = field.getAnnotation( DBLinkTable.class ); - String subtable = linkTable.table(); - String idcol = (linkTable.idColumn().isEmpty() ? config.tableName : linkTable.idColumn() ); - String sub_idcol = "id"; + String subTable = linkTable.table(); + String idCol = (linkTable.idColumn().isEmpty() ? config.tableName : linkTable.idColumn() ); + String subIdCol = "id"; DBBeanConfig subConfig = null; - for(DBBean subobj : list){ + for(DBBean subObj : list){ // Save the sub bean - if( recursive || subobj.getId() == null ) - subobj.save(db); - if( subobj.getId() == null ){ - logger.severe("Unable to save field "+c.getSimpleName()+"."+field.getName()+" with "+subobj.getClass().getSimpleName()); + if( recursive || subObj.getId() == null ) + subObj.save(db); + if( subObj.getId() == null ){ + logger.severe("Unable to save field "+c.getSimpleName()+"."+field.getName()+" with "+subObj.getClass().getSimpleName()); continue; } // Get the Sub object configuration if(subConfig == null){ - subConfig = DBBeanConfig.getBeanConfig( subobj.getClass() ); - sub_idcol = subConfig.idColumn; + subConfig = DBBeanConfig.getBeanConfig( subObj.getClass() ); + subIdCol = subConfig.idColumn; } // Save links in link table - String subsql = ""; - if( subtable.equals(subConfig.tableName) ) - subsql = "UPDATE "+subtable+" SET "+idcol+"=? WHERE "+sub_idcol+"=?"; + sql = ""; + if( subTable.equals(subConfig.tableName) ) + sql = "UPDATE "+subTable+" SET "+idCol+"=? WHERE "+subIdCol+"=?"; else - subsql = "REPLACE INTO "+subtable+" SET "+idcol+"=?, "+sub_idcol+"=?"; - logger.finest("List Save query("+c.getName()+" id:"+subobj.getId()+"): "+subsql); - PreparedStatement subStmt = db.getPreparedStatement( subsql ); + sql = "REPLACE INTO "+subTable+" SET "+idCol+"=?, "+subIdCol+"=?"; + logger.finest("Save Bean("+c.getName()+", id: "+subObj.getId()+") query: "+sql); + PreparedStatement subStmt = db.getPreparedStatement( sql ); subStmt.setLong(1, this.getId() ); - subStmt.setLong(2, subobj.getId() ); + subStmt.setLong(2, subObj.getId() ); DBConnection.exec(subStmt); } } @@ -279,10 +279,10 @@ public abstract class DBBean { Class c = this.getClass(); DBBeanConfig config = DBBeanConfig.getBeanConfig( c ); if( this.getId() == null ) - throw new NoSuchElementException("ID field is null( Has the bean been saved?)!"); + throw new NoSuchElementException("ID field is null? (Has the bean been saved?)"); String sql = "DELETE FROM "+config.tableName+" WHERE "+config.idColumn+"=?"; - logger.fine("Delete query("+c.getName()+" id:"+this.getId()+"): "+sql); + logger.finest("Delete Bean("+c.getName()+", id: "+this.getId()+") query: "+sql); PreparedStatement stmt = db.getPreparedStatement( sql ); // Put in the variables in the SQL stmt.setObject(1, this.getId() ); @@ -304,7 +304,7 @@ public abstract class DBBean { DBBeanConfig config = DBBeanConfig.getBeanConfig( c ); // Generate query String sql = "SELECT * FROM "+config.tableName; - logger.fine("Load All query("+c.getName()+"): "+sql); + logger.finest("Load all Beans("+c.getName()+") query: "+sql); PreparedStatement stmt = db.getPreparedStatement( sql ); // Run query List list = DBConnection.exec(stmt, DBBeanSQLResultHandler.createList(c, db) ); @@ -324,7 +324,7 @@ public abstract class DBBean { DBBeanConfig config = DBBeanConfig.getBeanConfig( c ); // Generate query String sql = "SELECT * FROM "+config.tableName+" WHERE "+config.idColumn+"=? LIMIT 1"; - logger.fine("Load query("+c.getName()+" id:"+id+"): "+sql); + logger.finest("Load Bean("+c.getName()+", id: "+id+") query: "+sql); PreparedStatement stmt = db.getPreparedStatement( sql ); stmt.setObject(1, id ); // Run query @@ -356,7 +356,8 @@ public abstract class DBBean { } query.delete( query.length()-2, query.length()); query.append(")"); - logger.fine("Create query("+c.getName()+"): "+sql.toString()); + + logger.finest("Create Bean("+c.getName()+") query: "+sql.toString()); PreparedStatement stmt = sql.getPreparedStatement( sql.toString() ); // Execute the SQL diff --git a/src/zutil/db/bean/DBBeanConfig.java b/src/zutil/db/bean/DBBeanConfig.java index 655e475..7301b87 100755 --- a/src/zutil/db/bean/DBBeanConfig.java +++ b/src/zutil/db/bean/DBBeanConfig.java @@ -44,7 +44,7 @@ class DBBeanConfig{ * Caches the fields */ private static void initBeanConfig(Class c){ - logger.fine("Initiating new DBBeanConfig( "+c.getName()+" )"); + logger.fine("Initiating new BeanConfig( "+c.getName()+" )"); DBBeanConfig config = new DBBeanConfig(); // Find the table name DBBean.DBTable tableAnn = c.getAnnotation(DBBean.DBTable.class); diff --git a/src/zutil/db/bean/DBBeanSQLResultHandler.java b/src/zutil/db/bean/DBBeanSQLResultHandler.java index c58a921..86b1be5 100755 --- a/src/zutil/db/bean/DBBeanSQLResultHandler.java +++ b/src/zutil/db/bean/DBBeanSQLResultHandler.java @@ -144,7 +144,6 @@ public class DBBeanSQLResultHandler implements SQLResultHandler{ */ private static class DBBeanGarbageCollector extends TimerTask { public void run(){ - logger.fine("DBBean GarbageCollector has started."); if( cache == null ){ logger.severe("DBBeanSQLResultHandler not initialized, stopping DBBeanGarbageCollector timer."); this.cancel(); @@ -165,14 +164,13 @@ public class DBBeanSQLResultHandler implements SQLResultHandler{ if( beanCache.timestamp + CACHE_TTL < time ){ class_cache.remove(objKey); removed++; - logger.finer("Removing old DBBean(class: "+beanCache.bean.getClass().getName() - +", id: "+beanCache.bean.getId()+") from cache."); + logger.finer("Removing old Bean("+beanCache.bean.getClass().getName()+")" + + " from cache with id: "+beanCache.bean.getId()); } } } - - if( removed > 0 ) - logger.info("DBBean GarbageCollector has cleared "+removed+" beans from cache."); + + logger.info("DBBean GarbageCollector has cleared "+removed+" beans from cache."); } } @@ -214,7 +212,7 @@ public class DBBeanSQLResultHandler implements SQLResultHandler{ DBBean obj = getCachedDBBean(bean_class, id, result); if( obj != null ) return obj; - logger.fine("Creating new DBBean("+bean_class.getName()+") with id: "+id); + logger.fine("Creating new Bean("+bean_class.getName()+") with id: "+id); obj = bean_class.newInstance(); cacheDBBean(obj, id); @@ -240,7 +238,7 @@ public class DBBeanSQLResultHandler implements SQLResultHandler{ @SuppressWarnings("unchecked") protected void updateBean(ResultSet result, DBBean obj) throws SQLException{ try { - logger.fine("Updating DBBean("+bean_class.getName()+") with id: "+obj.id); + logger.fine("Updating Bean("+bean_class.getName()+") with id: "+obj.id); obj.processing_update = true; // Get the rest for( Field field : bean_config.fields ){ @@ -299,7 +297,7 @@ public class DBBeanSQLResultHandler implements SQLResultHandler{ try{ return getCachedDBBean( c, id, null ); }catch(SQLException e){ - throw new RuntimeException("This exception sould not be thrown, Somting is realy wrong!", e); + throw new RuntimeException("This exception should not be thrown, Something ent ready wrong!", e); } } @@ -323,7 +321,7 @@ public class DBBeanSQLResultHandler implements SQLResultHandler{ return null; // Only update object if there is no update running now if( !item.bean.processing_update ){ - logger.finer("Cache to old: "+c.getName()+" ID: "+id); + logger.finer("Bean("+c.getName()+") cache to old for id: "+id); updateBean( result, item.bean ); } } @@ -332,7 +330,7 @@ public class DBBeanSQLResultHandler implements SQLResultHandler{ // The cache is null cache.get(c).remove(id); } - logger.finer("Cache miss: "+c.getName()+" ID: "+id); + logger.finer("Bean("+c.getName()+") cache miss for id: "+id); return null; }