influxDB测试代码

This commit is contained in:
2023-04-27 16:34:40 +08:00
parent 1f2d333924
commit 1c0173a15b
4 changed files with 258 additions and 200 deletions

View File

@@ -1,5 +1,7 @@
package com.njcn.prepare.harmonic.pojo.influxdb.po;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.njcn.common.utils.serializer.InstantDateSerializer;
import lombok.Data;
import org.influxdb.annotation.Column;
import org.influxdb.annotation.Measurement;
@@ -11,6 +13,7 @@ import java.time.Instant;
public class DataVPO {
@Column(name = "time")
@JsonSerialize(using = InstantDateSerializer.class)
private Instant time;
@Column(name = "freq")

View File

@@ -44,6 +44,7 @@ public class DistortionRateController extends BaseController {
@PostMapping("/distortionRate")
@ApiOperation("谐波畸变率排名_mysql")
@ApiImplicitParam(name = "lineParam", value = "参数", required = true)
@Deprecated
public HttpResult<String> distortionRate(@RequestBody @Validated LineParam lineParam){
String methodDescribe = getMethodDescribe("distortionRate");
distortionRateService.distortionRate(lineParam);

View File

@@ -0,0 +1,22 @@
package com.njcn.prepare.harmonic.mapper;
import com.njcn.harmonic.pojo.po.RStatDataVD;
import com.njcn.influx.base.InfluxDbBaseMapper;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.prepare.harmonic.pojo.influxdb.po.DataVPO;
import java.util.List;
/**
* <p>
* Mapper 接口
* </p>
*
* @author lxp
* @since 2023-03-16
*/
public interface InfluxTestMapper extends InfluxDbBaseMapper<DataVPO> {
List<RStatDataVD> selectData(InfluxQueryWrapper influxQueryWrapper);
}

View File

@@ -2,9 +2,11 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.line;
import com.njcn.harmonic.pojo.po.*;
import com.njcn.harmonic.pojo.po.day.*;
import com.njcn.influx.query.InfluxQueryWrapper;
import com.njcn.influxdb.param.InfluxDBPublicParam;
import com.njcn.influxdb.utils.InfluxDbUtils;
import com.njcn.prepare.harmonic.constant.InfluxdbPOConverter;
import com.njcn.prepare.harmonic.mapper.InfluxTestMapper;
import com.njcn.prepare.harmonic.pojo.influxdb.po.*;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpFlickerReportDPO;
import com.njcn.prepare.harmonic.pojo.mysql.po.line.RMpHarmonicPReportDPO;
@@ -27,6 +29,7 @@ import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.beans.PropertyDescriptor;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Instant;
@@ -563,211 +566,240 @@ public class DayDataServiceImpl implements DayDataService {
List<RStatDataInharmVDPO> dataInHarmVPOList = new ArrayList<> ();
List<RStatDataPltDPO> dataPltPOList = new ArrayList<> ();
List<DataVPO> dataV = getDataV("f3e221c3a75c140b348b1fdb619541f3", "2023-04-26 00:00:00", "2023-04-26 23:59:59");
System.out.println("dataV==:" + dataV);
List<RStatDataVD> list = test("f3e221c3a75c140b348b1fdb619541f3", "2023-04-26 00:00:00", "2023-04-26 23:59:59");
System.out.println("list==:" + list);
for (String lineIndex : indexLists) {
/*生成dayV表*/
List<DataVPO> dataV = getDataV(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataV)) {
for (DataVPO item : dataV) {
RStatDataVDPO po1 = new RStatDataVDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataVPOList.add(po1);
}
}
/*生成dayI表*/
List<DataIPO> dataI = getDataI(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataI)) {
for (DataIPO item : dataI) {
RStatDataIDPO po1 = new RStatDataIDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataIPOList.add(po1);
}
}
/*生成dayFlicker表*/
List<DataFlickerPO> dataFlickerPO = getDataFlicker(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataFlickerPO)) {
for (DataFlickerPO item : dataFlickerPO) {
RStatDataFlickerDPO po1 = new RStatDataFlickerDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataFlickerPOList.add(po1);
}
}
/*生成dayFluc表*/
List<DataFlucPO> dataFlucPO = getDataFluc(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataFlucPO)) {
for (DataFlucPO item : dataFlucPO) {
RStatDataFlucDPO po1 = new RStatDataFlucDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataFlucPOList.add(po1);
}
}
/*生成dayHarmphasicI表*/
List<DataHarmPhasicIPO> dataHarmphasicIPO = getDataHarmphasicI(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataHarmphasicIPO)) {
for (DataHarmPhasicIPO item : dataHarmphasicIPO) {
RStatDataHarmphasicIDPO po1 = new RStatDataHarmphasicIDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataHarmPhasicIPOList.add(po1);
}
}
/*生成dayHarmphasicV表*/
List<DataHarmPhasicVPO> dataHarmphasicVPO = getDataHarmphasicV(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataHarmphasicVPO)) {
for (DataHarmPhasicVPO item : dataHarmphasicVPO) {
RStatDataHarmphasicVDPO po1 = new RStatDataHarmphasicVDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataHarmPhasicVPOList.add(po1);
}
}
/*生成dayHarmPowerP表*/
List<DataHarmPowerPPO> dataHarmPowerPPO = getDataHarmPowerP(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataHarmPowerPPO)) {
for (DataHarmPowerPPO item : dataHarmPowerPPO) {
RStatDataHarmpowerPDPO po1 = new RStatDataHarmpowerPDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataHarmPowerPPOList.add(po1);
}
}
/*生成dayHarmPowerQ表*/
List<DataHarmPowerQPO> dataHarmPowerQPO = getDataHarmPowerQ(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataHarmPowerQPO)) {
for (DataHarmPowerQPO item : dataHarmPowerQPO) {
RStatDataHarmpowerQDPO po1 = new RStatDataHarmpowerQDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataHarmPowerQPOList.add(po1);
}
}
/*生成dayHarmPowerS表*/
List<DataHarmPowerSPO> dataHarmPowers = getDataHarmPowerS(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataHarmPowers)) {
for (DataHarmPowerSPO item : dataHarmPowers) {
RStatDataHarmpowerSDPO po1 = new RStatDataHarmpowerSDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataHarmPowerSPOList.add(po1);
}
}
/*生成dayHarmRateI*/
List<DataHarmRateIPO> dataHarmRateI = getDataHarmRateI(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataHarmRateI)) {
for (DataHarmRateIPO item : dataHarmRateI) {
RStatDataHarmrateIDPO po1 = new RStatDataHarmrateIDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataHarmRateIPOList.add(po1);
}
}
/*生成dayHarmRateV*/
List<DataHarmRateVPO> dataHarmRateVPO = getDataHarmRateV(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataHarmRateVPO)) {
for (DataHarmRateVPO item : dataHarmRateVPO) {
RStatDataHarmrateVDPO po1 = new RStatDataHarmrateVDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataHarmRateVPOList.add(po1);
}
}
/*生成dayInHarmI*/
List<DataInHarmIPO> dataInHarmIPO = getDataInHarmI(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataInHarmIPO)) {
for (DataInHarmIPO item : dataInHarmIPO) {
RStatDataInharmIDPO po1 = new RStatDataInharmIDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataInHarmIPOList.add(po1);
}
}
/*生成dayInHarmV*/
List<DataInHarmVPO> dataInHarmVPO = getDataInHarmV(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataInHarmVPO)) {
for (DataInHarmVPO item : dataInHarmVPO) {
RStatDataInharmVDPO po1 = new RStatDataInharmVDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataInHarmVPOList.add(po1);
}
}
/*生成dayPlt*/
List<DataPltPO> dataPlt = getDataPlt(lineIndex, startTime, endTime);
if (!CollectionUtils.isEmpty(dataPlt)) {
for (DataPltPO item : dataPlt) {
RStatDataPltDPO po1 = new RStatDataPltDPO();
BeanUtils.copyProperties(item,po1);
po1.setTime(time);
po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
dataPltPOList.add(po1);
}
}
// /*生成dayV表*/
// List<DataVPO> dataV = getDataV(lineIndex, startTime, endTime);
// System.out.println("dataV==:" + dataV);
// List<RStatDataVD> list = test(lineIndex,startTime,endTime);
// System.out.println("list==:" + list);
// if (!CollectionUtils.isEmpty(dataV)) {
// for (DataVPO item : dataV) {
// RStatDataVDPO po1 = new RStatDataVDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataVPOList.add(po1);
// }
// }
// /*生成dayI表*/
// List<DataIPO> dataI = getDataI(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataI)) {
// for (DataIPO item : dataI) {
// RStatDataIDPO po1 = new RStatDataIDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataIPOList.add(po1);
// }
// }
// /*生成dayFlicker表*/
// List<DataFlickerPO> dataFlickerPO = getDataFlicker(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataFlickerPO)) {
// for (DataFlickerPO item : dataFlickerPO) {
// RStatDataFlickerDPO po1 = new RStatDataFlickerDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataFlickerPOList.add(po1);
// }
// }
// /*生成dayFluc表*/
// List<DataFlucPO> dataFlucPO = getDataFluc(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataFlucPO)) {
// for (DataFlucPO item : dataFlucPO) {
// RStatDataFlucDPO po1 = new RStatDataFlucDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataFlucPOList.add(po1);
// }
// }
// /*生成dayHarmphasicI表*/
// List<DataHarmPhasicIPO> dataHarmphasicIPO = getDataHarmphasicI(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataHarmphasicIPO)) {
// for (DataHarmPhasicIPO item : dataHarmphasicIPO) {
// RStatDataHarmphasicIDPO po1 = new RStatDataHarmphasicIDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataHarmPhasicIPOList.add(po1);
// }
// }
// /*生成dayHarmphasicV表*/
// List<DataHarmPhasicVPO> dataHarmphasicVPO = getDataHarmphasicV(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataHarmphasicVPO)) {
// for (DataHarmPhasicVPO item : dataHarmphasicVPO) {
// RStatDataHarmphasicVDPO po1 = new RStatDataHarmphasicVDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataHarmPhasicVPOList.add(po1);
// }
// }
// /*生成dayHarmPowerP表*/
// List<DataHarmPowerPPO> dataHarmPowerPPO = getDataHarmPowerP(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataHarmPowerPPO)) {
// for (DataHarmPowerPPO item : dataHarmPowerPPO) {
// RStatDataHarmpowerPDPO po1 = new RStatDataHarmpowerPDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataHarmPowerPPOList.add(po1);
// }
// }
// /*生成dayHarmPowerQ表*/
// List<DataHarmPowerQPO> dataHarmPowerQPO = getDataHarmPowerQ(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataHarmPowerQPO)) {
// for (DataHarmPowerQPO item : dataHarmPowerQPO) {
// RStatDataHarmpowerQDPO po1 = new RStatDataHarmpowerQDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataHarmPowerQPOList.add(po1);
// }
// }
// /*生成dayHarmPowerS表*/
// List<DataHarmPowerSPO> dataHarmPowers = getDataHarmPowerS(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataHarmPowers)) {
// for (DataHarmPowerSPO item : dataHarmPowers) {
// RStatDataHarmpowerSDPO po1 = new RStatDataHarmpowerSDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataHarmPowerSPOList.add(po1);
// }
// }
// /*生成dayHarmRateI*/
// List<DataHarmRateIPO> dataHarmRateI = getDataHarmRateI(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataHarmRateI)) {
// for (DataHarmRateIPO item : dataHarmRateI) {
// RStatDataHarmrateIDPO po1 = new RStatDataHarmrateIDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataHarmRateIPOList.add(po1);
// }
// }
// /*生成dayHarmRateV*/
// List<DataHarmRateVPO> dataHarmRateVPO = getDataHarmRateV(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataHarmRateVPO)) {
// for (DataHarmRateVPO item : dataHarmRateVPO) {
// RStatDataHarmrateVDPO po1 = new RStatDataHarmrateVDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataHarmRateVPOList.add(po1);
// }
// }
// /*生成dayInHarmI*/
// List<DataInHarmIPO> dataInHarmIPO = getDataInHarmI(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataInHarmIPO)) {
// for (DataInHarmIPO item : dataInHarmIPO) {
// RStatDataInharmIDPO po1 = new RStatDataInharmIDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataInHarmIPOList.add(po1);
// }
// }
// /*生成dayInHarmV*/
// List<DataInHarmVPO> dataInHarmVPO = getDataInHarmV(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataInHarmVPO)) {
// for (DataInHarmVPO item : dataInHarmVPO) {
// RStatDataInharmVDPO po1 = new RStatDataInharmVDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataInHarmVPOList.add(po1);
// }
// }
// /*生成dayPlt*/
// List<DataPltPO> dataPlt = getDataPlt(lineIndex, startTime, endTime);
// if (!CollectionUtils.isEmpty(dataPlt)) {
// for (DataPltPO item : dataPlt) {
// RStatDataPltDPO po1 = new RStatDataPltDPO();
// BeanUtils.copyProperties(item,po1);
// po1.setTime(time);
// po1.setQualityFlag(Integer.parseInt(item.getQualityFlag()));
// dataPltPOList.add(po1);
// }
// }
}
if (!CollectionUtils.isEmpty(dataVPOList)){
statDataVDService.insert(dataVPOList);
}
if (!CollectionUtils.isEmpty(dataIPOList)){
statDataIDService.insert(dataIPOList);
}
if (!CollectionUtils.isEmpty(dataFlickerPOList)){
statDataFlickerDService.insert(dataFlickerPOList);
}
if (!CollectionUtils.isEmpty(dataFlucPOList)){
statDataFlucDService.insert(dataFlucPOList);
}
if (!CollectionUtils.isEmpty(dataHarmPhasicIPOList)){
statDataHarmphasicIDService.insert(dataHarmPhasicIPOList);
}
if (!CollectionUtils.isEmpty(dataHarmPhasicVPOList)){
statDataHarmphasicVDService.insert(dataHarmPhasicVPOList);
}
if (!CollectionUtils.isEmpty(dataHarmPowerPPOList)){
statDataHarmpowerPDService.insert(dataHarmPowerPPOList);
}
if (!CollectionUtils.isEmpty(dataHarmPowerQPOList)){
statDataHarmpowerQDService.insert(dataHarmPowerQPOList);
}
if (!CollectionUtils.isEmpty(dataHarmPowerSPOList)){
statDataHarmpowerSDService.insert(dataHarmPowerSPOList);
}
if (!CollectionUtils.isEmpty(dataHarmRateIPOList)){
statDataHarmRateIDService.insert(dataHarmRateIPOList);
}
if (!CollectionUtils.isEmpty(dataHarmRateVPOList)){
statDataHarmRateVDService.insert(dataHarmRateVPOList);
}
if (!CollectionUtils.isEmpty(dataInHarmIPOList)){
statDataInharmIDService.insert(dataInHarmIPOList);
}
if (!CollectionUtils.isEmpty(dataInHarmVPOList)){
statDataInharmVDService.insert(dataInHarmVPOList);
}
if (!CollectionUtils.isEmpty(dataPltPOList)){
statDataPltDService.insert(dataPltPOList);
}
// if (!CollectionUtils.isEmpty(dataVPOList)){
// statDataVDService.insert(dataVPOList);
// }
// if (!CollectionUtils.isEmpty(dataIPOList)){
// statDataIDService.insert(dataIPOList);
// }
// if (!CollectionUtils.isEmpty(dataFlickerPOList)){
// statDataFlickerDService.insert(dataFlickerPOList);
// }
// if (!CollectionUtils.isEmpty(dataFlucPOList)){
// statDataFlucDService.insert(dataFlucPOList);
// }
// if (!CollectionUtils.isEmpty(dataHarmPhasicIPOList)){
// statDataHarmphasicIDService.insert(dataHarmPhasicIPOList);
// }
// if (!CollectionUtils.isEmpty(dataHarmPhasicVPOList)){
// statDataHarmphasicVDService.insert(dataHarmPhasicVPOList);
// }
// if (!CollectionUtils.isEmpty(dataHarmPowerPPOList)){
// statDataHarmpowerPDService.insert(dataHarmPowerPPOList);
// }
// if (!CollectionUtils.isEmpty(dataHarmPowerQPOList)){
// statDataHarmpowerQDService.insert(dataHarmPowerQPOList);
// }
// if (!CollectionUtils.isEmpty(dataHarmPowerSPOList)){
// statDataHarmpowerSDService.insert(dataHarmPowerSPOList);
// }
// if (!CollectionUtils.isEmpty(dataHarmRateIPOList)){
// statDataHarmRateIDService.insert(dataHarmRateIPOList);
// }
// if (!CollectionUtils.isEmpty(dataHarmRateVPOList)){
// statDataHarmRateVDService.insert(dataHarmRateVPOList);
// }
// if (!CollectionUtils.isEmpty(dataInHarmIPOList)){
// statDataInharmIDService.insert(dataInHarmIPOList);
// }
// if (!CollectionUtils.isEmpty(dataInHarmVPOList)){
// statDataInharmVDService.insert(dataInHarmVPOList);
// }
// if (!CollectionUtils.isEmpty(dataPltPOList)){
// statDataPltDService.insert(dataPltPOList);
// }
log.info(LocalDateTime.now()+"data表转day结束=====》");
}
private final InfluxTestMapper mapper;
public List<RStatDataVD> test(String lineId,String startTime, String endTime) {
InfluxQueryWrapper influxQueryWrapper = new InfluxQueryWrapper(DataVPO.class, RStatDataVD.class);
influxQueryWrapper.max(DataVPO::getFreq);
influxQueryWrapper.eq(DataVPO::getLineId,lineId);
influxQueryWrapper.between(DataVPO::getTime,startTime,endTime);
List<RStatDataVD> list = mapper.selectData(influxQueryWrapper);
return list;
}
/**
* 功能描述:获取dataV数据
* @author xy
@@ -3837,10 +3869,10 @@ public class DayDataServiceImpl implements DayDataService {
*/
public String[] getNullPropertyNames (Object source) {
final BeanWrapper src = new BeanWrapperImpl (source);
java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors ( );
PropertyDescriptor[] pds = src.getPropertyDescriptors ( );
Set<String> emptyNames = new HashSet<String> ( );
for (java.beans.PropertyDescriptor pd : pds) {
for (PropertyDescriptor pd : pds) {
Object srcValue = src.getPropertyValue (pd.getName ( ));
if (srcValue == null){
emptyNames.add (pd.getName ( ));