package com.xenoage.zong.musicxml.types;
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;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import java.util.ArrayList;
import java.util.List;
/**
* MusicXML identification.
*
* @author Andreas Wenger
*/
@IncompleteMusicXML(missing = "encoding,source,relation,miscellaneous")
@AllArgsConstructor @Getter @Setter
public final class MxlIdentification {
public static final String elemName = "identification";
@MaybeNull private List<MxlTypedText> creators;
@MaybeNull private List<MxlTypedText> rights;
@MaybeNull public static MxlIdentification read(XmlReader reader) {
List<MxlTypedText> creators = null;
List<MxlTypedText> rights = null;
while (reader.openNextChildElement()) {
String n = reader.getElementName();
if (n.equals("creator")) {
if (creators == null)
creators = new ArrayList<>();
creators.add(MxlTypedText.read(reader));
}
else if (n.equals("rights")) {
if (rights == null)
rights = new ArrayList<>();
rights.add(MxlTypedText.read(reader));
}
reader.closeElement();
}
if (creators != null || rights != null)
return new MxlIdentification(creators, rights);
else
return null;
}
public void write(XmlWriter writer) {
writer.writeElementStart(elemName);
if (creators != null) {
for (MxlTypedText t : creators)
t.write("creator", writer);
}
if (rights != null) {
for (MxlTypedText t : rights)
t.write("rights", writer);
}
writer.writeElementEnd();
}
}