All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.fortuna.ical4j.extensions.strategy.entity.Group Maven / Gradle / Ivy

The newest version!
package net.fortuna.ical4j.extensions.strategy.entity;

import net.fortuna.ical4j.extensions.strategy.AbstractStrategy;
import net.fortuna.ical4j.vcard.Entity;
import net.fortuna.ical4j.vcard.GeneralPropertyModifiers;
import net.fortuna.ical4j.vcard.IdentificationPropertyModifiers;
import net.fortuna.ical4j.vcard.OrganizationalPropertyModifiers;
import net.fortuna.ical4j.vcard.property.Fn;
import net.fortuna.ical4j.vcard.property.Member;
import net.fortuna.ical4j.vcard.property.immutable.ImmutableKind;

import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * A group is a named entity used to group other entities.
 */
public class Group extends AbstractStrategy {

    private final List names = new ArrayList<>();

    private final List members = new ArrayList<>();

    public Group name(String... name) {
        names.addAll(Arrays.asList(name));
        return this;
    }

    public Group member(URI... member) {
        members.addAll(Arrays.asList(member));
        return this;
    }

    @Override
    public Entity get() {
        Entity entity = getPrototype().isPresent() ? getPrototype().get().copy() : new Entity();
        entity.with(GeneralPropertyModifiers.KIND, ImmutableKind.GROUP);
        names.forEach(name -> entity.with(IdentificationPropertyModifiers.FN, new Fn(name)));
        members.forEach(member -> entity.with(OrganizationalPropertyModifiers.MEMBER, new Member(member)));
        return entity;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy