🎒 Exam | 1st Semester | SDE & SCO
myTunes desktop application
Explore the docs »
MyTune project was about learning object-oriented-programming and functionalities. Basics of programming with a strongly typed language Java and with the help of JavaFx we were able to develop application where we worked on the logic, added extra design pattern and exploring options within JavaFX and Liberica 19 All the requirements are fulfilled, and we also added some extra features we found useful and good for learning purposes. Our main focus was on lowest coupling as possible and on high cohesion throughout the development.
Our application was re-design by us in Figma
- JDBC database connection
- Abstract Factory Pattern for DAO
- Abstract Factory Pattern for different type of connection
- Prepared statements securing SQL injection
- Environmental variables
- Dynamic update in the interface
- Songs
- CRUD
- Ability to play song
- Adding songs into playlist
- Removing song from playlist
- Dynamic update in the interface
- Song on Playlist
- Playlist that consist all songs
- One-to-many relation database
- Sorting
- Removing of the songs from playlist
- Shuffle
- Media player
- Singleton pattern
- Standard play functionalities / play,pause,next,previous
- Volume
- Song duration operation
- Playlist
- Sign in as Admin
- Edit products in db
- Add products to db
- View ordered products
- Choice of deleting products / orders
- QUILL Editor with fb storage upload
public class ConnectionFactory {
public static AbstractConnectionFactory getFactory(DatabaseType type) {
switch (type) {
case MSSQL:
return new MSSQLConnection();
default:
throw new IllegalArgumentException("Invalid database type: " + type);
}
}
}
Using abstraction and factories in java helped the application with decoupling in certain degree
public class DAOFactory extends AbstractDAOFactory{
@Override
public ISongDAO getSongDAO() throws Exception {
return new SongDAO();
}
public MSSQLConnection() throws IOException {
Properties properties = loadConfigFile();
this.dataSource = new SQLServerDataSource();
this.dataSource.setDatabaseName(properties.getProperty("db.name"));
this.dataSource.setUser(properties.getProperty("db.username"));
this.dataSource.setPassword(properties.getProperty("db.password"));
this.dataSource.setServerName(properties.getProperty("db.server"));
this.dataSource.setPortNumber(Integer.parseInt(properties.getProperty("db.port")));
}
Way of how we approached the problem of having sensitive data publicly
Distributed under the MIT License. See LICENSE for more information.
Team: isEmpty() {true}
2022 SDE & SCO cs project posted here on GitHub.
Hope you will like it!
Thank you for your attention!
TTT ✒️
Tomas Simko - @twitter - [email protected] - @linkedIn
Balint Farkas - @twitter - [email protected] - @linkedIn
Matej Mazur - @github
Julian Hesberg - @github
Project Link: https://github.com/mmEASV/myTunes