/* * Created on Mar 11, 2007 by Nick * */ package jmsltestsuite; import java.io.IOException; import java.util.Enumeration; import com.softsynth.jmsl.score.*; /** * Demonstrates creating userBean and assigning it to a Notes, staves, measures, and score * programmatically, saving and load to from a Score XML file * * Extended to measure user beans too 4/3/07 * * for Peter McCullough. for Peter McCullough's PhD research in tracking compositional process with * a database Simulates tagging each Note with a unique key generated by a database * * @author Nick Didkovsky, (c) 2005 Nick Didkovsky, nick@didkovsky.com * */ public class UserBeansTest { private int id; public int getId() { return id; } public void setId(int id) { this.id = id; } public String toString() { return "Primary key ID=" + getId(); } public static void main(String[] args) { // create a score and give each note a primary key programmatically. Score score = new Score(3, 500, 200); UserBeansTest primaryKey = new UserBeansTest(); primaryKey.setId(999); score.addUserBean(primaryKey); Measure m = score.addMeasure(4, 4); for (int s = 0; s < m.size(); s++) { Staff staff = m.getStaff(s); primaryKey = new UserBeansTest(); primaryKey.setId(s); staff.addUserBean(primaryKey); } primaryKey = new UserBeansTest(); primaryKey.setId(1); m.addUserBean(primaryKey); System.out.println("------------------- START HERE ----------------"); for (int i = 0; i < 4; i++) { Note n = score.addNote(1, 60 + i, 0.5, 0.8); // System.out.println(n); primaryKey = new UserBeansTest(); primaryKey.setId(i + 100); n.addUserBean(primaryKey); UserBeansTest trkBean = new UserBeansTest(); trkBean.setId(i + 1000); n.getTrack().addUserBean(trkBean); } // save score to a Score XML file, then load it back and verify that the primary key of each // note saved ok and loaded back ok try { score.save("dada.xml"); System.out.println("saved\n\n\n"); Score s2 = Score.load("dada.xml"); if (s2.getUserBeans() != null & s2.getUserBeans().size() > 0) { System.out.println("This score has " + s2.getUserBeans().size() + " userBeans: "); for (Enumeration enumer = s2.getUserBeans().elements(); enumer.hasMoreElements();) { Object userObject = enumer.nextElement(); System.out.println(userObject.toString()); } } else { System.out.println("This score has NO userbeans"); } for (int i = 0; i < s2.size(); i++) { Measure measure = s2.getMeasure(i); if (measure.getUserBeans() != null & measure.getUserBeans().size() > 0) { System.out.println("This measure has " + measure.getUserBeans().size() + " userBeans: "); for (Enumeration enumer = measure.getUserBeans().elements(); enumer.hasMoreElements();) { Object userObject = enumer.nextElement(); System.out.println(userObject.toString()); } } else { System.out.println("This measure has NO userbeans"); } for (int s = 0; s < measure.size(); s++) { Staff staff = measure.getStaff(s); System.out.println("Staff " + s); if (staff.getUserBeans() != null && staff.getUserBeans().size() > 0) { System.out.println("This STAFF has " + staff.getUserBeans().size() + " userBeans: "); for (Enumeration enumer = staff.getUserBeans().elements(); enumer.hasMoreElements();) { Object userObject = enumer.nextElement(); System.out.println("STAFF user bean= " + userObject.toString()); } } for (int t = 0; t < staff.size(); t++) { Track track = staff.getTrack(t); for (Enumeration enumer = track.getUserBeans().elements(); enumer.hasMoreElements();) { Object userObject = enumer.nextElement(); System.out.println("TRACK user bean= " + userObject.toString()); } for (Enumeration e = track.elements(); e.hasMoreElements();) { Note note = (Note) e.nextElement(); System.out.println("\nNote, pitch = " + note.getPitchData()); if (note.getUserBeans() != null & note.getUserBeans().size() > 0) { System.out.println("This note has " + note.getUserBeans().size() + " userBeans: "); for (Enumeration enumer = note.getUserBeans().elements(); enumer.hasMoreElements();) { Object userObject = enumer.nextElement(); System.out.println(userObject.toString()); } } } } } } } catch (IOException e) { e.printStackTrace(); } } }