MediaLibrary: Moved some helpers for working with model classes, names, and files into here.
This commit is contained in:
parent
e148acd897
commit
9205732b0e
@ -20,6 +20,8 @@ public class MediaLibrary {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(MediaLibrary)
|
||||
|
||||
private static UPPERCASE_PATTERN = Pattern.compile(/(.)(\p{javaUpperCase})/)
|
||||
|
||||
@Delegate ORM orm
|
||||
private File libraryRoot
|
||||
|
||||
@ -135,6 +137,13 @@ public class MediaLibrary {
|
||||
public List<Album> getAlbumsByName(String name) {
|
||||
return orm.getAlbumsWhere(name: name) ?: orm.getAlbumsLikeName(name) }
|
||||
|
||||
public List<MediaFile> collectMediaFiles(List<Model> models) {
|
||||
if (!models) return []
|
||||
|
||||
return models.collectMany { m ->
|
||||
if (m.class == MediaFile) return [m]
|
||||
return orm.getMediaFilesWhere((idKeyFor(m.class)): m.id) }.findAll() }
|
||||
|
||||
public List<Artist> splitArtist(Artist toSplit, Pattern splitPattern) {
|
||||
return splitArtist(toSplit, pattern.split(toSplit.name)) }
|
||||
|
||||
@ -233,9 +242,21 @@ public class MediaLibrary {
|
||||
if (b != parentPath.length) return ""
|
||||
return (['.'] + childPath[b..<childPath.length]).join('/') }
|
||||
|
||||
|
||||
public static Integer safeToInteger(def val) {
|
||||
if (val == null) return null
|
||||
try { return val.trim() as Integer }
|
||||
catch (NumberFormatException nfe) { return null } }
|
||||
|
||||
public static String uncapitalize(String s) {
|
||||
if (s == null) return null;
|
||||
if (s.length() < 2) return s.toLowerCase();
|
||||
return s[0].toLowerCase() + s[1..-1] }
|
||||
|
||||
public static String toEnglish(Class c) {
|
||||
return UPPERCASE_PATTERN.matcher(c.simpleName).
|
||||
replaceAll(/$1 $2/).toLowerCase() }
|
||||
|
||||
public static String idKeyFor(Class c) {
|
||||
return uncapitalize(c.simpleName) + 'Id'; }
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user