{"id":15069733,"url":"https://github.com/neerajsk911/musicrecordingcompany","last_synced_at":"2026-01-02T19:20:10.553Z","repository":{"id":37304034,"uuid":"318455367","full_name":"neerajsk911/MusicRecordingCompany","owner":"neerajsk911","description":"Java Application using Swings API and PostgreSQL/MySQL","archived":false,"fork":false,"pushed_at":"2021-06-22T18:44:13.000Z","size":13034,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-16T09:14:42.429Z","etag":null,"topics":["company","entity-sets","gui","java","java-se","javaswings","jdbc-client","music","music-recording-company","mysql","postgresql","recording","swingsapi","system"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neerajsk911.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-04T08:42:51.000Z","updated_at":"2023-03-05T05:39:45.000Z","dependencies_parsed_at":"2022-09-07T16:12:05.653Z","dependency_job_id":null,"html_url":"https://github.com/neerajsk911/MusicRecordingCompany","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neerajsk911%2FMusicRecordingCompany","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neerajsk911%2FMusicRecordingCompany/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neerajsk911%2FMusicRecordingCompany/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neerajsk911%2FMusicRecordingCompany/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neerajsk911","download_url":"https://codeload.github.com/neerajsk911/MusicRecordingCompany/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243847060,"owners_count":20357317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["company","entity-sets","gui","java","java-se","javaswings","jdbc-client","music","music-recording-company","mysql","postgresql","recording","swingsapi","system"],"created_at":"2024-09-25T01:44:28.083Z","updated_at":"2026-01-02T19:20:10.516Z","avatar_url":"https://github.com/neerajsk911.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Music Recording Company System\n\nA **Java Project** with *PostgreSQL* as backend. \n\n## Description\n\nA GUI application created using *Java Swings, AWT and JDBC Client* to interface a Database **Music Recording Company** deployed in *PostgreSQL*.\n\n\n\n## Requirements\n\n* Java SE JDK 11+\n* *PostgreSQL* or *MySQL* for backend\n* JDBC Connector for *PostgreSQL* or *MySQL*\n* *Eclipse Workspace for Java SE Developers (Optional) or any IDE that supports Java*\n\n## Workflow\n\n* A User  can login with a privilege of either **Admin** or **Local**.\n* *Local user* can only display the table contents.\n* *Admins* can insert, delete and update values as well.\n* If the validation was **Unsuccessful**, a failed message would be displayed.\n* All the operations return a *returnCode* which implies if the execution of the queries were **Successful**.\n* A Special case exists wherein Upon *Inserting a New Song* and *Mapping its Musician*, the Program **internally calls** the *IncrementSong()* or *IncrementComposed()* method which updates the *Songs_Sung* or *Songs_Composed* by the Musician and **Increments it without any User Intervention.**\n\n## Watchout!\n* [ConnectDB.java](https://github.com/neerajsk911/MusicRecordingCompany/blob/324550c5b7f0b2c5c688a613ae628e0db23f7c3f/src/databases/ConnectDB.java) in the package **databases** is responsible for **retrieving the connection** from the database using JDBC operations. The Database name , Username and Password **as mentioned in the file** is evaluated to retrieve the connection. Therefore it must be **updated** following the requirements of the DB.\n\n\n## UML Relations\n\n* ***Use Case Diagram:***\n\n![image](others/usecase.png)\n\n* ***Class Diagram:***\n\n\n![image](others/classdiagram.png)\n\n* ***ER Diagram for the Database:***\n\n\n![image](others/erdiagram.jpg)\n\n*All the UML relation are expected results. Actual Structure of the Program can possibly differ from the UML*\n\n## Backend Details\n* The entity sets in the following project are:\n* *Song*\n* *Musician*\n* *Album*\n* *Production*\n* *Band*\n* *Singer*\n* *Composer*\n\n* A **Many to Many relation** – *‘Performed By’* is mapped between the entity sets\nMusician and Song with a Total participation of Song in ‘Performed By’ as the\nMinimum cardinality for the relation is expected to be \u003e=1 as there always exists\na Musician for a particular Song.\n* A **Many to One relation** – *‘Consist of’* is mapped between the entity sets Song and\nAlbum as Many songs can be a part of an Album with a Total Participation of Song\nin ‘Consists of’ as a Minimum of 1 song is expected to be present in an Album.\n* A **One to Many relation** – *‘Produced By’* is mapped between the entity sets Albums\nand Productions wherein it is expected that a particular Album is Produced By\nonly a single Production whereas a Single Production can Produce many Albums.\n* A **Many to One relation** – *‘Orchestra By’* is mapped between the entity sets Song and Band considering a Single Band can Orchestrate multiple songs whereas a\nparticular Song can be Orchestrated by only a Single Band.\n* The entity sets *Singer* and *Composer* serve as a **Specialization** for the entity set Musician.\n\n![image](others/structure.jpeg)\n\n*Sample relations in the Database*\n\n## Screenshots\n\n* ***Login Page:***\n\n![image](others/login.png)\n\n*Username: admin     Password: musicdb (as inserted in loginDB table of database)*\n\n*Username: regular    Password: imreguser (Regular User)*\n\n* ***Failed Validation:***\n\n![image](others/failed.png)\n\n* ***Functionalities after logging as Admin:***\n\n![image](others/admin.png)\n\n*Admin can Insert, Update and Remove the Database contents apart from Displaying*\n\n* ***Functionalities after logging as Regular User:***\n\n![image](others/local.png)\n\n* ***UI Icons:***\n\n![image](others/icons.png)\n\n* ***Displaying a Record from Database:***\n\n![image](others/display.png)\n\n* ***Adding a New Song:***\n\n![image](others/insert.png)\n\n* ***Updating a Production details:***\n\n![image](others/update.png)\n\n* ***About Us:***\n\n![image](others/aboutus.png)\n\n## Class Description\n\n* Package: **core**\n\n  * **Driver.java** - **Driver code** *for the Application*\n  * *Terminate.java - Terminates the JDBC Connections*\n\n* Package: **databases**\n\n  * *ConnectDB.java  - Connects the JDBC Client*\n  * *GUILoginCheck.java - Validates the Login Credentials used at Start*\n  * **QueryEvaluator.java**  - **Mainstream Query Processor** *which sends all JDBC requests*\n  * #### Interfaces:\n\n  * *dbDisplay.java  - Consists of SQL Queries as methods to perform Display Operations*\n  * *dbInsert.java  - Consists of SQL Queries as methods to perform Insert Operations*\n  * *dbUpdater.java  - Consists of SQL Queries as methods to perform Update Operations*\n  * *RecordRemover.java  - Consists of SQL Queries as methods to perform Delete Operations*\n\n* Package: **gui**\n\n  * *GUIManager.java  - Handles the GUI for Load Animations*\n  * *Login.java -  Handles the GUI for Initial Login Screen*\n  * **StartAdmin.java**  *- **Core GUI Handler**. Manages the GUI for the Entire Application*\n  * #### Interfaces:\n\n  * *Messages.java  - Handles the Success/Fail messages Displayed in the Application*\n  * *ResourcePaths.java  - Contains the Path to all the Resources used in the Application*\n\n## Devs:\n\n*This Project was Created as a part of the Course [**Object Oriented Programming(19CSE204)**](https://amritauniv.sharepoint.com/sites/ObjectOrientedProgrammingJune-Dec2020/) by Group 6 S3 CSE-C, Amrita School of Engineering,Amritapuri*\n* ***Neeraj S Kumar***\n* ***Meenakshi R***\n* ***Arathi Premkumar***\n* ***Darshana Manojkumar***\n* ***Jyothika Sony***\n\n##### Connect With Me: [LinkedIn](https://www.linkedin.com/in/neeraj-s-kumar-938161129)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneerajsk911%2Fmusicrecordingcompany","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneerajsk911%2Fmusicrecordingcompany","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneerajsk911%2Fmusicrecordingcompany/lists"}