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

jfxtras.icalendarfx.components.VComponentBase Maven / Gradle / Ivy

The newest version!
package jfxtras.icalendarfx.components;

import jfxtras.icalendarfx.VParent;
import jfxtras.icalendarfx.VParentBase;
import jfxtras.icalendarfx.components.VComponent;
import jfxtras.icalendarfx.components.VComponentBase;
import jfxtras.icalendarfx.components.VComponentElement;
import jfxtras.icalendarfx.content.MultiLineContent;;

/**
 * 

Base class implementation of a {@link VComponent}

* * @author David Bal */ public abstract class VComponentBase extends VParentBase implements VComponent { protected VParent parent; @Override public void setParent(VParent parent) { this.parent = parent; } @Override public VParent getParent() { return parent; } final private VComponentElement componentType; @Override public String name() { return componentType.toString(); } /* * CONSTRUCTORS */ /** * Create default component by setting {@link componentName}, and setting content line generator. */ VComponentBase() { super(); componentType = VComponentElement.fromClass(this.getClass()); contentLineGenerator = new MultiLineContent( orderer, BEGIN + name(), END + name(), 400); } /** * Creates a deep copy of a component */ VComponentBase(VComponentBase source) { super(source); componentType = VComponentElement.fromClass(this.getClass()); contentLineGenerator = new MultiLineContent( orderer, BEGIN + name(), END + name(), 400); setParent(source.getParent()); } /** * Hook to add subcomponent such as {@link #VAlarm}, {@link #StandardTime} and {@link #DaylightSavingTime} * * @param subcomponent */ void addSubcomponent(VComponent subcomponent) { // no opp by default } @Override protected boolean isContentValid(String valueContent) { boolean isElementValid = super.isContentValid(valueContent); if (! isElementValid) return false; boolean isBeginPresent = valueContent.startsWith(BEGIN + name()); if (! isBeginPresent) return false; int lastLineIndex = valueContent.lastIndexOf(System.lineSeparator()); if (lastLineIndex == -1) return false; boolean isEndPresent = valueContent .substring(lastLineIndex) .startsWith(END + name()); return ! isEndPresent; } // /** // * Creates a new VComponent by parsing a String of iCalendar content text // * @param // * // * @param content the text to parse, not null // * @return the parsed DaylightSavingTime // */ // public static > T parse(String content) // { // boolean isMultiLineElement = content.startsWith("BEGIN"); // if (! isMultiLineElement) // { // throw new IllegalArgumentException("VComponent must begin with BEGIN [" + content + "]"); // } // int firstLineBreakIndex = content.indexOf(System.lineSeparator()); // String name = content.substring(6,firstLineBreakIndex); // T component = (T) Elements.newEmptyVElement(VComponent.class, name); // List messages = component.parseContent(content); // throwMessageExceptions(messages); // return component; // } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy