package com.xenoage.zong.musicxml.types;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import com.xenoage.utils.Parser;
import com.xenoage.utils.annotations.NonNull;
import com.xenoage.utils.xml.XmlReader;
import com.xenoage.utils.xml.XmlWriter;
import com.xenoage.zong.musicxml.types.choice.MxlMusicDataContent;
import com.xenoage.zong.musicxml.util.IncompleteMusicXML;
/**
* MusicXML backup.
*
* @author Andreas Wenger
*/
@IncompleteMusicXML(missing = "editorial")
@AllArgsConstructor @Getter @Setter
public final class MxlBackup
implements MxlMusicDataContent {
public static final String elemName = "backup";
private int duration;
@Override public MxlMusicDataContentType getMusicDataContentType() {
return MxlMusicDataContentType.Backup;
}
@NonNull public static MxlBackup read(XmlReader reader) {
Integer duration = null;
if (reader.openNextChildElement("duration")) {
duration = Parser.parseInt(reader.getText());
reader.closeElement();
}
if (duration == null)
throw reader.dataException("duration unknown");
return new MxlBackup(duration);
}
@Override public void write(XmlWriter writer) {
writer.writeElementStart(elemName);
writer.writeElementText("duration", duration);
writer.writeElementEnd();
}
}