@Override public Id getId() { return musicArtist.getId(); }
public RepositoryBrowserByArtistSupport() { super(catalog -> catalog.findArtists()); } }
@Override public <T> T as(Class<T> type) { return musicArtist.as(type); }
/******************************************************************************************************************* * * FIXME: DUPLICATED FROM EmbbededAudioMetadataImporter * ******************************************************************************************************************/ @Nonnull private static IRI recordIriOf (final @Nonnull Metadata metadata, final @Nonnull String recordTitle) { final Optional<Cddb> cddb = metadata.get(CDDB); return BMMO.recordIriFor((cddb.isPresent()) ? createSha1IdNew(cddb.get().getToc()) : createSha1IdNew("RECORD:" + recordTitle)); }
/******************************************************************************************************************* * * {@inheritDoc} * ******************************************************************************************************************/ @Override @Nonnull public PathAwareFinder findPhotos (final @Nonnull MediaFolder parent) { return parent.finderOf(p -> Arrays.asList( new VirtualMediaFolder(p, PATH_PLACES, "Places", this::placesFactory), new VirtualMediaFolder(p, PATH_SUBJECTS, "Subjects", this::subjectsFactory))); }
public RepositoryBrowserByTrack() { super(catalog -> catalog.findTracks().sort(new ByTrackName())); } }
@Nonnull private Collection<PathAwareEntity> childrenFactory (final @Nonnull MediaFolder parent) { return Arrays.asList(new VirtualMediaFolder(parent, PATH_MUSIC, "Music", this::musicFactory), new VirtualMediaFolder(parent, PATH_PHOTOS, "Photos", EMPTY), new VirtualMediaFolder(parent, PATH_VIDEOS, "Videos", EMPTY), new VirtualMediaFolder(parent, PATH_SERVICES, "Services", this::servicesFactory)); }
@Override @Nonnull public Path getPath() { return parent.getPath().resolve(id); }
private VirtualMediaFolder (final @Nonnull Optional<? extends MediaFolder> optionalParent, final @Nonnull Path pathSegment, final @Nonnull String displayName, final @Nonnull Optional<EntityCollectionFactory> childrenSupplier, final @Nonnull Optional<EntityFinderFactory> finderFactory) { super((Identifiable)() -> new Id(absolutePath(optionalParent, pathSegment).toString()), new DefaultDisplayable(displayName)); this.path = absolutePath(optionalParent, pathSegment); this.optionalParent = optionalParent; this.finderFactory = finderFactory.orElse(mediaFolder -> mediaFolder.finderOf(childrenSupplier.get())); }
public RepositoryBrowserByRecordThenTrack() { super(catalog -> catalog.findRecords()); } }
@Override @Nonnull public RecordFinder findChildren() { return artist.findRecords(); } }
@Override @Nonnull public TrackFinder findChildren() { return record.findTracks(); } }
@Override @Nonnull public TrackFinder findChildren() { return artist.findTracks(); } }
@Override public <T> Collection<T> asMany(Class<T> type) { return musicArtist.asMany(type); } }
/******************************************************************************************************************* * * Returns an empty playlist. * * @return an empty playlist * ******************************************************************************************************************/ @Nonnull public static <T> PlayList<T> empty() { return new PlayList<>(); }
@Override @Nonnull public PathAwareFinder findChildren() { return finderFactory.apply(this); }
@Nonnull private Path getAbsolutePath() { return fileSystem.getRootPath().resolve(path); }
@Override @Nonnull public MediaFolder createRootFolder (final @Nonnull MediaFolder parent) { return new VirtualMediaFolder(parent, PATH_ROOT, "Stopping Down", this::childrenFactory); }
@Override public <T> T as(Class<T> type, NotFoundBehaviour<T> notFoundBehaviour) { return musicArtist.as(type, notFoundBehaviour); }
@Nonnull private Collection<PathAwareEntity> childrenFactory (final @Nonnull MediaFolder parent) { return Arrays.asList(new VirtualMediaFolder(parent, PATH_DIARY, "Diary", diaryProvider::findPhotos), new VirtualMediaFolder(parent, PATH_THEMES, "Themes", themesProvider::findPhotos)); } }