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 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 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/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/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