package com.xenoage.zong.musicxml.types.groups; import lombok.Getter; import lombok.Setter; import com.xenoage.utils.annotations.NonNull; import com.xenoage.utils.xml.XmlReader; import com.xenoage.utils.xml.XmlWriter; import com.xenoage.zong.musicxml.types.MxlPitch; import com.xenoage.zong.musicxml.types.MxlRest; import com.xenoage.zong.musicxml.types.MxlUnpitched; import com.xenoage.zong.musicxml.types.choice.MxlFullNoteContent; import com.xenoage.zong.musicxml.util.IncompleteMusicXML; /** * MusicXML full-note. * * @author Andreas Wenger */ @IncompleteMusicXML(children = "unpitched,rest") @Getter @Setter public final class MxlFullNote { private boolean chord; @NonNull private MxlFullNoteContent content; /** * Returns true, if information was read, otherwise false. */ public boolean readElement(XmlReader reader) { String n = reader.getElementName(); switch (n) { case "chord": chord = true; return true; case MxlPitch.elemName: content = MxlPitch.read(reader); return true; case MxlUnpitched.elemName: content = MxlUnpitched.read(); return true; case MxlRest.elemName: content = MxlRest.read(); return true; } return false; } public void check(XmlReader reader) { if (content == null) throw reader.dataException("content missing"); } public void write(XmlWriter writer) { if (chord) writer.writeElementEmpty("chord"); content.write(writer); } }