package com.xenoage.zong.musicxml.types;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import com.xenoage.utils.annotations.MaybeNull;
import com.xenoage.utils.xml.XmlReader;
import com.xenoage.utils.xml.XmlWriter;
import com.xenoage.zong.musicxml.util.IncompleteMusicXML;
/**
* MusicXML work.
*
* @author Andreas Wenger
*/
@IncompleteMusicXML(missing = "opus")
@AllArgsConstructor @Getter @Setter
public final class MxlWork {
public static final String elemName = "work";
public static final MxlWork empty = new MxlWork(null, null);
@MaybeNull private String workNumber;
@MaybeNull private String workTitle;
@MaybeNull public static MxlWork read(XmlReader reader) {
String workNumber = null, workTitle = null;
while (reader.openNextChildElement()) {
String n = reader.getElementName();
if (n.equals("work-number"))
workNumber = reader.getText();
else if (n.equals("work-title"))
workTitle = reader.getText();
reader.closeElement();
}
if (workNumber != null || workTitle != null)
return new MxlWork(workNumber, workTitle);
else
return null;
}
public void write(XmlWriter writer) {
writer.writeElementStart(elemName);
writer.writeElementText("work-number", workNumber);
writer.writeElementText("work-title", workTitle);
writer.writeElementEnd();
}
}