EN · DE · RU · FR · ES

#192: AddressCampaignValueExport.kt

plugins/org.projectforge.plugins.marketing/src/main/kotlin/org/projectforge/plugins/marketing/AddressCampaignValueExport.kt Type: Kotlin · Role: Plugin Registration · Source: plugins/org.projectforge.plugins.marketing/src/main/kotlin/org/projectforge/plugins/marketing/AddressCampaignValueExport.kt 77 lines · 40 code · 28 comments · 9 blank
Excel/CSV export utility for AddressCampaignValue data. Configures column headers (i18n), field formatters (currency, date), and populates rows from data collections.

Code Structure

Annotations: author, Suppress, Service, micromata

Classes: AddressCampaignValueExport

Supertype(s): AddressExport

Functions (4): export, registerAdditionalCols, handleAddressCampaign, configureSheet

Properties (3): addressCampaignSupported, addressCampaignValue, sheetTitle

Imports: 7 packages

Package: org.projectforge.plugins.marketing

Source Code (abridged)

package org.projectforge.plugins.marketing

import de.micromata.merlin.excel.ExcelRow
import de.micromata.merlin.excel.ExcelSheet
import mu.KotlinLogging
import org.projectforge.business.address.AddressDO
import org.projectforge.business.address.AddressExport
import org.projectforge.business.address.PersonalAddressDO
import org.springframework.stereotype.Service

private val log = KotlinLogging.logger {}

/**
 * For excel export. export must be called with two params, the first is the AddressCampaignValue map and the second the
 * title of the address campaign.
 *
 * @author Kai Reinhard (k.reinhard@micromata.de)
 */
@Service("addressCampaignValueExport")
open class AddressCampaignValueExport : AddressExport() {
  override val addressCampaignSupported = true

  override fun export(
    origList: List<AddressDO>,
    personalAddressMap: Map<Long, PersonalAddressDO>,
    vararg params: Any
  ): ByteArray? {
    log.info { "Exporting campaign '${params[1]}'..." }
    return super.export(origList, personalAddressMap, *params)
  }

  override fun registerAdditionalCols(sheet: ExcelSheet) {
    register(sheet, "value", "campaignValue")
    register(sheet, "comment", "campaignComment")
  }

  override fun handleAddressCampaign(row: ExcelRow, address: AddressDO, vararg params: Any) {
    @Suppress("UNCHECKED_CAST")
    val addressCampaignValue = (params[0] as Map<Long, AddressCampaignValueDO>).get(address.id)
    row.getCell("campaignValue")?.setCellValue(addressCampaignValue?.value)
    row.getCell("campaignComment")?.setCellValue(addressCampaignValue?.comment)
  }

  override val sheetTitle = "plugins.marketing.addressCampaign"

  override fun configureSheet(sheet: ExcelSheet, vararg params: Any) {
    sheet.setMergedRegion(
      0, 0,
      sheet.getColNumber("campaignValue")!!,
      sheet.getColNumber("campaignComment")!!,
      params[1]
    )
  }
}

Git History

868d6abb7 2025 -> 2026
63081666f Source file headers: 2024-> 2025.
4c04cfd65 MAJOR-CHANGE! Migration of integer id's to Long id's (including fk's etc.)
b1560ca43 Migration stuff in progress...
b6092df09 Copyright 2023 -> 2024