void calculateNumbers(SessionBase session) { ImdbRoot imdbRoot = (ImdbRoot)session.Open(session.DatabaseNumberOf(typeof(ImdbRoot)), 2, 1, false); ActingPerson kevin = new Actor("Bacon, Kevin (I)", session); if (!imdbRoot.ActingByNameSet.TryGetKey(kevin, ref kevin)) Console.WriteLine("Couldn't find actor Kevin Bacon!"); else { unchasedMovie = kevin.InMovieAs.ToList<Movie>(); resultArray[bacon]++; // Kevin Bacon himself while (unchasedMovie.Count > 0) { bacon++; processsMovies(session); foreach (ActingPerson acting in unchasedPerson) { foreach (Movie movie in (IEnumerable<Movie>)acting.InMovieAs) if (chasedMovie.Contains(movie.ShortId) == false) unchasedMovie.Add(movie); } } } }
void ParseActors(SessionBase session, ImdbRoot imdbRoot) { using (FileStream stream = File.OpenRead(System.IO.Path.Combine(imdbTextFilesDir, "actors.list.gz"))) { using (GZipStream decompress = new GZipStream(stream, CompressionMode.Decompress)) { using (System.IO.StreamReader file = new System.IO.StreamReader(decompress)) { string line; int lineNumber = 0; while ((line = file.ReadLine()) != null) { // skip all the intro stuff lineNumber++; if (line.Length > 5 && line[0] == '-' && line[5] == '\t') break; } while ((line = file.ReadLine()) != null) { lineNumber++; string actorName = new string(line.TakeWhile(aChar => aChar != '\t').ToArray<char>()); // end of name if (line.Length > 10 && line[0] == '-' && line[1] == '-' && line[2] == '-' && line[3] == '-') break; // signals end of input line = line.Substring(actorName.Length + 1); Actor actor = new Actor(actorName, session); session.Persist(actor); imdbRoot.ActorSet.Add(actor); parseMovie(session, line, imdbRoot, actor); while ((line = file.ReadLine()) != null) { if (line.Length == 0) break; lineNumber++; parseMovie(session, line, imdbRoot, actor); } } } } } }