Lior Vernia has uploaded a new change for review.

Change subject: core: Extract common NetworkStatistics DAO code
......................................................................

core: Extract common NetworkStatistics DAO code

The same code was duplicated all over different DAOs (for host
interfaces, VM interfaces, VM interface statistics). It's now
extracted and re-used.

Change-Id: Ifc60a5b80d7ef042b1b81200bb8542081b42acc0
Signed-off-by: Lior Vernia <[email protected]>
---
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
A 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkStatisticsDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
4 files changed, 100 insertions(+), 54 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/61/36461/1

diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
index 02c1c3e..17f3664 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/InterfaceDaoDbFacadeImpl.java
@@ -13,7 +13,6 @@
 
 import org.ovirt.engine.core.common.businessentities.network.Bond;
 import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos;
-import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
 import 
org.ovirt.engine.core.common.businessentities.network.NetworkBootProtocol;
 import org.ovirt.engine.core.common.businessentities.network.Nic;
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
@@ -24,6 +23,8 @@
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.MapSqlParameterMapper;
 import org.ovirt.engine.core.dao.BaseDAODbFacade;
+import 
org.ovirt.engine.core.dao.network.NetworkStatisticsDaoDbFacadeImpl.NetworkStatisticsParametersMapper;
+import 
org.ovirt.engine.core.dao.network.NetworkStatisticsDaoDbFacadeImpl.NetworkStatisticsRowMapper;
 import org.ovirt.engine.core.utils.SerializationFactory;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@@ -90,13 +91,9 @@
     }
 
     private MapSqlParameterSource 
createStatisticsParametersMapper(VdsNetworkStatistics stats) {
+        NetworkStatisticsParametersMapper<VdsNetworkStatistics> mapper = new 
NetworkStatisticsParametersMapper<>();
         return getCustomMapSqlParameterSource()
-                .addValue("id", stats.getId())
-                .addValue("rx_drop", stats.getReceiveDropRate())
-                .addValue("rx_rate", stats.getReceiveRate())
-                .addValue("tx_drop", stats.getTransmitDropRate())
-                .addValue("tx_rate", stats.getTransmitRate())
-                .addValue("iface_status", stats.getStatus())
+                .addValues(mapper.createParametersMap(stats))
                 .addValue("vds_id", stats.getVdsId());
     }
 
@@ -299,13 +296,8 @@
                 public VdsNetworkInterface mapRow(ResultSet rs, int rowNum)
                         throws SQLException {
                     VdsNetworkInterface entity = createInterface(rs);
-                    entity.getStatistics().setId(getGuidDefaultEmpty(rs, 
"id"));
-                    
entity.getStatistics().setReceiveRate(rs.getDouble("rx_rate"));
-                    
entity.getStatistics().setTransmitRate(rs.getDouble("tx_rate"));
-                    
entity.getStatistics().setReceiveDropRate(rs.getDouble("rx_drop"));
-                    
entity.getStatistics().setTransmitDropRate(rs.getDouble("tx_drop"));
-                    
entity.getStatistics().setStatus(InterfaceStatus.forValue(rs.getInt("iface_status")));
-                    entity.getStatistics().setVdsId(getGuidDefaultEmpty(rs, 
"vds_id"));
+                    HostNetworkStatisticsRowMapper statisticsMapper = new 
HostNetworkStatisticsRowMapper();
+                    entity.setStatistics(statisticsMapper.mapRow(rs, rowNum));
                     entity.setType((Integer) rs.getObject("type"));
                     entity.setGateway(rs.getString("gateway"));
                     entity.setSubnet(rs.getString("subnet"));
@@ -378,4 +370,19 @@
             return new Pair<Guid, String>(getGuid(rs, "vds_id"), 
rs.getString("network_name"));
         }
     };
+
+    private static class HostNetworkStatisticsRowMapper extends 
NetworkStatisticsRowMapper<VdsNetworkStatistics> {
+
+        @Override
+        public VdsNetworkStatistics mapRow(ResultSet rs, int rowNum) throws 
SQLException {
+            VdsNetworkStatistics entity = super.mapRow(rs, rowNum);
+            entity.setVdsId(getGuidDefaultEmpty(rs, "vds_id"));
+            return entity;
+        }
+
+        @Override
+        protected VdsNetworkStatistics createEntity() {
+            return new VdsNetworkStatistics();
+        }
+    }
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkStatisticsDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkStatisticsDaoDbFacadeImpl.java
new file mode 100644
index 0000000..9bc2f88
--- /dev/null
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/NetworkStatisticsDaoDbFacadeImpl.java
@@ -0,0 +1,64 @@
+package org.ovirt.engine.core.dao.network;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
+import org.ovirt.engine.core.common.businessentities.network.NetworkStatistics;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+
+public abstract class NetworkStatisticsDaoDbFacadeImpl<T extends 
NetworkStatistics> extends MassOperationsGenericDaoDbFacade<T, Guid> {
+
+    protected NetworkStatisticsDaoDbFacadeImpl(String 
entityStoredProcedureName) {
+        super(entityStoredProcedureName);
+    }
+
+    @Override
+    protected MapSqlParameterSource createFullParametersMapper(T stats) {
+        NetworkStatisticsParametersMapper<T> mapper = new 
NetworkStatisticsParametersMapper<>();
+        return 
getCustomMapSqlParameterSource().addValues(mapper.createParametersMap(stats));
+
+    }
+
+    @Override
+    protected MapSqlParameterSource createIdParameterMapper(Guid id) {
+        return getCustomMapSqlParameterSource().addValue("id", id);
+    }
+
+    public static class NetworkStatisticsParametersMapper<T extends 
NetworkStatistics> {
+
+        public Map<String, Object> createParametersMap(T stats) {
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", stats.getId());
+            map.put("rx_drop", stats.getReceiveDropRate());
+            map.put("rx_rate", stats.getReceiveRate());
+            map.put("tx_drop", stats.getTransmitDropRate());
+            map.put("tx_rate", stats.getTransmitRate());
+            map.put("iface_status", stats.getStatus());
+            return map;
+        }
+    }
+
+    protected static abstract class NetworkStatisticsRowMapper<T extends 
NetworkStatistics> implements RowMapper<T> {
+
+        protected abstract T createEntity();
+
+        @Override
+        public T mapRow(ResultSet rs, int rowNum) throws SQLException {
+            T entity = createEntity();
+            entity.setId(getGuidDefaultEmpty(rs, "id"));
+            entity.setReceiveRate(rs.getDouble("rx_rate"));
+            entity.setTransmitRate(rs.getDouble("tx_rate"));
+            entity.setReceiveDropRate(rs.getDouble("rx_drop"));
+            entity.setTransmitDropRate(rs.getDouble("tx_drop"));
+            
entity.setStatus(InterfaceStatus.forValue(rs.getInt("iface_status")));
+            return entity;
+        }
+    }
+
+}
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java
index d99da23..714214b 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkInterfaceDaoDbFacadeImpl.java
@@ -6,10 +6,10 @@
 import java.util.List;
 
 import 
org.ovirt.engine.core.common.businessentities.comparators.InterfaceComparerByMAC;
-import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.DefaultReadDaoDbFacade;
+import 
org.ovirt.engine.core.dao.network.VmNetworkStatisticsDaoDbFacadeImpl.VmNetworkStatisticsRowMapper;
 import 
org.ovirt.engine.core.dao.network.VmNicDaoDbFacadeImpl.VmNicRowMapperBase;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
@@ -81,16 +81,11 @@
 
         public static VmNetworkInterfaceRowMapper INSTANCE = new 
VmNetworkInterfaceRowMapper();
 
-        @SuppressWarnings("unchecked")
         @Override
         public VmNetworkInterface mapRow(ResultSet rs, int rowNum) throws 
SQLException {
             VmNetworkInterface entity = super.mapRow(rs, rowNum);
-            entity.getStatistics().setId(getGuidDefaultEmpty(rs, "id"));
-            entity.getStatistics().setReceiveRate(rs.getDouble("rx_rate"));
-            entity.getStatistics().setTransmitRate(rs.getDouble("tx_rate"));
-            entity.getStatistics().setReceiveDropRate(rs.getDouble("rx_drop"));
-            
entity.getStatistics().setTransmitDropRate(rs.getDouble("tx_drop"));
-            
entity.getStatistics().setStatus(InterfaceStatus.forValue(rs.getInt("iface_status")));
+            VmNetworkStatisticsRowMapper statisticsMapper = new 
VmNetworkStatisticsRowMapper();
+            entity.setStatistics(statisticsMapper.mapRow(rs, rowNum));
             entity.setNetworkName(rs.getString("network_name"));
             entity.setVmName(rs.getString("vm_name"));
             entity.setVnicProfileName(rs.getString("vnic_profile_name"));
@@ -98,8 +93,8 @@
             entity.setPortMirroring(rs.getBoolean("port_mirroring"));
             entity.setQosName(rs.getString("qos_name"));
             return entity;
-
         }
+
         @Override
         protected VmNetworkInterface createVmNicEntity() {
             return new VmNetworkInterface();
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
index 5b21cdb..6957e2c 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/network/VmNetworkStatisticsDaoDbFacadeImpl.java
@@ -1,18 +1,13 @@
 package org.ovirt.engine.core.dao.network;
 
-import java.sql.ResultSet;
-import java.sql.SQLException;
 import java.util.List;
 
 import org.apache.commons.lang.NotImplementedException;
-import org.ovirt.engine.core.common.businessentities.network.InterfaceStatus;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkStatistics;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.core.dao.MassOperationsGenericDaoDbFacade;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 
-public class VmNetworkStatisticsDaoDbFacadeImpl extends 
MassOperationsGenericDaoDbFacade<VmNetworkStatistics, Guid>
+public class VmNetworkStatisticsDaoDbFacadeImpl extends 
NetworkStatisticsDaoDbFacadeImpl<VmNetworkStatistics>
         implements VmNetworkStatisticsDao {
 
     public VmNetworkStatisticsDaoDbFacadeImpl() {
@@ -26,36 +21,21 @@
     }
 
     @Override
-    protected MapSqlParameterSource createIdParameterMapper(Guid id) {
-        return getCustomMapSqlParameterSource().addValue("id", id);
-    }
-
-    @Override
     protected MapSqlParameterSource 
createFullParametersMapper(VmNetworkStatistics stats) {
-        return createIdParameterMapper(stats.getId())
-                .addValue("rx_drop", stats.getReceiveDropRate())
-                .addValue("rx_rate", stats.getReceiveRate())
-                .addValue("tx_drop", stats.getTransmitDropRate())
-                .addValue("tx_rate", stats.getTransmitRate())
-                .addValue("iface_status", stats.getStatus())
+        return super.createFullParametersMapper(stats)
                 .addValue("vm_id", stats.getVmId());
     }
 
     @Override
     protected RowMapper<VmNetworkStatistics> createEntityRowMapper() {
-        return new RowMapper<VmNetworkStatistics>() {
-            @Override
-            public VmNetworkStatistics mapRow(ResultSet rs, int rowNum)
-                    throws SQLException {
-                VmNetworkStatistics entity = new VmNetworkStatistics();
-                entity.setId(getGuidDefaultEmpty(rs, "id"));
-                entity.setReceiveRate(rs.getDouble("rx_rate"));
-                entity.setTransmitRate(rs.getDouble("tx_rate"));
-                entity.setReceiveDropRate(rs.getDouble("rx_drop"));
-                entity.setTransmitDropRate(rs.getDouble("tx_drop"));
-                
entity.setStatus(InterfaceStatus.forValue(rs.getInt("iface_status")));
-                return entity;
-            }
-        };
+        return new VmNetworkStatisticsRowMapper();
+    }
+
+    public static class VmNetworkStatisticsRowMapper extends 
NetworkStatisticsRowMapper<VmNetworkStatistics> {
+
+        @Override
+        protected VmNetworkStatistics createEntity() {
+            return new VmNetworkStatistics();
+        }
     }
 }


-- 
To view, visit http://gerrit.ovirt.org/36461
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifc60a5b80d7ef042b1b81200bb8542081b42acc0
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Lior Vernia <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to