EN · DE · RU · FR · ES

#575: PropertyConverter.java

projectforge-business/src/main/java/org/projectforge/business/teamcal/event/ical/converter/PropertyConverter.java Typ: Java · Rolle: Kalender · Quelle: projectforge-business/src/main/java/org/projectforge/business/teamcal/event/ical/converter/PropertyConverter.java 110 Zeilen · 76 Code · 22 Kommentare · 12 leer
XML-Stream-Konverter, der IConverter für typsichere Serialisierung/Deserialisierung zwischen Zeichenkettenrepräsentationen und Java-Objekten implementiert.

Codestruktur

Paket: org.projectforge.business.teamcal.event.ical.converter

Klassen: PropertyConverter

Implementiert: VEventComponentConverter

Methoden (4): toVEvent, toVEvent, isAllDay, parseAdditionalParameters

Importe: 8 Pakete

Quellcode (gekürzt)

package org.projectforge.business.teamcal.event.ical.converter;

import net.fortuna.ical4j.model.Parameter;
import net.fortuna.ical4j.model.ParameterBuilder;
import net.fortuna.ical4j.model.ParameterList;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.component.VEvent;
import net.fortuna.ical4j.model.property.DtStart;
import org.projectforge.business.teamcal.event.ical.VEventComponentConverter;
import org.projectforge.business.teamcal.event.model.TeamEventDO;

public abstract class PropertyConverter implements VEventComponentConverter {
    private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(PropertyConverter.class);

    public Property toVEvent(final TeamEventDO event) {
        return null;
    }

    @Override
    public boolean toVEvent(TeamEventDO event, VEvent vEvent) {
        Property property = this.toVEvent(event);

        if (property == null) {
            return false;
        }

        vEvent.getProperties().add(property);

        return true;
    }

    protected boolean isAllDay(final VEvent vEvent) {
        if (vEvent.getDateTimeStart().isEmpty()) {
            return false;
        }
        DtStart<?> dtStart = vEvent.getDateTimeStart().get();
        return dtStart.toString().contains("VALUE=DATE");
    }

    protected void parseAdditionalParameters(final ParameterList list, final String additonalParams) {
        if (list == null || additonalParams == null) {
            return;
        }
        StringBuilder sb = new StringBuilder();
        boolean escaped = false;
        char[] chars = additonalParams.toCharArray();
        String name = null;

        for (char c : chars) {
            switch (c) {
                case ';':
                    if (!escaped && name != null && sb.length() > 0) {
                        try {
                            Parameter parameter = new ParameterBuilder().name(name).value(sb.toString().replaceAll("\"", "")).build();
                            list.add(parameter);
                        } catch (Exception e) {
                            log.error("Fehler beim Parsen zusätzlicher Parameter: " + e.getMessage(), e);
                        }
                        name = null;
                        sb.setLength(0);
                    }
                    break;
                case '"':
                    escaped = (!escaped);
                    break;
                case '=':
                    if (!escaped && sb.length() > 0) {
                        name = sb.toString();
                        sb.setLength(0);
                    }
                    break;
                default:
                    sb.append(c);
                    break;
            }
        }

        if (!escaped && name != null && sb.length() > 0) {
            try {
                Parameter parameter = new ParameterBuilder().name(name).value(sb.toString().replaceAll("\"", "")).build();
                list.add(parameter);
            } catch (Exception e) {
                log.error("Fehler beim Parsen zusätzlicher Parameter: " + e.getMessage(), e);
            }
        }
    }
}

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quellcode-Dateiköpfe: 2024 -> 2025.
61966790f Ical4j: Migrationskram...
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.