diff --git a/src/main/java/no/nibio/vips/logic/entity/Observation.java b/src/main/java/no/nibio/vips/logic/entity/Observation.java index 241e0c14ad16f334804c251a2f47dc698315c2f1..863a6be53cf41ac3278c12cb6f182341bd7fecea 100755 --- a/src/main/java/no/nibio/vips/logic/entity/Observation.java +++ b/src/main/java/no/nibio/vips/logic/entity/Observation.java @@ -703,6 +703,7 @@ public class Observation implements Serializable, no.nibio.vips.observation.Obse // choice of the observer this.location != null && this.geoinfo == null ? this.location.getGeoJSON() : this.getGeoinfo(), this.getObservationHeading(), + this.getObservationText(), this.getBroadcastMessage(), this.getLocationIsPrivate(), this.getIsPositive(), diff --git a/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java b/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java index a4dd12f901526bfda95fb6c5edadc1c793218772..463da57b11f2b4966cd75e3d16d8990f2950122e 100644 --- a/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java +++ b/src/main/java/no/nibio/vips/logic/entity/rest/ObservationListItem.java @@ -33,6 +33,7 @@ public class ObservationListItem implements Comparable{ private String observationTimeSeriesLabel; private String geoInfo; private String observationHeading; + private String observationText; private String observationData; private ObservationDataSchema observationDataSchema; private Boolean broadcastMessage; @@ -50,6 +51,7 @@ public class ObservationListItem implements Comparable{ String observationTimeSeriesLabel, String geoinfo, String observationHeading, + String observationText, Boolean broadcastMessage, Boolean locationIsPrivate, Boolean isPositive, @@ -66,6 +68,7 @@ public class ObservationListItem implements Comparable{ this.observationTimeSeriesLabel = observationTimeSeriesLabel; this.geoInfo = geoinfo; this.observationHeading = observationHeading; + this.observationText = observationText; this.broadcastMessage = broadcastMessage; this.locationIsPrivate = locationIsPrivate; this.isPositive = isPositive; @@ -190,6 +193,20 @@ public class ObservationListItem implements Comparable{ this.observationHeading = observationHeading; } + /** + * @return the observation text + */ + public String getObservationText() { + return observationText; + } + + /** + * @param observationText The observation text to set + */ + public void setObservationText(String observationText) { + this.observationText = observationText; + } + /** * @return the organismId */ diff --git a/src/main/java/no/nibio/vips/logic/service/ObservationService.java b/src/main/java/no/nibio/vips/logic/service/ObservationService.java index 128a5bf9c241cb2103a9bc04d34486a1d313def7..df362f8538e454defc4e1bef1f2b3597e5e959e8 100755 --- a/src/main/java/no/nibio/vips/logic/service/ObservationService.java +++ b/src/main/java/no/nibio/vips/logic/service/ObservationService.java @@ -200,7 +200,7 @@ public class ObservationService { try { List<ObservationListItem> observations = getFilteredObservationListItems(organizationId, observationTimeSeriesId, pestId, cropId, cropCategoryId, fromStr, toStr, userUUID, localeStr, isPositive); - byte[] excelFile = ExcelFileGenerator.generateExcel(observations, locale); + byte[] excelFile = ExcelFileGenerator.generateExcel(user, locale, observations); return Response .ok(excelFile) diff --git a/src/main/java/no/nibio/vips/logic/util/ExcelFileGenerator.java b/src/main/java/no/nibio/vips/logic/util/ExcelFileGenerator.java index 0e927d28cfd17357b6d7d3ad2633cd6ff51cc045..2a68e68af240bf195e3221fb462e74b8e634da67 100644 --- a/src/main/java/no/nibio/vips/logic/util/ExcelFileGenerator.java +++ b/src/main/java/no/nibio/vips/logic/util/ExcelFileGenerator.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.ibm.icu.util.ULocale; +import no.nibio.vips.logic.entity.VipsLogicUser; import no.nibio.vips.logic.entity.rest.ObservationListItem; import no.nibio.vips.observationdata.ObservationDataSchema; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -26,9 +27,10 @@ public final class ExcelFileGenerator { private static final int COL_INDEX_ORGANISM = 2; private static final int COL_INDEX_CROP_ORGANISM = 3; private static final int COL_INDEX_HEADING = 4; - private static final int COL_START_INDEX_DATA = 5; + private static final int COL_INDEX_DESCRIPTION = 5; + private static final int COL_START_INDEX_DATA = 6; - public static byte[] generateExcel(List<ObservationListItem> observations, ULocale locale) throws IOException { + public static byte[] generateExcel(VipsLogicUser user, ULocale locale, List<ObservationListItem> observations) throws IOException { ResourceBundle rb = ResourceBundle.getBundle("no.nibio.vips.logic.i18n.vipslogictexts", locale.toLocale()); try (XSSFWorkbook workbook = new XSSFWorkbook(); @@ -43,7 +45,7 @@ public final class ExcelFileGenerator { for (ObservationListItem item : observations) { createItemRow(mainSheet, mainSheetRowIndex++, item); } - autoSizeColumns(mainSheet, 0, COL_INDEX_HEADING); + autoSizeColumns(mainSheet, 0, COL_INDEX_DESCRIPTION); // Prepare list of observations for each type of pest Map<Integer, List<ObservationListItem>> pestObservations = getObservationsForEachPest(observations); @@ -161,6 +163,24 @@ public final class ExcelFileGenerator { return pestObservations; } + /** + * Create first row of given sheet, with standard set of column titles + * + * @param sheet The sheet to which a row will be added + * @param rb A resource bundle enabling localized messages + * @return the newly created header row + */ + public static Row createHeaderRow(Sheet sheet, ResourceBundle rb) { + Row headerRow = sheet.createRow(0); + headerRow.createCell(COL_INDEX_DATE).setCellValue(rb.getString("timeOfObservation")); + headerRow.createCell(COL_INDEX_LOCATION).setCellValue(rb.getString("location")); + headerRow.createCell(COL_INDEX_ORGANISM).setCellValue(rb.getString("organism")); + headerRow.createCell(COL_INDEX_CROP_ORGANISM).setCellValue(rb.getString("cropOrganismId")); + headerRow.createCell(COL_INDEX_HEADING).setCellValue(rb.getString("observationHeading")); + headerRow.createCell(COL_INDEX_DESCRIPTION).setCellValue(rb.getString("observationText")); + return headerRow; + } + /** * Create row with given index, for given observation list item * @@ -179,23 +199,8 @@ public final class ExcelFileGenerator { row.createCell(COL_INDEX_ORGANISM).setCellValue(item.getOrganismName()); row.createCell(COL_INDEX_CROP_ORGANISM).setCellValue(item.getCropOrganismName()); row.createCell(COL_INDEX_HEADING).setCellValue(item.getObservationHeading()); + row.createCell(COL_INDEX_DESCRIPTION).setCellValue(item.getObservationText()); return row; } - /** - * Create first row of given sheet, with standard set of column titles - * - * @param sheet The sheet to which a row will be added - * @param rb A resource bundle enabling localized messages - * @return the newly created header row - */ - public static Row createHeaderRow(Sheet sheet, ResourceBundle rb) { - Row headerRow = sheet.createRow(0); - headerRow.createCell(COL_INDEX_DATE).setCellValue(rb.getString("timeOfObservation")); - headerRow.createCell(COL_INDEX_LOCATION).setCellValue(rb.getString("location")); - headerRow.createCell(COL_INDEX_ORGANISM).setCellValue(rb.getString("organism")); - headerRow.createCell(COL_INDEX_CROP_ORGANISM).setCellValue(rb.getString("cropOrganismId")); - headerRow.createCell(COL_INDEX_HEADING).setCellValue(rb.getString("observationHeading")); - return headerRow; - } } diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties index ac9819608aa1a1c0d740535f4016846db737bb89..7ad797d99f3104b5d4eb6739d06f09316118b934 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts.properties @@ -594,7 +594,7 @@ observationSiteStored = Observation site was successfully updated observationStored = Observation was stored -observationText = Observation text +observationText = Description observations = Observations diff --git a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties index ccc99bf289cefcae94c4472346ae762d02977cb3..cbb0beb9c8901c5960d5e8a728789b4b012c2cad 100755 --- a/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties +++ b/src/main/resources/no/nibio/vips/logic/i18n/vipslogictexts_nb.properties @@ -594,7 +594,7 @@ observationSiteStored = Rogneb\u00e6rm\u00f8llstasjonen ble oppdatert observationStored = Observasjonen ble lagret -observationText = Observasjonstekst +observationText = Beskrivelse observations = Observasjoner/f\u00f8rstefunn