#1095: ICalGenerator.kt
projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt Clase Kotlin, projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt 118 líneas · 71 código · 33 comentarios · 14 en blanco
Propósito: Archivo fuente: business/teamcal/ical/ICalGenerator.kt. ICalGenerator.kt es parte de la aplicación de gestión de proyectos de código abierto ProjectForge.
Fuente (primeras 100 líneas)
/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
// www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
//
// ProjectForge tiene doble licencia.
//
// Esta edición comunitaria es software libre; puedes redistribuirla y/o
// modificarla bajo los términos de la Licencia Pública General GNU según lo publicado
// por la Free Software Foundation; versión 3 de la Licencia.
//
// Esta edición comunitaria se distribuye con la esperanza de que sea útil,
// pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
// COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia General
// Pública de GNU para más detalles.
//
// Deberías haber recibido una copia de la Licencia Pública General GNU junto con
// este programa; si no, visita http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////
package org.projectforge.business.teamcal.ical
import mu.KotlinLogging
import net.fortuna.ical4j.data.CalendarOutputter
import net.fortuna.ical4j.model.Calendar
import net.fortuna.ical4j.model.component.VEvent
import org.projectforge.ProjectForgeVersion
import org.projectforge.business.calendar.event.model.ICalendarEvent
import org.projectforge.business.teamcal.event.model.TeamEventDO
import java.io.ByteArrayOutputStream
import java.io.IOException
import java.io.OutputStream
import java.time.LocalDate
import java.util.*
private val log = KotlinLogging.logger {}
/**
* Escribe eventos como ics.
*/
class ICalGenerator @JvmOverloads constructor(val exportVAlarms: Boolean = true, val editable: Boolean = false) {
var empty: Boolean = true
private set
// Crea un objeto de calendario
private val calendar = Calendar()
.withProdId("-//${ProjectForgeVersion.APP_ID} ${ProjectForgeVersion.VERSION_NUMBER}//iCal Generator//EN")
.withDefaults() // add(GREGORIAN).add(VERSION_2_0)
/**
* Asegura al menos un evento de configuración.
*/
fun ensureNotEmpty() {
if (empty) {
calendar.withComponent(VEventUtils.createSetupEvent())
}
}
fun add(events: List<TeamEventDO>) {
// Convierte TeamEventDO a VEvent y lo añade al calendario
events.forEach { event ->
add(event)
}
}
fun add(event: ICalendarEvent) {
val vEvent = VEventUtils.convertToVEvent(event)
// Añade evento al calendario
calendar.withComponent(vEvent)
empty = false
}
fun addAllDayEvent(startDay: LocalDate, endDay: LocalDate?, title: String, uid: String): VEvent {
val vEvent = VEventUtils.createAllDayEvent(startDay, endDay ?: startDay, title, uid)
// Añade evento al calendario
calendar.withComponent(vEvent)
empty = false
return vEvent
}
fun addEvent(startDate: Date, endDate: Date, title: String, uid: String): VEvent {
val vEvent = VEventUtils.createEvent(startDate, endDate, title, uid)
// Añade evento al calendario
calendar.withComponent(vEvent)
empty = false
return vEvent
}
val asByteArray: ByteArray?
get() {
try {
ByteArrayOutputStream().use { stream ->
val outputter = CalendarOutputter()
outputter.output(this.calendar.fluentTarget, stream)
return stream.toByteArray()
}
} catch (ex: IOException) {
Historial Git
868d6abb7 2025 -> 2026
63081666f Encabezados de archivos fuente: 2024 -> 2025.
c193e8288 Ical4j: cosas de migración... (todas las pruebas OK)
868d6abb7
2025 -> 2026868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
index 7692ab96d..88113b38c 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
@@ -3,7 +3,7 @@
// Project ProjectForge Community Edition
// www.projectforge.org
//
-// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Germany (www.micromata.com)
//
// ProjectForge tiene doble licencia.
//
63081666f
Encabezados de archivos fuente: 2024 -> 2025.63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
index e7df854e5..7692ab96d 100644
--- a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
@@ -3,7 +3,7 @@
// Project ProjectForge Community Edition
// www.projectforge.org
//
-// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Germany (www.micromata.com)
//
// ProjectForge tiene doble licencia.
//
c193e8288
Ical4j: cosas de migración... (todas las pruebas OK)c193e8288c03be35a08171e2319957a6080381b9
diff --git a/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
new file mode 100644
index 000000000..e7df854e5
--- /dev/null
+++ b/projectforge-business/src/main/kotlin/org/projectforge/business/teamcal/ical/ICalGenerator.kt
@@ -0,0 +1,118 @@
+/////////////////////////////////////////////////////////////////////////////
+//
+// Project ProjectForge Community Edition
+// www.projectforge.org
+//
+// Copyright (C) 2001-2024 Micromata GmbH, Germany (www.micromata.com)
+//
+// ProjectForge tiene doble licencia.
+//
+// Esta edición comunitaria es software libre; puedes redistribuirla y/o
+// modificarla bajo los términos de la Licencia Pública General GNU según lo publicado
+// por la Free Software Foundation; versión 3 de la Licencia.
+//
+// Esta edición comunitaria se distribuye con la esperanza de que sea útil,
+// pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
+// COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia General
+// Pública de GNU para más detalles.
+//
+// Deberías haber recibido una copia de la Licencia Pública General GNU junto con
+// este programa; si no, visita http://www.gnu.org/licenses/.
+//
+/////////////////////////////////////////////////////////////////////////////
+
+package org.projectforge.business.teamcal.ical
+
+import mu.KotlinLogging
+import net.fortuna.ical4j.data.CalendarOutputter
+import net.fortuna.ical4j.model.Calendar
+import net.fortuna.ical4j.model.component.VEvent
+import org.projectforge.ProjectForgeVersion
+import org.projectforge.business.calendar.event.model.ICalendarEvent
+import org.projectforge.business.teamcal.event.model.TeamEventDO
+import java.io.ByteArrayOutputStream
+import java.io.IOException
+import java.io.OutputStream
+import java.time.LocalDate
+import java.util.*
+
+private val log = KotlinLogging.logger {}
+
+/**
+ * Escribe eventos como ics.
+ */
+class ICalGenerator @JvmOverloads constructor(val exportVAlarms: Boolean = true, val editable: Boolean = false) {
+ var empty: Boolean = true
+ private set
+
+ // Crea un objeto de calendario
+ private val calendar = Calendar()
+ .withProdId("-//${ProjectForgeVersion.APP_ID} ${ProjectForgeVersion.VERSION_NUMBER}//iCal Generator//EN")
+ .withDefaults() // add(GREGORIAN).add(VERSION_2_0)
+
+ /**