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
