jfxtras.icalendarfx.components.VCommon Maven / Gradle / Ivy
package jfxtras.icalendarfx.components;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import jfxtras.icalendarfx.components.VCommon;
import jfxtras.icalendarfx.components.VComponent;
import jfxtras.icalendarfx.components.VComponentBase;
import jfxtras.icalendarfx.properties.component.misc.NonStandardProperty;
/**
* {@link VComponent} with the following properties
*
* - {@link NonStandardProperty X-PROP}
*
*
*
* @author David Bal
*
* @param concrete subclass
*/
public abstract class VCommon extends VComponentBase
{
/**
* Provides a framework for defining non-standard properties.
*
* Example:
*
* X-ABC-MMSUBJ;VALUE=URI;FMTTYPE=audio/basic:http://www.example.
org/mysubj.au
*
*/
private List nonStandardProps;
public List getNonStandard() { return nonStandardProps; }
public void setNonStandard(List nonStandardProps)
{
if (this.nonStandardProps != null)
{
this.nonStandardProps.forEach(e -> orderChild(e, null)); // remove old elements
}
this.nonStandardProps = nonStandardProps;
if (nonStandardProps != null)
{
nonStandardProps.forEach(c -> orderChild(c));
}
}
/**
* Sets the value of the {@link #nonStandardProperty()}
*
* @return - this class for chaining
*/
public T withNonStandard(List nonStandardProps)
{
if (getNonStandard() == null)
{
setNonStandard(new ArrayList<>());
}
getNonStandard().addAll(nonStandardProps);
if (nonStandardProps != null)
{
nonStandardProps.forEach(c -> orderChild(c));
}
return (T) this;
}
/**
* Sets the value of the {@link #nonStandardProperty()} by parsing a vararg of
* iCalendar content text representing individual {@link NonStandardProperty} objects.
*
* @return - this class for chaining
*/
public T withNonStandard(String...nonStandardProps)
{
List newElements = Arrays.stream(nonStandardProps)
.map(c -> NonStandardProperty.parse(c))
.collect(Collectors.toList());
return withNonStandard(newElements);
}
/**
* Sets the value of the {@link #nonStandardProperty()} from a vararg of {@link NonStandardProperty} objects.
*
* @return - this class for chaining
*/
public T withNonStandard(NonStandardProperty...nonStandardProps)
{
return withNonStandard(Arrays.asList(nonStandardProps));
}
/*
* CONSTRUCTORS
*/
VCommon()
{
super();
}
VCommon(VCommon source)
{
super(source);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy