diff --git a/Java/REQUIREMENT SPECIFICATION DOCUMENT.pdf b/Java/REQUIREMENT SPECIFICATION DOCUMENT.pdf
new file mode 100644
index 0000000..37859b9
Binary files /dev/null and b/Java/REQUIREMENT SPECIFICATION DOCUMENT.pdf differ
diff --git a/Java/java project.mdj b/Java/java project.mdj
new file mode 100644
index 0000000..673cb5e
--- /dev/null
+++ b/Java/java project.mdj
@@ -0,0 +1 @@
+{"_type":"Project","_id":"AAAAAAFF+h6SjaM2Hec=","name":"Untitled","ownedElements":[{"_type":"UMLModel","_id":"AAAAAAGM3rbj+fh5MA0=","_parent":{"$ref":"AAAAAAFF+h6SjaM2Hec="},"name":"Model1","ownedElements":[{"_type":"UMLClassDiagram","_id":"AAAAAAGM3rbj+vh6vFI=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"ClassDiagram1","ownedViews":[{"_type":"UMLClassView","_id":"AAAAAAGM36NYU/jxzIw=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM36NYUvjvR0E="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGM36NYU/jylu4=","_parent":{"$ref":"AAAAAAGM36NYU/jxzIw="},"model":{"$ref":"AAAAAAGM36NYUvjvR0E="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGM36NYU/jzs4M=","_parent":{"$ref":"AAAAAAGM36NYU/jylu4="},"visible":false,"font":"Arial;13;0","left":-352,"top":464,"height":13},{"_type":"LabelView","_id":"AAAAAAGM36NYU/j0yd0=","_parent":{"$ref":"AAAAAAGM36NYU/jylu4="},"font":"Arial;13;1","left":253,"top":439,"width":215,"height":13,"text":"Music Library"},{"_type":"LabelView","_id":"AAAAAAGM36NYU/j1+js=","_parent":{"$ref":"AAAAAAGM36NYU/jylu4="},"visible":false,"font":"Arial;13;0","left":-352,"top":464,"width":80.9072265625,"height":13,"text":"(from Model1)"},{"_type":"LabelView","_id":"AAAAAAGM36NYVvj2sGE=","_parent":{"$ref":"AAAAAAGM36NYU/jylu4="},"visible":false,"font":"Arial;13;0","left":-352,"top":464,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":248,"top":432,"width":225,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGM36NYU/jzs4M="},"nameLabel":{"$ref":"AAAAAAGM36NYU/j0yd0="},"namespaceLabel":{"$ref":"AAAAAAGM36NYU/j1+js="},"propertyLabel":{"$ref":"AAAAAAGM36NYVvj2sGE="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGM36NYVvj3ASg=","_parent":{"$ref":"AAAAAAGM36NYU/jxzIw="},"model":{"$ref":"AAAAAAGM36NYUvjvR0E="},"subViews":[{"_type":"UMLAttributeView","_id":"AAAAAAGM36PoVPkewqc=","_parent":{"$ref":"AAAAAAGM36NYVvj3ASg="},"model":{"$ref":"AAAAAAGM36PoKfkbBgg="},"font":"Arial;13;0","left":253,"top":462,"width":215,"height":13,"text":"+library name: String","horizontalAlignment":0}],"font":"Arial;13;0","left":248,"top":457,"width":225,"height":23},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGM36NYVvj47Rs=","_parent":{"$ref":"AAAAAAGM36NYU/jxzIw="},"model":{"$ref":"AAAAAAGM36NYUvjvR0E="},"subViews":[{"_type":"UMLOperationView","_id":"AAAAAAGM36Zaj/knKMM=","_parent":{"$ref":"AAAAAAGM36NYVvj47Rs="},"model":{"$ref":"AAAAAAGM36ZafvkkWbc="},"font":"Arial;13;0","left":253,"top":485,"width":215,"height":13,"text":"+Add track(track Track): track","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM36bBCPkxZb0=","_parent":{"$ref":"AAAAAAGM36NYVvj47Rs="},"model":{"$ref":"AAAAAAGM36bA9/kuzjs="},"font":"Arial;13;0","left":253,"top":500,"width":215,"height":13,"text":"+remove track(track Track): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM36cPVPk6FC0=","_parent":{"$ref":"AAAAAAGM36NYVvj47Rs="},"model":{"$ref":"AAAAAAGM36cPQPk3eCg="},"font":"Arial;13;0","left":253,"top":515,"width":215,"height":13,"text":"+Sorting(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM36dr8vlCOK8=","_parent":{"$ref":"AAAAAAGM36NYVvj47Rs="},"model":{"$ref":"AAAAAAGM36dr3fk/Oeo="},"font":"Arial;13;0","left":253,"top":530,"width":215,"height":13,"text":"+Searching(Track music): Track","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM8wQtqBr3c8I=","_parent":{"$ref":"AAAAAAGM36NYVvj47Rs="},"model":{"$ref":"AAAAAAGM8wQtjhr0BZA="},"font":"Arial;13;0","left":253,"top":545,"width":215,"height":13,"text":"+update_track(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM8wSpihsx68o=","_parent":{"$ref":"AAAAAAGM36NYVvj47Rs="},"model":{"$ref":"AAAAAAGM8wSpcxsuzic="},"visible":false,"font":"Arial;13;0","left":29,"top":880,"width":215,"height":13,"text":"+Operation1()","horizontalAlignment":0}],"font":"Arial;13;0","left":248,"top":480,"width":225,"height":83},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGM36NYVvj5suQ=","_parent":{"$ref":"AAAAAAGM36NYU/jxzIw="},"model":{"$ref":"AAAAAAGM36NYUvjvR0E="},"visible":false,"font":"Arial;13;0","left":-176,"top":232,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGM36NYVvj6Bdk=","_parent":{"$ref":"AAAAAAGM36NYU/jxzIw="},"model":{"$ref":"AAAAAAGM36NYUvjvR0E="},"visible":false,"font":"Arial;13;0","left":-176,"top":232,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":248,"top":432,"width":224,"height":146,"nameCompartment":{"$ref":"AAAAAAGM36NYU/jylu4="},"attributeCompartment":{"$ref":"AAAAAAGM36NYVvj3ASg="},"operationCompartment":{"$ref":"AAAAAAGM36NYVvj47Rs="},"receptionCompartment":{"$ref":"AAAAAAGM36NYVvj5suQ="},"templateParameterCompartment":{"$ref":"AAAAAAGM36NYVvj6Bdk="}},{"_type":"UMLClassView","_id":"AAAAAAGM36ijgPlIEFY=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM36ijf/lGWTg="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGM36ijgPlJf3g=","_parent":{"$ref":"AAAAAAGM36ijgPlIEFY="},"model":{"$ref":"AAAAAAGM36ijf/lGWTg="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGM36ijgPlKIwE=","_parent":{"$ref":"AAAAAAGM36ijgPlJf3g="},"visible":false,"font":"Arial;13;0","left":864,"top":-640,"height":13},{"_type":"LabelView","_id":"AAAAAAGM36ijgPlLutM=","_parent":{"$ref":"AAAAAAGM36ijgPlJf3g="},"font":"Arial;13;1","left":621,"top":127,"width":165.37255859375,"height":13,"text":"Track"},{"_type":"LabelView","_id":"AAAAAAGM36ijgPlM3jA=","_parent":{"$ref":"AAAAAAGM36ijgPlJf3g="},"visible":false,"font":"Arial;13;0","left":864,"top":-640,"width":80.9072265625,"height":13,"text":"(from Model1)"},{"_type":"LabelView","_id":"AAAAAAGM36ijgflNNQ8=","_parent":{"$ref":"AAAAAAGM36ijgPlJf3g="},"visible":false,"font":"Arial;13;0","left":864,"top":-640,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":616,"top":120,"width":175.37255859375,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGM36ijgPlKIwE="},"nameLabel":{"$ref":"AAAAAAGM36ijgPlLutM="},"namespaceLabel":{"$ref":"AAAAAAGM36ijgPlM3jA="},"propertyLabel":{"$ref":"AAAAAAGM36ijgflNNQ8="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGM36ijgflOuOs=","_parent":{"$ref":"AAAAAAGM36ijgPlIEFY="},"model":{"$ref":"AAAAAAGM36ijf/lGWTg="},"subViews":[{"_type":"UMLAttributeView","_id":"AAAAAAGM36l0ZPl1eG4=","_parent":{"$ref":"AAAAAAGM36ijgflOuOs="},"model":{"$ref":"AAAAAAGM36l0RvlytOE="},"font":"Arial;13;0","left":621,"top":150,"width":165.37255859375,"height":13,"text":"+track_name: String","horizontalAlignment":0},{"_type":"UMLAttributeView","_id":"AAAAAAGM36mg8vl8Y4A=","_parent":{"$ref":"AAAAAAGM36ijgflOuOs="},"model":{"$ref":"AAAAAAGM36mg2/l59iw="},"font":"Arial;13;0","left":621,"top":165,"width":165.37255859375,"height":13,"text":"+track _id: String","horizontalAlignment":0},{"_type":"UMLAttributeView","_id":"AAAAAAGM36nH+PmDdeY=","_parent":{"$ref":"AAAAAAGM36ijgflOuOs="},"model":{"$ref":"AAAAAAGM36nHzPmA9C8="},"font":"Arial;13;0","left":621,"top":180,"width":165.37255859375,"height":13,"text":"+track_duration: int","horizontalAlignment":0},{"_type":"UMLAttributeView","_id":"AAAAAAGM36o5GvmKvP4=","_parent":{"$ref":"AAAAAAGM36ijgflOuOs="},"model":{"$ref":"AAAAAAGM36o44vmHdX0="},"visible":false,"font":"Arial;13;0","left":781,"top":179,"width":159.58349609375,"height":13,"text":"+track_ album _id: String","horizontalAlignment":0},{"_type":"UMLAttributeView","_id":"AAAAAAGM8wrnAS/aILM=","_parent":{"$ref":"AAAAAAGM36ijgflOuOs="},"model":{"$ref":"AAAAAAGM8wrm5i/XQOE="},"font":"Arial;13;0","left":621,"top":195,"width":165.37255859375,"height":13,"text":"+track_author: string","horizontalAlignment":0}],"font":"Arial;13;0","left":616,"top":145,"width":175.37255859375,"height":68},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGM36ijgflPPQM=","_parent":{"$ref":"AAAAAAGM36ijgPlIEFY="},"model":{"$ref":"AAAAAAGM36ijf/lGWTg="},"subViews":[{"_type":"UMLOperationView","_id":"AAAAAAGM36pzAPmRnqA=","_parent":{"$ref":"AAAAAAGM36ijgflPPQM="},"model":{"$ref":"AAAAAAGM36py7/mONvs="},"visible":false,"font":"Arial;13;0","left":861,"top":-38,"width":145.12353515625,"height":13,"text":"+add track(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM36txbPmalV4=","_parent":{"$ref":"AAAAAAGM36ijgflPPQM="},"model":{"$ref":"AAAAAAGM36txTPmX3zQ="},"visible":false,"font":"Arial;13;0","left":861,"top":-36,"width":145.12353515625,"height":13,"text":"+delete track(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM36uq6vmjuNQ=","_parent":{"$ref":"AAAAAAGM36ijgflPPQM="},"model":{"$ref":"AAAAAAGM36uqxvmgIek="},"font":"Arial;13;0","left":621,"top":220,"width":165.37255859375,"height":13,"text":"+view_ track_ detail(): String","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM8PbbmxmQsis=","_parent":{"$ref":"AAAAAAGM36ijgflPPQM="},"model":{"$ref":"AAAAAAGM8PbbghmNVg8="},"visible":false,"font":"Arial;13;0","left":781,"top":219,"width":165.37255859375,"height":13,"text":"+Track(str, str, int, str): void","horizontalAlignment":0}],"font":"Arial;13;0","left":616,"top":213,"width":175.37255859375,"height":25},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGM36ijgflQduU=","_parent":{"$ref":"AAAAAAGM36ijgPlIEFY="},"model":{"$ref":"AAAAAAGM36ijf/lGWTg="},"visible":false,"font":"Arial;13;0","left":432,"top":-320,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGM36ijgflRNV8=","_parent":{"$ref":"AAAAAAGM36ijgPlIEFY="},"model":{"$ref":"AAAAAAGM36ijf/lGWTg="},"visible":false,"font":"Arial;13;0","left":432,"top":-320,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":616,"top":120,"width":174.37255859375,"height":146,"nameCompartment":{"$ref":"AAAAAAGM36ijgPlJf3g="},"attributeCompartment":{"$ref":"AAAAAAGM36ijgflOuOs="},"operationCompartment":{"$ref":"AAAAAAGM36ijgflPPQM="},"receptionCompartment":{"$ref":"AAAAAAGM36ijgflQduU="},"templateParameterCompartment":{"$ref":"AAAAAAGM36ijgflRNV8="}},{"_type":"UMLClassView","_id":"AAAAAAGM362xmvn0om8=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM362xmvny0Fc="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGM362xmvn1nfI=","_parent":{"$ref":"AAAAAAGM362xmvn0om8="},"model":{"$ref":"AAAAAAGM362xmvny0Fc="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGM362xm/n2bmM=","_parent":{"$ref":"AAAAAAGM362xmvn1nfI="},"visible":false,"font":"Arial;13;0","left":-32,"top":-176,"height":13},{"_type":"LabelView","_id":"AAAAAAGM362xm/n3HnQ=","_parent":{"$ref":"AAAAAAGM362xmvn1nfI="},"font":"Arial;13;1","left":653,"top":455,"width":97.458984375,"height":13,"text":"Player"},{"_type":"LabelView","_id":"AAAAAAGM362xm/n4NbQ=","_parent":{"$ref":"AAAAAAGM362xmvn1nfI="},"visible":false,"font":"Arial;13;0","left":-32,"top":-176,"width":80.9072265625,"height":13,"text":"(from Model1)"},{"_type":"LabelView","_id":"AAAAAAGM362xm/n5Xio=","_parent":{"$ref":"AAAAAAGM362xmvn1nfI="},"visible":false,"font":"Arial;13;0","left":-32,"top":-176,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":648,"top":448,"width":107.458984375,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGM362xm/n2bmM="},"nameLabel":{"$ref":"AAAAAAGM362xm/n3HnQ="},"namespaceLabel":{"$ref":"AAAAAAGM362xm/n4NbQ="},"propertyLabel":{"$ref":"AAAAAAGM362xm/n5Xio="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGM362xm/n6DSQ=","_parent":{"$ref":"AAAAAAGM362xmvn0om8="},"model":{"$ref":"AAAAAAGM362xmvny0Fc="},"font":"Arial;13;0","left":648,"top":473,"width":107.458984375,"height":10},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGM362xm/n7bfY=","_parent":{"$ref":"AAAAAAGM362xmvn0om8="},"model":{"$ref":"AAAAAAGM362xmvny0Fc="},"subViews":[{"_type":"UMLOperationView","_id":"AAAAAAGM363F1/of2qw=","_parent":{"$ref":"AAAAAAGM362xm/n7bfY="},"model":{"$ref":"AAAAAAGM363Fs/oc3Fs="},"font":"Arial;13;0","left":653,"top":488,"width":97.458984375,"height":13,"text":"+pause(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM364/vvopxTs=","_parent":{"$ref":"AAAAAAGM362xm/n7bfY="},"model":{"$ref":"AAAAAAGM364/rPomdOQ="},"font":"Arial;13;0","left":653,"top":503,"width":97.458984375,"height":13,"text":"+next(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM3654nPoyBYo=","_parent":{"$ref":"AAAAAAGM362xm/n7bfY="},"model":{"$ref":"AAAAAAGM3654fPovCN4="},"font":"Arial;13;0","left":653,"top":518,"width":97.458984375,"height":13,"text":"+previous(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM366avvo5y2w=","_parent":{"$ref":"AAAAAAGM362xm/n7bfY="},"model":{"$ref":"AAAAAAGM366an/o21os="},"font":"Arial;13;0","left":653,"top":533,"width":97.458984375,"height":13,"text":"+shuffle(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM367vA/pFHVo=","_parent":{"$ref":"AAAAAAGM362xm/n7bfY="},"model":{"$ref":"AAAAAAGM367u3PpCODo="},"font":"Arial;13;0","left":653,"top":548,"width":97.458984375,"height":13,"text":"+play(): void","horizontalAlignment":0}],"font":"Arial;13;0","left":648,"top":483,"width":107.458984375,"height":83},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGM362xm/n8yp4=","_parent":{"$ref":"AAAAAAGM362xmvn0om8="},"model":{"$ref":"AAAAAAGM362xmvny0Fc="},"visible":false,"font":"Arial;13;0","left":-16,"top":-88,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGM362xm/n9P3A=","_parent":{"$ref":"AAAAAAGM362xmvn0om8="},"model":{"$ref":"AAAAAAGM362xmvny0Fc="},"visible":false,"font":"Arial;13;0","left":-16,"top":-88,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":648,"top":448,"width":106.458984375,"height":118,"nameCompartment":{"$ref":"AAAAAAGM362xmvn1nfI="},"attributeCompartment":{"$ref":"AAAAAAGM362xm/n6DSQ="},"operationCompartment":{"$ref":"AAAAAAGM362xm/n7bfY="},"receptionCompartment":{"$ref":"AAAAAAGM362xm/n8yp4="},"templateParameterCompartment":{"$ref":"AAAAAAGM362xm/n9P3A="}},{"_type":"UMLClassView","_id":"AAAAAAGM369sd/pO3jg=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM369sd/pMDmI="},"subViews":[{"_type":"UMLNameCompartmentView","_id":"AAAAAAGM369sePpPg/o=","_parent":{"$ref":"AAAAAAGM369sd/pO3jg="},"model":{"$ref":"AAAAAAGM369sd/pMDmI="},"subViews":[{"_type":"LabelView","_id":"AAAAAAGM369sePpQE9c=","_parent":{"$ref":"AAAAAAGM369sePpPg/o="},"visible":false,"font":"Arial;13;0","left":160,"top":464,"height":13},{"_type":"LabelView","_id":"AAAAAAGM369sePpRZ5Q=","_parent":{"$ref":"AAAAAAGM369sePpPg/o="},"font":"Arial;13;1","left":933,"top":447,"width":195.23193359375,"height":13,"text":"Playlist"},{"_type":"LabelView","_id":"AAAAAAGM369sePpS32c=","_parent":{"$ref":"AAAAAAGM369sePpPg/o="},"visible":false,"font":"Arial;13;0","left":160,"top":464,"width":80.9072265625,"height":13,"text":"(from Model1)"},{"_type":"LabelView","_id":"AAAAAAGM369sePpTD14=","_parent":{"$ref":"AAAAAAGM369sePpPg/o="},"visible":false,"font":"Arial;13;0","left":160,"top":464,"height":13,"horizontalAlignment":1}],"font":"Arial;13;0","left":928,"top":440,"width":205.23193359375,"height":25,"stereotypeLabel":{"$ref":"AAAAAAGM369sePpQE9c="},"nameLabel":{"$ref":"AAAAAAGM369sePpRZ5Q="},"namespaceLabel":{"$ref":"AAAAAAGM369sePpS32c="},"propertyLabel":{"$ref":"AAAAAAGM369sePpTD14="}},{"_type":"UMLAttributeCompartmentView","_id":"AAAAAAGM369sePpUmEY=","_parent":{"$ref":"AAAAAAGM369sd/pO3jg="},"model":{"$ref":"AAAAAAGM369sd/pMDmI="},"subViews":[{"_type":"UMLAttributeView","_id":"AAAAAAGM36/Wcvp5/4M=","_parent":{"$ref":"AAAAAAGM369sePpUmEY="},"model":{"$ref":"AAAAAAGM36/WT/p2k1A="},"font":"Arial;13;0","left":933,"top":470,"width":195.23193359375,"height":13,"text":"+playlistname: string","horizontalAlignment":0},{"_type":"UMLAttributeView","_id":"AAAAAAGM37Aco/qAk4U=","_parent":{"$ref":"AAAAAAGM369sePpUmEY="},"model":{"$ref":"AAAAAAGM37AcZvp9QuQ="},"font":"Arial;13;0","left":933,"top":485,"width":195.23193359375,"height":13,"text":"+playlistID: string","horizontalAlignment":0}],"font":"Arial;13;0","left":928,"top":465,"width":205.23193359375,"height":38},{"_type":"UMLOperationCompartmentView","_id":"AAAAAAGM369sePpVFE8=","_parent":{"$ref":"AAAAAAGM369sd/pO3jg="},"model":{"$ref":"AAAAAAGM369sd/pMDmI="},"subViews":[{"_type":"UMLOperationView","_id":"AAAAAAGM37CAmfqHZzc=","_parent":{"$ref":"AAAAAAGM369sePpVFE8="},"model":{"$ref":"AAAAAAGM37CAhPqEvpM="},"font":"Arial;13;0","left":933,"top":508,"width":195.23193359375,"height":13,"text":"+update playlist(track Track): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM37FWBvqQihM=","_parent":{"$ref":"AAAAAAGM369sePpVFE8="},"model":{"$ref":"AAAAAAGM37FV8fqN7fI="},"font":"Arial;13;0","left":933,"top":523,"width":195.23193359375,"height":13,"text":"+Delete playlist(): void","horizontalAlignment":0},{"_type":"UMLOperationView","_id":"AAAAAAGM37GHefqZ5uI=","_parent":{"$ref":"AAAAAAGM369sePpVFE8="},"model":{"$ref":"AAAAAAGM37GHWPqWGNc="},"font":"Arial;13;0","left":933,"top":538,"width":195.23193359375,"height":13,"text":"+newplaylist(str, str): void","horizontalAlignment":0}],"font":"Arial;13;0","left":928,"top":503,"width":205.23193359375,"height":53},{"_type":"UMLReceptionCompartmentView","_id":"AAAAAAGM369sefpWMaI=","_parent":{"$ref":"AAAAAAGM369sd/pO3jg="},"model":{"$ref":"AAAAAAGM369sd/pMDmI="},"visible":false,"font":"Arial;13;0","left":80,"top":232,"width":10,"height":10},{"_type":"UMLTemplateParameterCompartmentView","_id":"AAAAAAGM369sefpXq6g=","_parent":{"$ref":"AAAAAAGM369sd/pO3jg="},"model":{"$ref":"AAAAAAGM369sd/pMDmI="},"visible":false,"font":"Arial;13;0","left":80,"top":232,"width":10,"height":10}],"font":"Arial;13;0","containerChangeable":true,"left":928,"top":440,"width":204.23193359375,"height":116,"nameCompartment":{"$ref":"AAAAAAGM369sePpPg/o="},"attributeCompartment":{"$ref":"AAAAAAGM369sePpUmEY="},"operationCompartment":{"$ref":"AAAAAAGM369sePpVFE8="},"receptionCompartment":{"$ref":"AAAAAAGM369sefpWMaI="},"templateParameterCompartment":{"$ref":"AAAAAAGM369sefpXq6g="}},{"_type":"UMLGeneralizationView","_id":"AAAAAAGM8wlRhS2zUI4=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM8wlRhS2xPeg="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGM8wlRhS20M1E=","_parent":{"$ref":"AAAAAAGM8wlRhS2zUI4="},"model":{"$ref":"AAAAAAGM8wlRhS2xPeg="},"visible":false,"font":"Arial;13;0","left":520,"top":331,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8wlRhS2zUI4="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8wlRhS216TY=","_parent":{"$ref":"AAAAAAGM8wlRhS2zUI4="},"model":{"$ref":"AAAAAAGM8wlRhS2xPeg="},"visible":null,"font":"Arial;13;0","left":510,"top":320,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8wlRhS2zUI4="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8wlRhS22pE8=","_parent":{"$ref":"AAAAAAGM8wlRhS2zUI4="},"model":{"$ref":"AAAAAAGM8wlRhS2xPeg="},"visible":false,"font":"Arial;13;0","left":541,"top":354,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8wlRhS2zUI4="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGM36ijgPlIEFY="},"tail":{"$ref":"AAAAAAGM36NYU/jxzIw="},"lineStyle":1,"points":"441:431;622:267","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGM8wlRhS20M1E="},"stereotypeLabel":{"$ref":"AAAAAAGM8wlRhS216TY="},"propertyLabel":{"$ref":"AAAAAAGM8wlRhS22pE8="}},{"_type":"UMLGeneralizationView","_id":"AAAAAAGM8wncIC87YcQ=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM8wncIC85YBA="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGM8wncIC88VEU=","_parent":{"$ref":"AAAAAAGM8wncIC87YcQ="},"model":{"$ref":"AAAAAAGM8wncIC85YBA="},"visible":false,"font":"Arial;13;0","left":863,"top":357,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8wncIC87YcQ="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8wncIC89T6o=","_parent":{"$ref":"AAAAAAGM8wncIC87YcQ="},"model":{"$ref":"AAAAAAGM8wncIC85YBA="},"visible":null,"font":"Arial;13;0","left":853,"top":368,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8wncIC87YcQ="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8wncIC8+iUo=","_parent":{"$ref":"AAAAAAGM8wncIC87YcQ="},"model":{"$ref":"AAAAAAGM8wncIC85YBA="},"visible":false,"font":"Arial;13;0","left":884,"top":336,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8wncIC87YcQ="},"edgePosition":1}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGM36ijgPlIEFY="},"tail":{"$ref":"AAAAAAGM369sd/pO3jg="},"lineStyle":1,"points":"967:439;782:267","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGM8wncIC88VEU="},"stereotypeLabel":{"$ref":"AAAAAAGM8wncIC89T6o="},"propertyLabel":{"$ref":"AAAAAAGM8wncIC8+iUo="}},{"_type":"UMLAssociationView","_id":"AAAAAAGM8w8VWzCxpyA=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM8w8VWTCtt/0="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzCy6Bk=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWTCtt/0="},"visible":false,"font":"Arial;13;0","left":560,"top":485,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzCzDM4=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWTCtt/0="},"visible":null,"font":"Arial;13;0","left":560,"top":470,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzC0dP8=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWTCtt/0="},"visible":false,"font":"Arial;13;0","left":559,"top":514,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzC1h44=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCu/pU="},"visible":false,"font":"Arial;13;0","left":499,"top":485,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzC2fQI=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCu/pU="},"visible":false,"font":"Arial;13;0","left":501,"top":471,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzC3zFY=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCu/pU="},"visible":false,"font":"Arial;13;0","left":494,"top":512,"height":13,"alpha":-0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzC4gZU=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCvHRw="},"visible":false,"font":"Arial;13;0","left":621,"top":485,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="}},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzC50g0=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCvHRw="},"visible":false,"font":"Arial;13;0","left":618,"top":472,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="}},{"_type":"EdgeLabelView","_id":"AAAAAAGM8w8VWzC6m8Y=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCvHRw="},"visible":false,"font":"Arial;13;0","left":625,"top":513,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGM8w8VWzCxpyA="}},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGM8w8VXDC7qeY=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCu/pU="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGM8w8VXDC8T/w=","_parent":{"$ref":"AAAAAAGM8w8VWzCxpyA="},"model":{"$ref":"AAAAAAGM8w8VWjCvHRw="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGM362xmvn0om8="},"tail":{"$ref":"AAAAAAGM36NYU/jxzIw="},"lineStyle":1,"points":"473:506;647:507","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGM8w8VWzCy6Bk="},"stereotypeLabel":{"$ref":"AAAAAAGM8w8VWzCzDM4="},"propertyLabel":{"$ref":"AAAAAAGM8w8VWzC0dP8="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGM8w8VWzC1h44="},"tailPropertyLabel":{"$ref":"AAAAAAGM8w8VWzC2fQI="},"tailMultiplicityLabel":{"$ref":"AAAAAAGM8w8VWzC3zFY="},"headRoleNameLabel":{"$ref":"AAAAAAGM8w8VWzC4gZU="},"headPropertyLabel":{"$ref":"AAAAAAGM8w8VWzC50g0="},"headMultiplicityLabel":{"$ref":"AAAAAAGM8w8VWzC6m8Y="},"tailQualifiersCompartment":{"$ref":"AAAAAAGM8w8VXDC7qeY="},"headQualifiersCompartment":{"$ref":"AAAAAAGM8w8VXDC8T/w="}},{"_type":"UMLAssociationView","_id":"AAAAAAGM8xo36DZ4wlU=","_parent":{"$ref":"AAAAAAGM3rbj+vh6vFI="},"model":{"$ref":"AAAAAAGM8xo36DZ0uBo="},"subViews":[{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36DZ5ijA=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ0uBo="},"visible":false,"font":"Arial;13;0","left":841,"top":511,"height":13,"alpha":1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36DZ6ImE=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ0uBo="},"visible":null,"font":"Arial;13;0","left":842,"top":526,"height":13,"alpha":1.5707963267948966,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36DZ7cR0=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ0uBo="},"visible":false,"font":"Arial;13;0","left":840,"top":482,"height":13,"alpha":-1.5707963267948966,"distance":15,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"edgePosition":1},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36DZ81F0=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ1hMc="},"visible":false,"font":"Arial;13;0","left":901,"top":510,"height":13,"alpha":0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36DZ9jI0=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ1hMc="},"visible":false,"font":"Arial;13;0","left":899,"top":524,"height":13,"alpha":0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36DZ+cmY=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ1hMc="},"visible":false,"font":"Arial;13;0","left":904,"top":483,"height":13,"alpha":-0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"edgePosition":2},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36DZ/q5I=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ2X+U="},"visible":false,"font":"Arial;13;0","left":781,"top":514,"height":13,"alpha":-0.5235987755982988,"distance":30,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="}},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36TaAgk0=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ2X+U="},"visible":false,"font":"Arial;13;0","left":784,"top":527,"height":13,"alpha":-0.7853981633974483,"distance":40,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="}},{"_type":"EdgeLabelView","_id":"AAAAAAGM8xo36TaBPig=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ2X+U="},"visible":false,"font":"Arial;13;0","left":776,"top":486,"height":13,"alpha":0.5235987755982988,"distance":25,"hostEdge":{"$ref":"AAAAAAGM8xo36DZ4wlU="}},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGM8xo36TaCz/c=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ1hMc="},"visible":false,"font":"Arial;13;0","width":10,"height":10},{"_type":"UMLQualifierCompartmentView","_id":"AAAAAAGM8xo36TaD3zQ=","_parent":{"$ref":"AAAAAAGM8xo36DZ4wlU="},"model":{"$ref":"AAAAAAGM8xo36DZ2X+U="},"visible":false,"font":"Arial;13;0","width":10,"height":10}],"font":"Arial;13;0","head":{"$ref":"AAAAAAGM362xmvn0om8="},"tail":{"$ref":"AAAAAAGM369sd/pO3jg="},"lineStyle":1,"points":"927:501;755:506","showVisibility":true,"nameLabel":{"$ref":"AAAAAAGM8xo36DZ5ijA="},"stereotypeLabel":{"$ref":"AAAAAAGM8xo36DZ6ImE="},"propertyLabel":{"$ref":"AAAAAAGM8xo36DZ7cR0="},"showEndOrder":"hide","tailRoleNameLabel":{"$ref":"AAAAAAGM8xo36DZ81F0="},"tailPropertyLabel":{"$ref":"AAAAAAGM8xo36DZ9jI0="},"tailMultiplicityLabel":{"$ref":"AAAAAAGM8xo36DZ+cmY="},"headRoleNameLabel":{"$ref":"AAAAAAGM8xo36DZ/q5I="},"headPropertyLabel":{"$ref":"AAAAAAGM8xo36TaAgk0="},"headMultiplicityLabel":{"$ref":"AAAAAAGM8xo36TaBPig="},"tailQualifiersCompartment":{"$ref":"AAAAAAGM8xo36TaCz/c="},"headQualifiersCompartment":{"$ref":"AAAAAAGM8xo36TaD3zQ="}}]},{"_type":"UMLClass","_id":"AAAAAAGM3rbz0Ph+yw8=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"USER","attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGM3wQWGvirAWE=","_parent":{"$ref":"AAAAAAGM3rbz0Ph+yw8="},"name":"user name","visibility":"private","type":""},{"_type":"UMLAttribute","_id":"AAAAAAGM3wVVy/iz+f8=","_parent":{"$ref":"AAAAAAGM3rbz0Ph+yw8="},"name":"password","visibility":"private","type":""}],"operations":[{"_type":"UMLOperation","_id":"AAAAAAGM3waHPPjBnnE=","_parent":{"$ref":"AAAAAAGM3rbz0Ph+yw8="},"name":"login","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM3wbyTvjJjy4=","_parent":{"$ref":"AAAAAAGM3waHPPjBnnE="},"type":"boolean","direction":"return"},{"_type":"UMLParameter","_id":"AAAAAAGM3wdHn/jMM38=","_parent":{"$ref":"AAAAAAGM3waHPPjBnnE="},"name":"str user name","type":""},{"_type":"UMLParameter","_id":"AAAAAAGM3wdHn/jN0z4=","_parent":{"$ref":"AAAAAAGM3waHPPjBnnE="},"name":"str password","type":""}]}]},{"_type":"UMLClass","_id":"AAAAAAGM36NYUvjvR0E=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"Music Library","ownedElements":[{"_type":"UMLGeneralization","_id":"AAAAAAGM373e9wLqjCw=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"source":{"$ref":"AAAAAAGM36NYUvjvR0E="},"target":{"$ref":"AAAAAAGM36ijf/lGWTg="}},{"_type":"UMLAssociation","_id":"AAAAAAGM8wdlaSGzEIE=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8wdlaSG0lhI=","_parent":{"$ref":"AAAAAAGM8wdlaSGzEIE="},"reference":{"$ref":"AAAAAAGM36NYUvjvR0E="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8wdlaSG1S+c=","_parent":{"$ref":"AAAAAAGM8wdlaSGzEIE="},"reference":{"$ref":"AAAAAAGM36ijf/lGWTg="},"navigable":"navigable"}},{"_type":"UMLGeneralization","_id":"AAAAAAGM8wlRhS2xPeg=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"source":{"$ref":"AAAAAAGM36NYUvjvR0E="},"target":{"$ref":"AAAAAAGM36ijf/lGWTg="}},{"_type":"UMLAssociation","_id":"AAAAAAGM8w8VWTCtt/0=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8w8VWjCu/pU=","_parent":{"$ref":"AAAAAAGM8w8VWTCtt/0="},"reference":{"$ref":"AAAAAAGM36NYUvjvR0E="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8w8VWjCvHRw=","_parent":{"$ref":"AAAAAAGM8w8VWTCtt/0="},"reference":{"$ref":"AAAAAAGM362xmvny0Fc="},"aggregation":"shared"}}],"attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGM36PoKfkbBgg=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"name":"library name","type":"String"}],"operations":[{"_type":"UMLOperation","_id":"AAAAAAGM36ZafvkkWbc=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"name":"Add track","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM36aprfkrtMI=","_parent":{"$ref":"AAAAAAGM36ZafvkkWbc="},"type":"track","direction":"return"},{"_type":"UMLParameter","_id":"AAAAAAGM8xG2DTFBHJY=","_parent":{"$ref":"AAAAAAGM36ZafvkkWbc="},"name":"track Track","type":""}]},{"_type":"UMLOperation","_id":"AAAAAAGM36bA9/kuzjs=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"name":"remove track","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM4CE52RioEQA=","_parent":{"$ref":"AAAAAAGM36bA9/kuzjs="},"type":"void","direction":"return"},{"_type":"UMLParameter","_id":"AAAAAAGM8xd1lTQAyGI=","_parent":{"$ref":"AAAAAAGM36bA9/kuzjs="},"name":"track Track","type":""}]},{"_type":"UMLOperation","_id":"AAAAAAGM36cPQPk3eCg=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"name":"Sorting","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM4CEUKBhj6Jw=","_parent":{"$ref":"AAAAAAGM36cPQPk3eCg="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM36dr3fk/Oeo=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"name":"Searching","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM38KtPA4QY5Q=","_parent":{"$ref":"AAAAAAGM36dr3fk/Oeo="},"name":"Track music","type":""},{"_type":"UMLParameter","_id":"AAAAAAGM38KtPQ4RDMY=","_parent":{"$ref":"AAAAAAGM36dr3fk/Oeo="},"type":{"$ref":"AAAAAAGM36ijf/lGWTg="},"direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM8wQtjhr0BZA=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"name":"update_track","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM8wSB3BsZtfo=","_parent":{"$ref":"AAAAAAGM8wQtjhr0BZA="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM8wSpcxsuzic=","_parent":{"$ref":"AAAAAAGM36NYUvjvR0E="},"name":"Operation1"}]},{"_type":"UMLClass","_id":"AAAAAAGM36ijf/lGWTg=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"Track","ownedElements":[{"_type":"UMLAssociation","_id":"AAAAAAGM37SJrfqyf/g=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM37SJrvqzCn4=","_parent":{"$ref":"AAAAAAGM37SJrfqyf/g="},"reference":{"$ref":"AAAAAAGM36ijf/lGWTg="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM37SJrvq08kk=","_parent":{"$ref":"AAAAAAGM37SJrfqyf/g="},"reference":{"$ref":"AAAAAAGM362xmvny0Fc="}}},{"_type":"UMLAssociation","_id":"AAAAAAGM37fPkPvcIWQ=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM37fPkPvdDzw=","_parent":{"$ref":"AAAAAAGM37fPkPvcIWQ="},"reference":{"$ref":"AAAAAAGM36ijf/lGWTg="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM37fPkPveyig=","_parent":{"$ref":"AAAAAAGM37fPkPvcIWQ="},"reference":{"$ref":"AAAAAAGM362xmvny0Fc="},"aggregation":"composite"}},{"_type":"UMLAssociation","_id":"AAAAAAGM37rQv//CT5c=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM37rQwP/Dmjs=","_parent":{"$ref":"AAAAAAGM37rQv//CT5c="},"reference":{"$ref":"AAAAAAGM36ijf/lGWTg="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM37rQwP/Es7k=","_parent":{"$ref":"AAAAAAGM37rQv//CT5c="},"reference":{"$ref":"AAAAAAGM362xmvny0Fc="},"aggregation":"shared"}},{"_type":"UMLGeneralization","_id":"AAAAAAGM3763RgVdmu4=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"source":{"$ref":"AAAAAAGM36ijf/lGWTg="},"target":{"$ref":"AAAAAAGM36NYUvjvR0E="}},{"_type":"UMLAssociation","_id":"AAAAAAGM4A0dYA7Cz28=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM4A0dYQ7D3/4=","_parent":{"$ref":"AAAAAAGM4A0dYA7Cz28="},"name":"1 0....","reference":{"$ref":"AAAAAAGM36ijf/lGWTg="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM4A0dYQ7ENs8=","_parent":{"$ref":"AAAAAAGM4A0dYA7Cz28="},"reference":{"$ref":"AAAAAAGM369sd/pMDmI="}}},{"_type":"UMLAssociation","_id":"AAAAAAGM4A9tDRMR6K4=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM4A9tDRMSiPM=","_parent":{"$ref":"AAAAAAGM4A9tDRMR6K4="},"reference":{"$ref":"AAAAAAGM36ijf/lGWTg="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM4A9tDRMToK0=","_parent":{"$ref":"AAAAAAGM4A9tDRMR6K4="},"reference":{"$ref":"AAAAAAGM369sd/pMDmI="}}}],"attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGM36l0RvlytOE=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"track_name","type":"String"},{"_type":"UMLAttribute","_id":"AAAAAAGM36mg2/l59iw=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"track _id","type":"String"},{"_type":"UMLAttribute","_id":"AAAAAAGM36nHzPmA9C8=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"track_duration","type":"int"},{"_type":"UMLAttribute","_id":"AAAAAAGM36o44vmHdX0=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"track_ album _id","type":"String"},{"_type":"UMLAttribute","_id":"AAAAAAGM8wrm5i/XQOE=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"track_author","type":"string"}],"operations":[{"_type":"UMLOperation","_id":"AAAAAAGM36py7/mONvs=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"add track","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM36twu/mVncs=","_parent":{"$ref":"AAAAAAGM36py7/mONvs="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM36txTPmX3zQ=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"delete track","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM36uqR/meBVU=","_parent":{"$ref":"AAAAAAGM36txTPmX3zQ="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM36uqxvmgIek=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"view_ track_ detail","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM36wCw/mnPlM=","_parent":{"$ref":"AAAAAAGM36uqxvmgIek="},"type":"String","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM8PbbghmNVg8=","_parent":{"$ref":"AAAAAAGM36ijf/lGWTg="},"name":"Track","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM8PclhxmyLaA=","_parent":{"$ref":"AAAAAAGM8PbbghmNVg8="},"type":"void","direction":"return"},{"_type":"UMLParameter","_id":"AAAAAAGM8Pd6rRn3Dkk=","_parent":{"$ref":"AAAAAAGM8PbbghmNVg8="},"name":"str","type":""},{"_type":"UMLParameter","_id":"AAAAAAGM8Pd6rRn45lg=","_parent":{"$ref":"AAAAAAGM8PbbghmNVg8="},"name":"str","type":""},{"_type":"UMLParameter","_id":"AAAAAAGM8Pd6rhn56n4=","_parent":{"$ref":"AAAAAAGM8PbbghmNVg8="},"name":"int","type":""},{"_type":"UMLParameter","_id":"AAAAAAGM8Pd6rhn6E44=","_parent":{"$ref":"AAAAAAGM8PbbghmNVg8="},"name":"str","type":""}]}]},{"_type":"UMLClass","_id":"AAAAAAGM36z3bfmpqHI=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"Player","attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGM360PNPnTOOg=","_parent":{"$ref":"AAAAAAGM36z3bfmpqHI="},"name":"Attribute1","type":""}]},{"_type":"UMLClass","_id":"AAAAAAGM362xmvny0Fc=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"Player","operations":[{"_type":"UMLOperation","_id":"AAAAAAGM363Fs/oc3Fs=","_parent":{"$ref":"AAAAAAGM362xmvny0Fc="},"name":"pause","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM3640qPok2KM=","_parent":{"$ref":"AAAAAAGM363Fs/oc3Fs="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM364/rPomdOQ=","_parent":{"$ref":"AAAAAAGM362xmvny0Fc="},"name":"next","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM36535/otbxU=","_parent":{"$ref":"AAAAAAGM364/rPomdOQ="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM3654fPovCN4=","_parent":{"$ref":"AAAAAAGM362xmvny0Fc="},"name":"previous","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM3668XPo9f/0=","_parent":{"$ref":"AAAAAAGM3654fPovCN4="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM366an/o21os=","_parent":{"$ref":"AAAAAAGM362xmvny0Fc="},"name":"shuffle","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM367uU/pAxmA=","_parent":{"$ref":"AAAAAAGM366an/o21os="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM367u3PpCODo=","_parent":{"$ref":"AAAAAAGM362xmvny0Fc="},"name":"play","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM369GEfpJX0Y=","_parent":{"$ref":"AAAAAAGM367u3PpCODo="},"type":"void","direction":"return"}]}]},{"_type":"UMLClass","_id":"AAAAAAGM369sd/pMDmI=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"Playlist","ownedElements":[{"_type":"UMLGeneralization","_id":"AAAAAAGM379/JQircjU=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"source":{"$ref":"AAAAAAGM369sd/pMDmI="},"target":{"$ref":"AAAAAAGM36NYUvjvR0E="}},{"_type":"UMLAssociation","_id":"AAAAAAGM8weQESOqeVk=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8weQESOr208=","_parent":{"$ref":"AAAAAAGM8weQESOqeVk="},"reference":{"$ref":"AAAAAAGM369sd/pMDmI="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8weQESOsIes=","_parent":{"$ref":"AAAAAAGM8weQESOqeVk="},"reference":{"$ref":"AAAAAAGM36ijf/lGWTg="},"navigable":"navigable"}},{"_type":"UMLGeneralization","_id":"AAAAAAGM8wncIC85YBA=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"source":{"$ref":"AAAAAAGM369sd/pMDmI="},"target":{"$ref":"AAAAAAGM36ijf/lGWTg="}},{"_type":"UMLAssociation","_id":"AAAAAAGM8xoFdjVK06c=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8xoFdjVLt04=","_parent":{"$ref":"AAAAAAGM8xoFdjVK06c="},"reference":{"$ref":"AAAAAAGM369sd/pMDmI="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8xoFdzVMThI=","_parent":{"$ref":"AAAAAAGM8xoFdjVK06c="},"reference":{"$ref":"AAAAAAGM369sd/pMDmI="},"aggregation":"shared"}},{"_type":"UMLAssociation","_id":"AAAAAAGM8xo36DZ0uBo=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"end1":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8xo36DZ1hMc=","_parent":{"$ref":"AAAAAAGM8xo36DZ0uBo="},"reference":{"$ref":"AAAAAAGM369sd/pMDmI="}},"end2":{"_type":"UMLAssociationEnd","_id":"AAAAAAGM8xo36DZ2X+U=","_parent":{"$ref":"AAAAAAGM8xo36DZ0uBo="},"reference":{"$ref":"AAAAAAGM362xmvny0Fc="}}}],"attributes":[{"_type":"UMLAttribute","_id":"AAAAAAGM36/WT/p2k1A=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"name":"playlistname","type":"string"},{"_type":"UMLAttribute","_id":"AAAAAAGM37AcZvp9QuQ=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"name":"playlistID","type":"string"}],"operations":[{"_type":"UMLOperation","_id":"AAAAAAGM37CAhPqEvpM=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"name":"update playlist","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM37FBWPqLAZU=","_parent":{"$ref":"AAAAAAGM37CAhPqEvpM="},"type":"void","direction":"return"},{"_type":"UMLParameter","_id":"AAAAAAGM8x2usDtU3yE=","_parent":{"$ref":"AAAAAAGM37CAhPqEvpM="},"name":"track Track","type":""}]},{"_type":"UMLOperation","_id":"AAAAAAGM37FV8fqN7fI=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"name":"Delete playlist","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM37GGvPqUOLQ=","_parent":{"$ref":"AAAAAAGM37FV8fqN7fI="},"type":"void","direction":"return"}]},{"_type":"UMLOperation","_id":"AAAAAAGM37GHWPqWGNc=","_parent":{"$ref":"AAAAAAGM369sd/pMDmI="},"name":"newplaylist","parameters":[{"_type":"UMLParameter","_id":"AAAAAAGM37G/wvqdspw=","_parent":{"$ref":"AAAAAAGM37GHWPqWGNc="},"type":"void","direction":"return"},{"_type":"UMLParameter","_id":"AAAAAAGM8x9j1zurhek=","_parent":{"$ref":"AAAAAAGM37GHWPqWGNc="},"name":"str","type":""},{"_type":"UMLParameter","_id":"AAAAAAGM8x9j1zus58M=","_parent":{"$ref":"AAAAAAGM37GHWPqWGNc="},"name":"str","type":""}]}]},{"_type":"UMLInterface","_id":"AAAAAAGM37s5yQFjwd8=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"Interface1"},{"_type":"UMLClass","_id":"AAAAAAGM8PFzYxkKbIg=","_parent":{"$ref":"AAAAAAGM3rbj+fh5MA0="},"name":"Class1"}]}]}
\ No newline at end of file
diff --git a/Manou/mvnw b/Manou/mvnw
new file mode 100644
index 0000000..8a8fb22
--- /dev/null
+++ b/Manou/mvnw
@@ -0,0 +1,316 @@
+#!/bin/sh
+# ----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ----------------------------------------------------------------------------
+
+# ----------------------------------------------------------------------------
+# Maven Start Up Batch script
+#
+# Required ENV vars:
+# ------------------
+# JAVA_HOME - location of a JDK home dir
+#
+# Optional ENV vars
+# -----------------
+# M2_HOME - location of maven2's installed home dir
+# MAVEN_OPTS - parameters passed to the Java VM when running Maven
+# e.g. to debug Maven itself, use
+# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+# MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+# ----------------------------------------------------------------------------
+
+if [ -z "$MAVEN_SKIP_RC" ] ; then
+
+ if [ -f /usr/local/etc/mavenrc ] ; then
+ . /usr/local/etc/mavenrc
+ fi
+
+ if [ -f /etc/mavenrc ] ; then
+ . /etc/mavenrc
+ fi
+
+ if [ -f "$HOME/.mavenrc" ] ; then
+ . "$HOME/.mavenrc"
+ fi
+
+fi
+
+# OS specific support. $var _must_ be set to either true or false.
+cygwin=false;
+darwin=false;
+mingw=false
+case "`uname`" in
+ CYGWIN*) cygwin=true ;;
+ MINGW*) mingw=true;;
+ Darwin*) darwin=true
+ # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home
+ # See https://developer.apple.com/library/mac/qa/qa1170/_index.html
+ if [ -z "$JAVA_HOME" ]; then
+ if [ -x "/usr/libexec/java_home" ]; then
+ export JAVA_HOME="`/usr/libexec/java_home`"
+ else
+ export JAVA_HOME="/Library/Java/Home"
+ fi
+ fi
+ ;;
+esac
+
+if [ -z "$JAVA_HOME" ] ; then
+ if [ -r /etc/gentoo-release ] ; then
+ JAVA_HOME=`java-config --jre-home`
+ fi
+fi
+
+if [ -z "$M2_HOME" ] ; then
+ ## resolve links - $0 may be a link to maven's home
+ PRG="$0"
+
+ # need this for relative symlinks
+ while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG="`dirname "$PRG"`/$link"
+ fi
+ done
+
+ saveddir=`pwd`
+
+ M2_HOME=`dirname "$PRG"`/..
+
+ # make it fully qualified
+ M2_HOME=`cd "$M2_HOME" && pwd`
+
+ cd "$saveddir"
+ # echo Using m2 at $M2_HOME
+fi
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched
+if $cygwin ; then
+ [ -n "$M2_HOME" ] &&
+ M2_HOME=`cygpath --unix "$M2_HOME"`
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=`cygpath --path --unix "$CLASSPATH"`
+fi
+
+# For Mingw, ensure paths are in UNIX format before anything is touched
+if $mingw ; then
+ [ -n "$M2_HOME" ] &&
+ M2_HOME="`(cd "$M2_HOME"; pwd)`"
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`"
+fi
+
+if [ -z "$JAVA_HOME" ]; then
+ javaExecutable="`which javac`"
+ if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then
+ # readlink(1) is not available as standard on Solaris 10.
+ readLink=`which readlink`
+ if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then
+ if $darwin ; then
+ javaHome="`dirname \"$javaExecutable\"`"
+ javaExecutable="`cd \"$javaHome\" && pwd -P`/javac"
+ else
+ javaExecutable="`readlink -f \"$javaExecutable\"`"
+ fi
+ javaHome="`dirname \"$javaExecutable\"`"
+ javaHome=`expr "$javaHome" : '\(.*\)/bin'`
+ JAVA_HOME="$javaHome"
+ export JAVA_HOME
+ fi
+ fi
+fi
+
+if [ -z "$JAVACMD" ] ; then
+ if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ else
+ JAVACMD="`\\unset -f command; \\command -v java`"
+ fi
+fi
+
+if [ ! -x "$JAVACMD" ] ; then
+ echo "Error: JAVA_HOME is not defined correctly." >&2
+ echo " We cannot execute $JAVACMD" >&2
+ exit 1
+fi
+
+if [ -z "$JAVA_HOME" ] ; then
+ echo "Warning: JAVA_HOME environment variable is not set."
+fi
+
+CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher
+
+# traverses directory structure from process work directory to filesystem root
+# first directory with .mvn subdirectory is considered project base directory
+find_maven_basedir() {
+
+ if [ -z "$1" ]
+ then
+ echo "Path not specified to find_maven_basedir"
+ return 1
+ fi
+
+ basedir="$1"
+ wdir="$1"
+ while [ "$wdir" != '/' ] ; do
+ if [ -d "$wdir"/.mvn ] ; then
+ basedir=$wdir
+ break
+ fi
+ # workaround for JBEAP-8937 (on Solaris 10/Sparc)
+ if [ -d "${wdir}" ]; then
+ wdir=`cd "$wdir/.."; pwd`
+ fi
+ # end of workaround
+ done
+ echo "${basedir}"
+}
+
+# concatenates all lines of a file
+concat_lines() {
+ if [ -f "$1" ]; then
+ echo "$(tr -s '\n' ' ' < "$1")"
+ fi
+}
+
+BASE_DIR=`find_maven_basedir "$(pwd)"`
+if [ -z "$BASE_DIR" ]; then
+ exit 1;
+fi
+
+##########################################################################################
+# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+# This allows using the maven wrapper in projects that prohibit checking in binary data.
+##########################################################################################
+if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found .mvn/wrapper/maven-wrapper.jar"
+ fi
+else
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..."
+ fi
+ if [ -n "$MVNW_REPOURL" ]; then
+ jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+ else
+ jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+ fi
+ while IFS="=" read key value; do
+ case "$key" in (wrapperUrl) jarUrl="$value"; break ;;
+ esac
+ done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties"
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Downloading from: $jarUrl"
+ fi
+ wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar"
+ if $cygwin; then
+ wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"`
+ fi
+
+ if command -v wget > /dev/null; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found wget ... using wget"
+ fi
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+ else
+ wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath"
+ fi
+ elif command -v curl > /dev/null; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Found curl ... using curl"
+ fi
+ if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then
+ curl -o "$wrapperJarPath" "$jarUrl" -f
+ else
+ curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f
+ fi
+
+ else
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo "Falling back to using Java to download"
+ fi
+ javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java"
+ # For Cygwin, switch paths to Windows format before running javac
+ if $cygwin; then
+ javaClass=`cygpath --path --windows "$javaClass"`
+ fi
+ if [ -e "$javaClass" ]; then
+ if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo " - Compiling MavenWrapperDownloader.java ..."
+ fi
+ # Compiling the Java class
+ ("$JAVA_HOME/bin/javac" "$javaClass")
+ fi
+ if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then
+ # Running the downloader
+ if [ "$MVNW_VERBOSE" = true ]; then
+ echo " - Running MavenWrapperDownloader.java ..."
+ fi
+ ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR")
+ fi
+ fi
+ fi
+fi
+##########################################################################################
+# End of extension
+##########################################################################################
+
+export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}
+if [ "$MVNW_VERBOSE" = true ]; then
+ echo $MAVEN_PROJECTBASEDIR
+fi
+MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS"
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin; then
+ [ -n "$M2_HOME" ] &&
+ M2_HOME=`cygpath --path --windows "$M2_HOME"`
+ [ -n "$JAVA_HOME" ] &&
+ JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"`
+ [ -n "$CLASSPATH" ] &&
+ CLASSPATH=`cygpath --path --windows "$CLASSPATH"`
+ [ -n "$MAVEN_PROJECTBASEDIR" ] &&
+ MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"`
+fi
+
+# Provide a "standardized" way to retrieve the CLI args that will
+# work with both Windows and non-Windows executions.
+MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@"
+export MAVEN_CMD_LINE_ARGS
+
+WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+exec "$JAVACMD" \
+ $MAVEN_OPTS \
+ $MAVEN_DEBUG_OPTS \
+ -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \
+ "-Dmaven.home=${M2_HOME}" \
+ "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \
+ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@"
diff --git a/Manou/mvnw.cmd b/Manou/mvnw.cmd
new file mode 100644
index 0000000..1d8ab01
--- /dev/null
+++ b/Manou/mvnw.cmd
@@ -0,0 +1,188 @@
+@REM ----------------------------------------------------------------------------
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements. See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership. The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License. You may obtain a copy of the License at
+@REM
+@REM https://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied. See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM ----------------------------------------------------------------------------
+
+@REM ----------------------------------------------------------------------------
+@REM Maven Start Up Batch script
+@REM
+@REM Required ENV vars:
+@REM JAVA_HOME - location of a JDK home dir
+@REM
+@REM Optional ENV vars
+@REM M2_HOME - location of maven2's installed home dir
+@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands
+@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending
+@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven
+@REM e.g. to debug Maven itself, use
+@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
+@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files
+@REM ----------------------------------------------------------------------------
+
+@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on'
+@echo off
+@REM set title of command window
+title %0
+@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on'
+@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO%
+
+@REM set %HOME% to equivalent of $HOME
+if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%")
+
+@REM Execute a user defined script before this one
+if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre
+@REM check for pre script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %*
+if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %*
+:skipRcPre
+
+@setlocal
+
+set ERROR_CODE=0
+
+@REM To isolate internal variables from possible post scripts, we use another setlocal
+@setlocal
+
+@REM ==== START VALIDATION ====
+if not "%JAVA_HOME%" == "" goto OkJHome
+
+echo.
+echo Error: JAVA_HOME not found in your environment. >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+:OkJHome
+if exist "%JAVA_HOME%\bin\java.exe" goto init
+
+echo.
+echo Error: JAVA_HOME is set to an invalid directory. >&2
+echo JAVA_HOME = "%JAVA_HOME%" >&2
+echo Please set the JAVA_HOME variable in your environment to match the >&2
+echo location of your Java installation. >&2
+echo.
+goto error
+
+@REM ==== END VALIDATION ====
+
+:init
+
+@REM Find the project base dir, i.e. the directory that contains the folder ".mvn".
+@REM Fallback to current working directory if not found.
+
+set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR%
+IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir
+
+set EXEC_DIR=%CD%
+set WDIR=%EXEC_DIR%
+:findBaseDir
+IF EXIST "%WDIR%"\.mvn goto baseDirFound
+cd ..
+IF "%WDIR%"=="%CD%" goto baseDirNotFound
+set WDIR=%CD%
+goto findBaseDir
+
+:baseDirFound
+set MAVEN_PROJECTBASEDIR=%WDIR%
+cd "%EXEC_DIR%"
+goto endDetectBaseDir
+
+:baseDirNotFound
+set MAVEN_PROJECTBASEDIR=%EXEC_DIR%
+cd "%EXEC_DIR%"
+
+:endDetectBaseDir
+
+IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig
+
+@setlocal EnableExtensions EnableDelayedExpansion
+for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a
+@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS%
+
+:endReadAdditionalConfig
+
+SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
+set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar"
+set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain
+
+set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+
+FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO (
+ IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B
+)
+
+@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central
+@REM This allows using the maven wrapper in projects that prohibit checking in binary data.
+if exist %WRAPPER_JAR% (
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Found %WRAPPER_JAR%
+ )
+) else (
+ if not "%MVNW_REPOURL%" == "" (
+ SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar"
+ )
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Couldn't find %WRAPPER_JAR%, downloading it ...
+ echo Downloading from: %DOWNLOAD_URL%
+ )
+
+ powershell -Command "&{"^
+ "$webclient = new-object System.Net.WebClient;"^
+ "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^
+ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^
+ "}"^
+ "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^
+ "}"
+ if "%MVNW_VERBOSE%" == "true" (
+ echo Finished downloading %WRAPPER_JAR%
+ )
+)
+@REM End of extension
+
+@REM Provide a "standardized" way to retrieve the CLI args that will
+@REM work with both Windows and non-Windows executions.
+set MAVEN_CMD_LINE_ARGS=%*
+
+%MAVEN_JAVA_EXE% ^
+ %JVM_CONFIG_MAVEN_PROPS% ^
+ %MAVEN_OPTS% ^
+ %MAVEN_DEBUG_OPTS% ^
+ -classpath %WRAPPER_JAR% ^
+ "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^
+ %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %*
+if ERRORLEVEL 1 goto error
+goto end
+
+:error
+set ERROR_CODE=1
+
+:end
+@endlocal & set ERROR_CODE=%ERROR_CODE%
+
+if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost
+@REM check for post script, once with legacy .bat ending and once with .cmd ending
+if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat"
+if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd"
+:skipRcPost
+
+@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on'
+if "%MAVEN_BATCH_PAUSE%"=="on" pause
+
+if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE%
+
+cmd /C exit /B %ERROR_CODE%
diff --git a/Manou/pom.xml b/Manou/pom.xml
new file mode 100644
index 0000000..55fd408
--- /dev/null
+++ b/Manou/pom.xml
@@ -0,0 +1,106 @@
+
+
+ 4.0.0
+
+ com.example
+ Manou
+ 1.0-SNAPSHOT
+ Manou
+
+
+
+ central
+ https://repo.maven.apache.org/maven2
+
+
+
+
+ UTF-8
+ 5.9.2
+
+
+
+
+
+
+
+ org.openjfx
+ javafx-controls
+ 20
+
+
+ org.openjfx
+ javafx-fxml
+ 20
+
+
+ com.dlsc.formsfx
+ formsfx-core
+ 11.6.0
+
+
+ org.openjfx
+ *
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ ${junit.version}
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ ${junit.version}
+ test
+
+
+ org.openjfx
+ javafx-media
+ 20.0.1
+
+
+ org.openjfx
+ javafx-graphics
+ 20
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+ 20
+ 20
+
+
+
+ org.openjfx
+ javafx-maven-plugin
+ 0.0.8
+
+
+
+ default-cli
+
+ com.example.manou/com.example.manou.HelloApplication
+ app
+ app
+ app
+ true
+ true
+ true
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Manou/src/main/java/com/example/manou/HelloApplication.java b/Manou/src/main/java/com/example/manou/HelloApplication.java
new file mode 100644
index 0000000..ef7739a
--- /dev/null
+++ b/Manou/src/main/java/com/example/manou/HelloApplication.java
@@ -0,0 +1,24 @@
+package com.example.manou;
+
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+public class HelloApplication extends Application {
+ @Override
+ public void start(Stage stage) throws IOException {
+ FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
+ Scene scene = new Scene(fxmlLoader.load());
+ stage.setTitle("MP3 APPLICATION");
+ stage.setScene(scene);
+ stage.show();
+ }
+
+ public static void main(String[] args) {
+ launch();
+ }
+}
\ No newline at end of file
diff --git a/Manou/src/main/java/com/example/manou/HelloController.java b/Manou/src/main/java/com/example/manou/HelloController.java
new file mode 100644
index 0000000..68b9f5c
--- /dev/null
+++ b/Manou/src/main/java/com/example/manou/HelloController.java
@@ -0,0 +1,278 @@
+package com.example.manou;
+
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.scene.media.MediaPlayer;
+import javafx.stage.Stage;
+import javafx.scene.media.Media;
+import javafx.util.Duration;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.ResourceBundle;
+import java.util.Timer;
+import java.util.TimerTask;
+
+
+public class HelloController implements Initializable {
+ @FXML
+ private Label Welcomelabel;
+ @FXML
+ private Label Homelabel;
+ @FXML
+ private Label songLabel;
+ @FXML
+ private ProgressBar progressbar;
+ @FXML
+ private ButtonBar Searchbar;
+ @FXML
+ private Slider Volumeslider;
+
+ @FXML
+ private Button Searchbutton,Homebutton,Librarybutton,Playlistbutton,Playbutton,Pausebutton,Nextbutton,Previousbutton,Shufflebutton,resetbutton;
+ @FXML
+ private SplitPane split;
+
+ private Media media;
+ private MediaPlayer mediaPlayer;
+
+
+
+
+ private File directory;
+ private File []files;
+ private ArrayList songs;
+
+ private int songNumber;
+ private Timer timer;
+ private boolean running;
+
+
+ public void initialize(){
+ Media media= new Media("C://Users//hp//IdeaProjects//Manou//src//main//java//com//example//manou//music");
+ mediaPlayer = new MediaPlayer(media);
+ mediaPlayer.play();
+
+ progressbar=new ProgressBar();
+ progressbar.setProgress(0);
+ beginTimer();
+ }
+ public void beginTimer(){
+ timer = new Timer();
+ TimerTask task = new TimerTask() {
+ @Override
+ public void run() {
+ running = true;
+ double current = mediaPlayer.getCurrentTime().toSeconds();
+ double end = media.getDuration().toSeconds();
+
+ progressbar.setProgress(current / end);
+
+ if (current / end == 1) {
+ cancelTimer();
+ }
+
+
+ }
+ };
+ timer.scheduleAtFixedRate(task, 0, 1000);
+
+
+
+ }
+
+
+ public void cancelTimer(){
+ //running=false;
+ //timer.cancel();
+ // added this
+ if (timer != null) {
+ timer.cancel();
+ }
+ running=false;
+
+
+ }
+
+
+ public void initialize(URL arg0, ResourceBundle arg1){
+ songs = new ArrayList();
+ directory = new File("C://Users//hp//IdeaProjects//Manou//src//main//java//com//example//manou//music");
+ files= directory.listFiles();
+
+ if(files != null){
+ for (File file : files){
+ songs.add(file);
+ System.out.println(file);
+ }
+ }
+
+ if (songNumber>= 0 && songNumber < songs.size()){
+ media= new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer= new MediaPlayer(media);
+ songLabel.setText(songs.get(songNumber).getName());
+ mediaPlayer.play(); //added this
+
+ }
+ else{
+ System.out.println("invalid song number:" + songNumber);
+ }
+
+ Volumeslider.valueProperty().addListener(new ChangeListener<>() {
+ @Override
+ public void changed(ObservableValue extends Number> arg0, Number arg1, Number t1) {
+ mediaPlayer.setVolume(Volumeslider.getValue()* 0.01); //problem here
+
+ }
+ });
+ progressbar.setStyle("-fx-accent: #006666;");
+
+ }
+
+
+
+ @FXML
+ protected void Searchtrack() {
+
+
+ }
+ @FXML
+ protected void toHome() {
+ }
+ @FXML
+ protected void toLibrary() throws IOException {
+
+ Stage stage = new Stage();
+ FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("library.fxml"));
+ Scene scene;
+ scene = new Scene(fxmlLoader.load());
+ stage.setTitle("MP3 APPLICATION");
+ stage.setScene(scene);
+ stage.show();
+ }
+ @FXML
+ protected void toplaylist() throws IOException {
+ Stage stage = new Stage();
+ FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("playlist.fxml"));
+ Scene scene;
+ scene = new Scene(fxmlLoader.load());
+ stage.setTitle("MP3 APPLICATION");
+ stage.setScene(scene);
+ stage.show();
+ }
+
+ @FXML
+ protected void Playtrack() {
+ beginTimer();
+ mediaPlayer.setVolume(Volumeslider.getValue()* 0.01);
+ mediaPlayer.play();
+
+ }
+ @FXML
+ protected void Pausetrack() {
+ cancelTimer();
+ mediaPlayer.pause();
+ }
+ @FXML
+ protected void resettrack() {
+ progressbar.setProgress(0);
+ mediaPlayer.seek(Duration.seconds(0));
+ }
+
+ @FXML
+ protected void Nexttrack() {
+
+
+ //checks current song number and moves to the next song
+ if (songNumber < songs.size() - 1) {
+ songNumber++;
+ mediaPlayer.stop();
+ if (running){
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString()); //added Media
+ mediaPlayer= new MediaPlayer(media);
+
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+ // enables the song to start back after the last song is played.
+ else{
+ songNumber = 0;
+ mediaPlayer.stop();
+ if (running){
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer= new MediaPlayer(media);
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+ }
+ @FXML
+ protected void Previoustrack() {
+ // moves to previous song
+ if (songNumber >0) {
+ songNumber--;
+ mediaPlayer.stop();
+ if (running){
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer= new MediaPlayer(media);
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+ // enables the last song to be played if the 'previous' button is clicked when the first song is playing.
+ else{
+ songNumber = songs.size() -1;
+ mediaPlayer.stop();
+ if (running){
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer= new MediaPlayer(media);
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+ }
+ @FXML
+ protected void Shuffletrack() {
+ ArrayList shuffledIndices = new ArrayList<>();
+ while (shuffledIndices.size() < songs.size()) {
+ int randomIndex = (int) (Math.random() * songs.size());
+ if (!shuffledIndices.contains(randomIndex)) {
+ shuffledIndices.add(randomIndex);
+ }
+ }
+ ArrayList shuffledSongs = new ArrayList<>();
+ for (int index : shuffledIndices) {
+ shuffledSongs.add(songs.get(index));
+ }
+ // Play the first song in the shuffled ArrayList
+ media = new Media(shuffledSongs.get(0).toURI().toString());
+ mediaPlayer = new MediaPlayer(media);
+ songLabel.setText(shuffledSongs.get(0).getName());
+ mediaPlayer.play();
+ cancelTimer();
+ mediaPlayer.pause();
+ }
+
+
+}
\ No newline at end of file
diff --git a/Manou/src/main/java/com/example/manou/LibraryController.java b/Manou/src/main/java/com/example/manou/LibraryController.java
new file mode 100644
index 0000000..6f9120b
--- /dev/null
+++ b/Manou/src/main/java/com/example/manou/LibraryController.java
@@ -0,0 +1,274 @@
+package com.example.manou;
+
+import javafx.beans.value.ChangeListener;
+import javafx.beans.value.ObservableValue;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.scene.media.Media;
+import javafx.scene.media.MediaPlayer;
+import javafx.stage.Stage;
+import javafx.util.Duration;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.ResourceBundle;
+import java.util.Timer;
+import java.util.TimerTask;
+
+public class LibraryController implements Initializable {
+
+ @FXML
+ private Label Welcomelabel;
+ @FXML
+ private Label musiclabel;
+ @FXML
+ private Label songLabel;
+ @FXML
+ private ProgressBar progressbar;
+ @FXML
+ private ButtonBar Searchbar;
+ @FXML
+ private Slider Volumeslider;
+
+ @FXML
+ private SplitPane split;
+ @FXML
+ private Button Searchbutton,Homebutton,Librarybutton,Playlistbutton,Playbutton,Pausebutton,Nextbutton,
+ Previousbutton,shuffleandplaybutton,sortbutton,resetbutton;
+
+ @FXML
+ private ListView musiclist;
+
+ private Media media;
+ private MediaPlayer mediaPlayer;
+ private File directory;
+ private File []files;
+ private ArrayList songs;
+
+ private int songNumber;
+ private Timer timer;
+ private boolean running;
+
+
+
+ public void initialize(){
+ Media media= new Media("C://Users//hp//IdeaProjects//Manou//src//main//java//com//example//manou//music");
+ mediaPlayer = new MediaPlayer(media);
+ mediaPlayer.play();
+
+ progressbar=new ProgressBar();
+ progressbar.setProgress(0);
+ beginTimer();
+ }
+ public void beginTimer(){
+ timer = new Timer();
+ TimerTask task = new TimerTask() {
+ @Override
+ public void run() {
+ running = true;
+ double current = mediaPlayer.getCurrentTime().toSeconds(); // problem here
+ double end = media.getDuration().toSeconds();
+
+ progressbar.setProgress(current / end);
+
+ if (current / end == 1) {
+ cancelTimer();
+ }
+
+
+ }
+ };
+ timer.scheduleAtFixedRate(task, 0, 1000);
+
+
+
+ }
+
+ public void cancelTimer(){
+ //running=false;
+ //timer.cancel();
+ // added this
+ if (timer != null) {
+ timer.cancel();
+ }
+ running=false;
+
+
+ }
+ @Override
+ public void initialize(URL url, ResourceBundle resourceBundle) {
+ songs = new ArrayList();
+ directory = new File("C://Users//hp//IdeaProjects//Manou//src//main//java//com//example//manou//music");
+ files= directory.listFiles();
+
+ if(files != null){
+ for (File file : files){
+ songs.add(file);
+ System.out.println(file);
+ }
+ }
+
+ if (songNumber>= 0 && songNumber < songs.size()){
+ media= new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer= new MediaPlayer(media);
+ songLabel.setText(songs.get(songNumber).getName());
+ mediaPlayer.play(); //added this
+
+ }
+ else{
+ System.out.println("invalid song number:" + songNumber);
+ }
+
+ Volumeslider.valueProperty().addListener(new ChangeListener<>() {
+ @Override
+ public void changed(ObservableValue extends Number> arg0, Number arg1, Number t1) {
+ mediaPlayer.setVolume(Volumeslider.getValue()* 0.01); //problem here
+
+ }
+ });
+ progressbar.setStyle("-fx-accent: #006666;");
+
+ }
+
+
+
+ @FXML
+ protected void Searchtrack() {
+ }
+ @FXML
+ protected void toHome() throws IOException {
+ Stage stage = new Stage();
+ FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
+ Scene scene;
+ scene = new Scene(fxmlLoader.load());
+ stage.setTitle("MP3 APPLICATION");
+ stage.setScene(scene);
+ stage.show();
+ }
+ @FXML
+ protected void toLibrary() {
+ }
+ @FXML
+ protected void toplaylist() throws IOException {
+ Stage stage = new Stage();
+ FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("playlist.fxml"));
+ Scene scene;
+ scene = new Scene(fxmlLoader.load());
+ stage.setTitle("MP3 APPLICATION");
+ stage.setScene(scene);
+ stage.show();
+ }
+ @FXML
+ protected void Playtrack() {
+ beginTimer();
+ mediaPlayer.setVolume(Volumeslider.getValue()* 0.01);
+ mediaPlayer.play();
+ }
+ @FXML
+ protected void Pausetrack() {
+
+ cancelTimer();
+ mediaPlayer.pause();
+ }
+ @FXML
+ protected void Nexttrack() {
+ //checks current song number and moves to the next song
+ if (songNumber < songs.size() - 1) {
+ songNumber++;
+ mediaPlayer.stop();
+ if (running) {
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString()); //added Media
+ mediaPlayer = new MediaPlayer(media);
+
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+ // enables the song to start back after the last song is played.
+ else {
+ songNumber = 0;
+ mediaPlayer.stop();
+ if (running) {
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer = new MediaPlayer(media);
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+ }
+ @FXML
+ protected void Previoustrack() {
+ //moves to previous song
+ if (songNumber >0) {
+ songNumber--;
+ mediaPlayer.stop();
+ if (running){
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer= new MediaPlayer(media);
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+ // enables the last song to be played if the 'previous' button is clicked when the first song is playing.
+ else{
+ songNumber = songs.size() -1;
+ mediaPlayer.stop();
+ if (running){
+ cancelTimer();
+ }
+
+ media = new Media(songs.get(songNumber).toURI().toString());
+ mediaPlayer= new MediaPlayer(media);
+
+ songLabel.setText(songs.get(songNumber).getName());
+ Playtrack();
+ }
+
+
+ }
+ @FXML
+ protected void resettrack() {
+ progressbar.setProgress(0);
+ mediaPlayer.seek(Duration.seconds(0));
+ }
+ @FXML
+ protected void shuffleandplay() {
+ ArrayList shuffledIndices = new ArrayList<>();
+ while (shuffledIndices.size() < songs.size()) {
+ int randomIndex = (int) (Math.random() * songs.size());
+ if (!shuffledIndices.contains(randomIndex)) {
+ shuffledIndices.add(randomIndex);
+ }
+ }
+ ArrayList shuffledSongs = new ArrayList<>();
+ for (int index : shuffledIndices) {
+ shuffledSongs.add(songs.get(index));
+ }
+ // Play the first song in the shuffled ArrayList
+ media = new Media(shuffledSongs.get(0).toURI().toString());
+ mediaPlayer = new MediaPlayer(media);
+ songLabel.setText(shuffledSongs.get(0).getName());
+ mediaPlayer.play();
+ cancelTimer();
+ mediaPlayer.pause();
+ }
+ @FXML
+ protected void sorttrack() {
+ }
+
+
+}
diff --git a/Manou/src/main/java/com/example/manou/PlaylistController.java b/Manou/src/main/java/com/example/manou/PlaylistController.java
new file mode 100644
index 0000000..4f34c83
--- /dev/null
+++ b/Manou/src/main/java/com/example/manou/PlaylistController.java
@@ -0,0 +1,74 @@
+package com.example.manou;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.stage.Stage;
+
+import java.io.IOException;
+
+public class PlaylistController {
+ @FXML
+ private Label Welcomelabel;
+
+ @FXML
+ private ProgressBar progressbar;
+ @FXML
+ private ButtonBar Searchbar;
+ @FXML
+ private Slider Volumeslider;
+
+ @FXML
+ private Button Searchbutton,Homebutton,Librarybutton,Playlistbutton,Playbutton,Pausebutton,Nextbutton,Previousbutton,Shufflebutton,newplaylistbutton;
+ @FXML
+ private SplitPane split;
+ @FXML
+ private Label playlistlabel;
+
+
+
+ @FXML
+ protected void Searchtrack() {
+ }
+ @FXML
+ protected void toHome() throws IOException {
+ Stage stage = new Stage();
+ FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("hello-view.fxml"));
+ Scene scene;
+ scene = new Scene(fxmlLoader.load());
+ stage.setTitle("MP3 APPLICATION");
+ stage.setScene(scene);
+ stage.show();
+ }
+ @FXML
+ protected void toLibrary() throws IOException {
+ Stage stage = new Stage();
+ FXMLLoader fxmlLoader = new FXMLLoader(HelloApplication.class.getResource("library.fxml"));
+ Scene scene;
+ scene = new Scene(fxmlLoader.load());
+ stage.setTitle("MP3 APPLICATION");
+ stage.setScene(scene);
+ stage.show();
+ }
+ @FXML
+ protected void toplaylist() {
+ }
+ @FXML
+ protected void Playtrack() {
+ }
+ @FXML
+ protected void Pausetrack() {
+ }
+ @FXML
+ protected void Nexttrack() {
+ }
+ @FXML
+ protected void Previoustrack() {
+ }
+ @FXML
+ protected void Shuffletrack() {
+ }
+ @FXML
+ protected void createplaylist() {
+ }
+}
diff --git "a/Manou/src/main/java/com/example/manou/music/Ariana Grande - \342\200\213Break up with your girlfriend, i m bored.mp3" "b/Manou/src/main/java/com/example/manou/music/Ariana Grande - \342\200\213Break up with your girlfriend, i m bored.mp3"
new file mode 100644
index 0000000..7cbfe3d
Binary files /dev/null and "b/Manou/src/main/java/com/example/manou/music/Ariana Grande - \342\200\213Break up with your girlfriend, i m bored.mp3" differ
diff --git a/Manou/src/main/java/module-info.java b/Manou/src/main/java/module-info.java
new file mode 100644
index 0000000..74411e1
--- /dev/null
+++ b/Manou/src/main/java/module-info.java
@@ -0,0 +1,11 @@
+module com.example.manou {
+ requires javafx.controls;
+ requires javafx.fxml;
+ requires javafx.media;
+
+
+ requires com.dlsc.formsfx;
+
+ opens com.example.manou to javafx.fxml;
+ exports com.example.manou;
+}
\ No newline at end of file
diff --git a/Manou/src/main/resources/com/example/manou/hello-view.fxml b/Manou/src/main/resources/com/example/manou/hello-view.fxml
new file mode 100644
index 0000000..699cc59
--- /dev/null
+++ b/Manou/src/main/resources/com/example/manou/hello-view.fxml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Manou/src/main/resources/com/example/manou/library.fxml b/Manou/src/main/resources/com/example/manou/library.fxml
new file mode 100644
index 0000000..49662d5
--- /dev/null
+++ b/Manou/src/main/resources/com/example/manou/library.fxml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Manou/src/main/resources/com/example/manou/playlist.fxml b/Manou/src/main/resources/com/example/manou/playlist.fxml
new file mode 100644
index 0000000..30092a8
--- /dev/null
+++ b/Manou/src/main/resources/com/example/manou/playlist.fxml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Manou/target/classes/com/example/manou/HelloApplication.class b/Manou/target/classes/com/example/manou/HelloApplication.class
new file mode 100644
index 0000000..1faee17
Binary files /dev/null and b/Manou/target/classes/com/example/manou/HelloApplication.class differ
diff --git a/Manou/target/classes/com/example/manou/HelloController$1.class b/Manou/target/classes/com/example/manou/HelloController$1.class
new file mode 100644
index 0000000..d8790ca
Binary files /dev/null and b/Manou/target/classes/com/example/manou/HelloController$1.class differ
diff --git a/Manou/target/classes/com/example/manou/HelloController$2.class b/Manou/target/classes/com/example/manou/HelloController$2.class
new file mode 100644
index 0000000..b9adf08
Binary files /dev/null and b/Manou/target/classes/com/example/manou/HelloController$2.class differ
diff --git a/Manou/target/classes/com/example/manou/HelloController.class b/Manou/target/classes/com/example/manou/HelloController.class
new file mode 100644
index 0000000..04b9277
Binary files /dev/null and b/Manou/target/classes/com/example/manou/HelloController.class differ
diff --git a/Manou/target/classes/com/example/manou/LibraryController$1.class b/Manou/target/classes/com/example/manou/LibraryController$1.class
new file mode 100644
index 0000000..ed4a498
Binary files /dev/null and b/Manou/target/classes/com/example/manou/LibraryController$1.class differ
diff --git a/Manou/target/classes/com/example/manou/LibraryController$2.class b/Manou/target/classes/com/example/manou/LibraryController$2.class
new file mode 100644
index 0000000..9544f55
Binary files /dev/null and b/Manou/target/classes/com/example/manou/LibraryController$2.class differ
diff --git a/Manou/target/classes/com/example/manou/LibraryController.class b/Manou/target/classes/com/example/manou/LibraryController.class
new file mode 100644
index 0000000..113409f
Binary files /dev/null and b/Manou/target/classes/com/example/manou/LibraryController.class differ
diff --git a/Manou/target/classes/com/example/manou/PlaylistController.class b/Manou/target/classes/com/example/manou/PlaylistController.class
new file mode 100644
index 0000000..9866652
Binary files /dev/null and b/Manou/target/classes/com/example/manou/PlaylistController.class differ
diff --git a/Manou/target/classes/com/example/manou/hello-view.fxml b/Manou/target/classes/com/example/manou/hello-view.fxml
new file mode 100644
index 0000000..699cc59
--- /dev/null
+++ b/Manou/target/classes/com/example/manou/hello-view.fxml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Manou/target/classes/com/example/manou/library.fxml b/Manou/target/classes/com/example/manou/library.fxml
new file mode 100644
index 0000000..49662d5
--- /dev/null
+++ b/Manou/target/classes/com/example/manou/library.fxml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Manou/target/classes/com/example/manou/playlist.fxml b/Manou/target/classes/com/example/manou/playlist.fxml
new file mode 100644
index 0000000..30092a8
--- /dev/null
+++ b/Manou/target/classes/com/example/manou/playlist.fxml
@@ -0,0 +1,85 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Manou/target/classes/module-info.class b/Manou/target/classes/module-info.class
new file mode 100644
index 0000000..bd6c61b
Binary files /dev/null and b/Manou/target/classes/module-info.class differ
diff --git a/Readme.txt b/Readme.txt
new file mode 100644
index 0000000..e69de29