Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
VideoLAN
medialibrary
Commits
87f40f8a
Commit
87f40f8a
authored
May 24, 2014
by
Hugo Beauzée-Luyssen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Albums: Add setters for release date, name, summary & artwork url
parent
9e81e199
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
126 additions
and
22 deletions
+126
-22
include/IAlbum.h
include/IAlbum.h
+9
-5
src/Album.cpp
src/Album.cpp
+50
-10
src/Album.h
src/Album.h
+11
-7
test/Albums.cpp
test/Albums.cpp
+56
-0
No files found.
include/IAlbum.h
View file @
87f40f8a
...
...
@@ -10,11 +10,15 @@ class IAlbum
public:
virtual
~
IAlbum
()
{}
virtual
unsigned
int
id
()
const
=
0
;
virtual
const
std
::
string
&
name
()
=
0
;
virtual
unsigned
int
releaseYear
()
=
0
;
virtual
const
std
::
string
&
shortSummary
()
=
0
;
virtual
const
std
::
string
&
artworkUrl
()
=
0
;
virtual
bool
tracks
(
std
::
vector
<
std
::
shared_ptr
<
IAlbumTrack
>>&
tracks
)
=
0
;
virtual
const
std
::
string
&
name
()
const
=
0
;
virtual
bool
setName
(
const
std
::
string
&
name
)
=
0
;
virtual
time_t
releaseDate
()
const
=
0
;
virtual
bool
setReleaseDate
(
time_t
date
)
=
0
;
virtual
const
std
::
string
&
shortSummary
()
const
=
0
;
virtual
bool
setShortSummary
(
const
std
::
string
&
summary
)
=
0
;
virtual
const
std
::
string
&
artworkUrl
()
const
=
0
;
virtual
bool
setArtworkUrl
(
const
std
::
string
&
artworkUrl
)
=
0
;
virtual
bool
tracks
(
std
::
vector
<
std
::
shared_ptr
<
IAlbumTrack
>>&
tracks
)
const
=
0
;
virtual
AlbumTrackPtr
addTrack
(
const
std
::
string
&
name
,
unsigned
int
trackId
)
=
0
;
};
...
...
src/Album.cpp
View file @
87f40f8a
...
...
@@ -12,7 +12,7 @@ Album::Album(sqlite3* dbConnection, sqlite3_stmt* stmt)
{
m_id
=
sqlite3_column_int
(
stmt
,
0
);
m_name
=
Traits
<
std
::
string
>::
Load
(
stmt
,
1
);
m_release
Year
=
sqlite3_column_int
(
stmt
,
2
);
m_release
Date
=
sqlite3_column_int
(
stmt
,
2
);
m_shortSummary
=
Traits
<
std
::
string
>::
Load
(
stmt
,
3
);
m_artworkUrl
=
Traits
<
std
::
string
>::
Load
(
stmt
,
4
);
m_lastSyncDate
=
sqlite3_column_int
(
stmt
,
5
);
...
...
@@ -22,7 +22,7 @@ Album::Album(sqlite3* dbConnection, sqlite3_stmt* stmt)
Album
::
Album
(
const
std
::
string
&
id3tag
)
:
m_dbConnection
(
nullptr
)
,
m_id
(
0
)
,
m_release
Year
(
0
)
,
m_release
Date
(
0
)
,
m_lastSyncDate
(
0
)
,
m_id3tag
(
id3tag
)
{
...
...
@@ -33,32 +33,72 @@ unsigned int Album::id() const
return
m_id
;
}
const
std
::
string
&
Album
::
name
()
const
std
::
string
&
Album
::
name
()
const
{
return
m_name
;
}
unsigned
int
Album
::
releaseYear
(
)
bool
Album
::
setName
(
const
std
::
string
&
name
)
{
return
m_releaseYear
;
static
const
std
::
string
&
req
=
"UPDATE "
+
policy
::
AlbumTable
::
Name
+
" SET name = ? WHERE id_album = ?"
;
if
(
SqliteTools
::
executeUpdate
(
m_dbConnection
,
req
,
name
,
m_id
)
==
false
)
return
false
;
m_name
=
name
;
return
true
;
}
const
std
::
string
&
Album
::
shortSummary
()
time_t
Album
::
releaseDate
()
const
{
return
m_releaseDate
;
}
bool
Album
::
setReleaseDate
(
time_t
date
)
{
static
const
std
::
string
&
req
=
"UPDATE "
+
policy
::
AlbumTable
::
Name
+
" SET release_date = ? WHERE id_album = ?"
;
if
(
SqliteTools
::
executeUpdate
(
m_dbConnection
,
req
,
date
,
m_id
)
==
false
)
return
false
;
m_releaseDate
=
date
;
return
true
;
}
const
std
::
string
&
Album
::
shortSummary
()
const
{
return
m_shortSummary
;
}
const
std
::
string
&
Album
::
artworkUrl
()
bool
Album
::
setShortSummary
(
const
std
::
string
&
summary
)
{
static
const
std
::
string
&
req
=
"UPDATE "
+
policy
::
AlbumTable
::
Name
+
" SET short_summary = ? WHERE id_album = ?"
;
if
(
SqliteTools
::
executeUpdate
(
m_dbConnection
,
req
,
summary
,
m_id
)
==
false
)
return
false
;
m_shortSummary
=
summary
;
return
true
;
}
const
std
::
string
&
Album
::
artworkUrl
()
const
{
return
m_artworkUrl
;
}
time_t
Album
::
lastSyncDate
()
bool
Album
::
setArtworkUrl
(
const
std
::
string
&
artworkUrl
)
{
static
const
std
::
string
&
req
=
"UPDATE "
+
policy
::
AlbumTable
::
Name
+
" SET artwork_url = ? WHERE id_album = ?"
;
if
(
SqliteTools
::
executeUpdate
(
m_dbConnection
,
req
,
artworkUrl
,
m_id
)
==
false
)
return
false
;
m_artworkUrl
=
artworkUrl
;
return
true
;
}
time_t
Album
::
lastSyncDate
()
const
{
return
m_lastSyncDate
;
}
bool
Album
::
tracks
(
std
::
vector
<
std
::
shared_ptr
<
IAlbumTrack
>
>&
tracks
)
bool
Album
::
tracks
(
std
::
vector
<
std
::
shared_ptr
<
IAlbumTrack
>
>&
tracks
)
const
{
const
char
*
req
=
"SELECT * FROM AlbumTrack WHERE album_id = ?"
;
return
SqliteTools
::
fetchAll
<
AlbumTrack
>
(
m_dbConnection
,
req
,
tracks
,
m_id
);
...
...
@@ -74,7 +114,7 @@ bool Album::createTable( sqlite3* dbConnection )
const
char
*
req
=
"CREATE TABLE IF NOT EXISTS Album("
"id_album INTEGER PRIMARY KEY AUTOINCREMENT,"
"name TEXT,"
"release_
year
UNSIGNED INTEGER,"
"release_
date
UNSIGNED INTEGER,"
"short_summary TEXT,"
"artwork_url TEXT,"
"UNSIGNED INTEGER last_sync_date,"
...
...
src/Album.h
View file @
87f40f8a
...
...
@@ -30,12 +30,16 @@ class Album : public IAlbum, public Cache<Album, IAlbum, policy::AlbumTable>
Album
(
const
std
::
string
&
id3tag
);
unsigned
int
id
()
const
;
virtual
const
std
::
string
&
name
();
virtual
unsigned
int
releaseYear
();
virtual
const
std
::
string
&
shortSummary
();
virtual
const
std
::
string
&
artworkUrl
();
virtual
time_t
lastSyncDate
();
virtual
bool
tracks
(
std
::
vector
<
std
::
shared_ptr
<
IAlbumTrack
>>&
tracks
);
virtual
const
std
::
string
&
name
()
const
;
virtual
bool
setName
(
const
std
::
string
&
name
);
virtual
time_t
releaseDate
()
const
;
virtual
bool
setReleaseDate
(
time_t
date
);
virtual
const
std
::
string
&
shortSummary
()
const
;
virtual
bool
setShortSummary
(
const
std
::
string
&
summary
);
virtual
const
std
::
string
&
artworkUrl
()
const
;
virtual
bool
setArtworkUrl
(
const
std
::
string
&
artworkUrl
);
virtual
time_t
lastSyncDate
()
const
;
virtual
bool
tracks
(
std
::
vector
<
std
::
shared_ptr
<
IAlbumTrack
>>&
tracks
)
const
;
virtual
AlbumTrackPtr
addTrack
(
const
std
::
string
&
name
,
unsigned
int
trackNb
);
...
...
@@ -46,7 +50,7 @@ class Album : public IAlbum, public Cache<Album, IAlbum, policy::AlbumTable>
sqlite3
*
m_dbConnection
;
unsigned
int
m_id
;
std
::
string
m_name
;
unsigned
int
m_release
Year
;
unsigned
int
m_release
Date
;
std
::
string
m_shortSummary
;
std
::
string
m_artworkUrl
;
time_t
m_lastSyncDate
;
...
...
test/Albums.cpp
View file @
87f40f8a
...
...
@@ -113,6 +113,7 @@ TEST_F( Albums, SetGenre )
auto
t
=
a
->
addTrack
(
"track"
,
1
);
t
->
setGenre
(
"happy underground post progressive death metal"
);
ASSERT_EQ
(
t
->
genre
(),
"happy underground post progressive death metal"
);
delete
ml
;
SetUp
();
...
...
@@ -123,3 +124,58 @@ TEST_F( Albums, SetGenre )
ASSERT_EQ
(
t
->
genre
(),
t2
->
genre
()
);
}
TEST_F
(
Albums
,
SetName
)
{
auto
a
=
ml
->
createAlbum
(
"album"
);
a
->
setName
(
"albumname"
);
ASSERT_EQ
(
a
->
name
(),
"albumname"
);
delete
ml
;
SetUp
();
auto
a2
=
ml
->
album
(
"album"
);
ASSERT_EQ
(
a
->
name
(),
a2
->
name
()
);
}
TEST_F
(
Albums
,
SetReleaseDate
)
{
auto
a
=
ml
->
createAlbum
(
"album"
);
a
->
setReleaseDate
(
1234
);
ASSERT_EQ
(
a
->
releaseDate
(),
1234
);
delete
ml
;
SetUp
();
auto
a2
=
ml
->
album
(
"album"
);
ASSERT_EQ
(
a
->
releaseDate
(),
a2
->
releaseDate
()
);
}
TEST_F
(
Albums
,
SetShortSummary
)
{
auto
a
=
ml
->
createAlbum
(
"album"
);
a
->
setShortSummary
(
"summary"
);
ASSERT_EQ
(
a
->
shortSummary
(),
"summary"
);
delete
ml
;
SetUp
();
auto
a2
=
ml
->
album
(
"album"
);
ASSERT_EQ
(
a
->
shortSummary
(),
a2
->
shortSummary
()
);
}
TEST_F
(
Albums
,
SetArtworkUrl
)
{
auto
a
=
ml
->
createAlbum
(
"album"
);
a
->
setArtworkUrl
(
"artwork"
);
ASSERT_EQ
(
a
->
artworkUrl
(),
"artwork"
);
delete
ml
;
SetUp
();
auto
a2
=
ml
->
album
(
"album"
);
ASSERT_EQ
(
a
->
artworkUrl
(),
a2
->
artworkUrl
()
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment