Source:
<code>protected List<String> getSurveillanceFields(final CertifiedProductSearchDetails data, final Surveillance surv) { List<String> survFields = new ArrayList<String>(); survFields.add(data.getDeveloper().getName()); survFields.add(data.getProduct().getName()); survFields.add(data.getVersion().getVersion()); survFields.add(data.getChplProductNumber()); String productDetailsUrl = getEnv().getProperty("chplUrlBegin").trim(); if (!productDetailsUrl.endsWith("/")) { productDetailsUrl += "/"; } <START> productDetailsUrl += "#/listing/" + data.getId(); <END> survFields.add(productDetailsUrl); survFields.add(data.getCertifyingBody().get(CertifiedProductSearchDetails.ACB_NAME_KEY).toString()); survFields.add(data.getCurrentStatus().getStatus().getName()); Long lastCertificationChangeMillis = data.getCurrentStatus().getEventDate(); if (lastCertificationChangeMillis.longValue() == data.getCertificationDate().longValue()) { survFields.add("No status change"); } else { LocalDateTime lastStatusChangeDate = LocalDateTime .ofInstant(Instant.ofEpochMilli(lastCertificationChangeMillis), ZoneId.systemDefault()); survFields.add(getDateFormatter().format(lastStatusChangeDate)); } if (surv.getFriendlyId() != null) { survFields.add(surv.getFriendlyId()); } else { survFields.add(""); } if (surv.getStartDate() != null) { LocalDateTime survStartDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(surv.getStartDate().getTime()), ZoneId.systemDefault()); survFields.add(getDateFormatter().format(survStartDate)); } else { survFields.add(""); } if (surv.getEndDate() != null) { LocalDateTime survEndDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(surv.getEndDate().getTime()), ZoneId.systemDefault()); survFields.add(getDateFormatter().format(survEndDate)); } else { survFields.add(""); } survFields.add(surv.getType().getName()); survFields.add(surv.getLastModifiedDate().toInstant().atOffset(ZoneOffset.UTC).format(getDateTimeFormatter())); return survFields; }</code><technical_language>new listingDetailsUrl property</technical_language>

Target:
protected List<String> getSurveillanceFields(final CertifiedProductSearchDetails data, final Surveillance surv) { List<String> survFields = new ArrayList<String>(); survFields.add(data.getDeveloper().getName()); survFields.add(data.getProduct().getName()); survFields.add(data.getVersion().getVersion()); survFields.add(data.getChplProductNumber()); String productDetailsUrl = getEnv().getProperty("chplUrlBegin").trim() + getEnv().getProperty("listingDetailsUrl") + data.getId(); survFields.add(productDetailsUrl); survFields.add(data.getCertifyingBody().get(CertifiedProductSearchDetails.ACB_NAME_KEY).toString()); survFields.add(data.getCurrentStatus().getStatus().getName()); Long lastCertificationChangeMillis = data.getCurrentStatus().getEventDate(); if (lastCertificationChangeMillis.longValue() == data.getCertificationDate().longValue()) { survFields.add("No status change"); } else { LocalDateTime lastStatusChangeDate = LocalDateTime .ofInstant(Instant.ofEpochMilli(lastCertificationChangeMillis), ZoneId.systemDefault()); survFields.add(getDateFormatter().format(lastStatusChangeDate)); } if (surv.getFriendlyId() != null) { survFields.add(surv.getFriendlyId()); } else { survFields.add(""); } if (surv.getStartDate() != null) { LocalDateTime survStartDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(surv.getStartDate().getTime()), ZoneId.systemDefault()); survFields.add(getDateFormatter().format(survStartDate)); } else { survFields.add(""); } if (surv.getEndDate() != null) { LocalDateTime survEndDate = LocalDateTime.ofInstant(Instant.ofEpochMilli(surv.getEndDate().getTime()), ZoneId.systemDefault()); survFields.add(getDateFormatter().format(survEndDate)); } else { survFields.add(""); } survFields.add(surv.getType().getName()); survFields.add(surv.getLastModifiedDate().toInstant().atOffset(ZoneOffset.UTC).format(getDateTimeFormatter())); return survFields; }