package com.xenoage.zong.musicxml.types.partwise; import lombok.AllArgsConstructor; 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.groups.MxlMusicData; import com.xenoage.zong.musicxml.util.IncompleteMusicXML; /** * MusicXML measure in a partwise score. * * @author Andreas Wenger */ @IncompleteMusicXML(partly = "measure-attributes", children = "music-data") @AllArgsConstructor @Getter @Setter public final class MxlMeasure { public static final String elemName = "measure"; @NonNull private MxlMusicData musicData; @NonNull private String number; @NonNull public static MxlMeasure read(XmlReader reader) { String number = reader.getAttributeNotNull("number"); MxlMusicData musicData = new MxlMusicData(); while (reader.openNextChildElement()) { musicData.readElement(reader); reader.closeElement(); } return new MxlMeasure(musicData, number); } public void write(XmlWriter writer) { writer.writeElementStart(elemName); writer.writeAttribute("number", number); musicData.write(writer); writer.writeElementEnd(); } }