IMusicImporter IMusicImporterFactory.GetFileService(IInternalMusicSession iconv, string dir, AlbumMaturity iDefaultMaturity)
            {
                DirectoryInfo DI = new DirectoryInfo(dir);
                if (!DI.Exists)
                    throw new InvalidDataException(string.Format("Need a valid path {0}", dir));

                return new LazyLoadingMusicImporter(_Session, ((iel) => GetFrom(iconv, DI, iel)), iDefaultMaturity);
            }
            IMusicImporter IMusicImporterFactory.GetXMLImporter(IEnumerable<string> FileNames, bool ImportAllMetaData, AlbumMaturity iDefaultMaturity)
            {

                return new LazyLoadingMusicImporter(_Session, ((iel) => FileNames.Select<string, IImporter>(fn =>
                    {
                        switch (FileServices.GetFileType(fn))
                        {
                            case MusicCollection.Infra.FileType.Mcc:
                                return new MccImporter(fn, ImportAllMetaData);

                            case MusicCollection.Infra.FileType.XML:
                                return new XMLImporter(fn, ImportAllMetaData);
                        }
                        return null;
                    }).Where(i => i != null)),

                    iDefaultMaturity);
            }
 public IMusicImporter GetMultiRarImporter(IEnumerable<string> FileName, AlbumMaturity iDefaultMaturity)
 {
     return new LazyLoadingMusicImporter(_Session, (iel) => CollectorFactory.CollectorRar(_Session, FileName).Select(col => col.Importer), iDefaultMaturity);
 }
 IMusicImporter IMusicImporterFactory.GetCDImporter(AlbumMaturity iDefaultMaturity, bool iOpenCDDoorOnComplete)
 {
     return new LazyLoadingMusicImporter(_Session, (iel) => FileInternalToolBox.GetAvailableCDDriver().Select(d => new CDImporter(_Session.MusicConverter, d, iOpenCDDoorOnComplete)), iDefaultMaturity);
 }
 IMusicImporter IMusicImporterFactory.GetRarImporter(string FileName, AlbumMaturity iDefaultMaturity)
 {
     return GetMultiRarImporter(FileName.SingleItemCollection<string>(), iDefaultMaturity);
 }
 IMusicImporter IMusicImporterFactory.GetITunesService(bool ImportBrokenTrack, string Directory, AlbumMaturity iDefaultMaturity)
 {
     return new LazyLoadingMusicImporter(_Session, (() => new IiTunesImporter(ImportBrokenTrack, Directory)), iDefaultMaturity);
 }
 private LazyLoadingMusicImporter(IInternalMusicSession Session, Func<IImporter> Con, AlbumMaturity iDefaultMaturity)
     : this(Session, ((iel) => Con().SingleItemCollection<IImporter>()), iDefaultMaturity)
 {
 }
 private LazyLoadingMusicImporter(IInternalMusicSession Session, Func<IEventListener, IEnumerable<IImporter>> Con, AlbumMaturity iDefaultMaturity)
 {
     _IInternalMusicSession = Session;
     _Transaction = Session.GetNewSessionContext(iDefaultMaturity);
     _Importers = null;
     _Const = Con;
 }
 ImportTransaction IInternalMusicSession.GetNewSessionContext(AlbumMaturity iDefaultMaturity)
 {
     return new ImportTransaction(this, iDefaultMaturity);
 }