001package net.filebot.subtitle; 002 003import static java.util.Arrays.*; 004import static java.util.stream.Collectors.*; 005import static net.filebot.util.FileUtilities.*; 006 007import java.io.File; 008import java.util.List; 009 010import net.filebot.web.SubtitleDescriptor; 011 012public enum SubtitleNaming { 013 014 ORIGINAL { 015 016 @Override 017 public String format(File video, SubtitleDescriptor subtitle, String extension) { 018 return subtitle.toFile().getName(); 019 } 020 021 @Override 022 public String toString() { 023 return "Keep Original"; 024 } 025 }, 026 027 MATCH_VIDEO { 028 029 @Override 030 public String format(File video, SubtitleDescriptor subtitle, String extension) { 031 return SubtitleUtilities.formatSubtitle(getName(video), null, extension); 032 } 033 034 @Override 035 public String toString() { 036 return "Match Video"; 037 } 038 }, 039 040 MATCH_VIDEO_ADD_LANGUAGE_TAG { 041 042 @Override 043 public String format(File video, SubtitleDescriptor subtitle, String extension) { 044 return SubtitleUtilities.formatSubtitle(getName(video), subtitle.getLanguageName(), extension); 045 } 046 047 @Override 048 public String toString() { 049 return "Match Video and Language"; 050 } 051 }; 052 053 public abstract String format(File video, SubtitleDescriptor subtitle, String extension); 054 055 public static List<String> names() { 056 return stream(values()).map(Enum::name).collect(toList()); 057 } 058 059 public static SubtitleNaming forName(String name) { 060 for (SubtitleNaming naming : values()) { 061 if (naming.name().equalsIgnoreCase(name)) { 062 return naming; 063 } 064 } 065 throw new IllegalArgumentException(name + " not in " + names()); 066 } 067 068}