EN · DE · RU · FR · ES

#575: PropertyConverter.java

projectforge-business/src/main/java/org/projectforge/business/teamcal/event/ical/converter/PropertyConverter.java Тип: Java · Роль: Календарь · Источник: projectforge-business/src/main/java/org/projectforge/business/teamcal/event/ical/converter/PropertyConverter.java 110 строк · 76 кода · 22 комментария · 12 пустых
Конвертер XML-потока, реализующий IConverter для типобезопасной сериализации/десериализации между строковыми представлениями и Java-объектами.

Структура кода

Пакет: org.projectforge.business.teamcal.event.ical.converter

Классы: PropertyConverter

Реализует: VEventComponentConverter

Методы (4): toVEvent, toVEvent, isAllDay, parseAdditionalParameters

Импорты: 8 пакетов

Исходный код (сокращённый)

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("Ошибка при разборе дополнительных параметров: " + 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("Ошибка при разборе дополнительных параметров: " + e.getMessage(), e);
            }
        }
    }
}

История Git

868d6abb7 2025 → 2026
63081666f Заголовки исходных файлов: 2024 → 2025.
61966790f Ical4j: миграционные материалы...
b6092df09 Авторские права 2023 → 2024
ab45d51fa Авторские права 2001-2022 → 2001-2023.