2 package saccubus.filegetter;
5 import java.io.IOException;
6 import org.apache.commons.io.FilenameUtils;
7 import saccubus.ConvertStopFlag;
8 import saccubus.VideoSaveKind;
9 import saccubus.net.TextProgressListener;
12 *
\83_
\83E
\83\93\83\8d\81[
\83h
\8f\88\97\9d\82ð
\91S
\82
\95K
\97v
\82Æ
\82µ
\82È
\82¢
\8fê
\8d\87\82Ì
\83t
\83@
\83C
\83\8b\83C
\83\93\83X
\83^
\83\93\83X
\89»
\83N
\83\89\83X.
15 public class FileInstanciator {
17 private final InstanciationType<VideoSaveKind> videoType;
18 private final InstanciationType<Boolean> commentType;
19 private final InstanciationType<Boolean> tcommType;
20 private final String videoId;
21 private FileGetter videoFileGetter;
22 private FileGetter commentFileGetter;
23 private FileGetter tcommFileGetter;
25 protected void setVideoFileGetter(FileGetter getter) {
26 this.videoFileGetter = getter;
29 protected void setCommentFileGetter(FileGetter getter) {
30 this.commentFileGetter = getter;
33 protected void setTcommFileGetter(FileGetter getter) {
34 this.tcommFileGetter = getter;
37 public static FileInstanciator create(
38 ConvertStopFlag stopFlag,
39 InstanciationType<VideoSaveKind> videoType,
40 CommentInstanciationType commentType,
41 InstanciationType<Boolean> tcommType,
43 String tag, String time) throws
45 FileInstanciator getter;
46 if (videoType.getFileType() == VideoSaveKind.SAVE || commentType.getFileType().booleanValue() || tcommType.
47 getFileType().booleanValue()) {
48 getter = new WebFileInstanciator(stopFlag, videoType, commentType, tcommType, li, tag, time);
50 getter = new FileInstanciator(videoType, commentType, tcommType, tag);
55 protected FileInstanciator(
56 InstanciationType<VideoSaveKind> videoType,
57 InstanciationType<Boolean> commentType,
58 InstanciationType<Boolean> tcommType,
60 this.videoType = videoType;
61 this.commentType = commentType;
62 this.tcommType = tcommType;
63 this.videoId = videoId;
64 FileGetter getter = new FileGetter();
65 setVideoFileGetter(getter);
66 setCommentFileGetter(getter);
67 setTcommFileGetter(getter);
70 /** @return
\93®
\89æ
\82Ì
\83^
\83C
\83g
\83\8b.
\95ª
\82©
\82ç
\82È
\82¢
\8fê
\8d\87\82Ínull. */
71 public String getVideoTitle() {
72 String fileName = null;
73 if (!videoType.isAutoFileName() || videoType.getFileType() == VideoSaveKind.NICOBROWSER) {
74 //
\93®
\89æ
\83t
\83@
\83C
\83\8b\96¼
\82ð
\92¼
\90Ú
\8ew
\92è
\82µ
\82Ä
\82¢
\82é
\8fê
\8d\87\82Í
\81A
\82»
\82Ì
\83t
\83@
\83C
\83\8b\96¼
\82ð
\8aî
\82É
\83^
\83C
\83g
\83\8b\82ð
\8eæ
\93¾
\82·
\82é.
75 fileName = videoType.getInitFile().toString();
77 //
\8e©
\93®
\96½
\96¼
\82Ì
\8fê
\8d\87\82Í
\81A
\83f
\83B
\83\8c\83N
\83g
\83\8a\93à
\82É
\82 \82é
\83t
\83@
\83C
\83\8b\82©
\82ç
\83^
\83C
\83g
\83\8b\96¼
\82ð
\97Þ
\90\84\81B
78 String[] files = videoType.getInitFile().list();
80 for (String file : files) {
81 if (file.startsWith(getVideoIdWithBracket())) {
82 fileName = FilenameUtils.getBaseName(file);
89 if (fileName == null) {
92 String baseName = FilenameUtils.getBaseName(fileName);
93 int s = baseName.indexOf(getVideoIdWithBracket());
94 return baseName.substring(s + 1);
98 *
\93®
\89æ
\83t
\83@
\83C
\83\8b\82ð
\8eæ
\93¾
\82µ
\82Ü
\82·.
99 * @param listener
\90i
\92»
\92Ê
\92m
\82ð
\8eó
\82¯
\8eæ
\82é
\82½
\82ß
\82Ì
\83\8a\83X
\83i.
100 * @return
\93®
\89æ
\83t
\83@
\83C
\83\8b.
101 * @throws IOException
\93®
\89æ
\83t
\83@
\83C
\83\8b\82ª
\91¶
\8dÝ
\82µ
\82È
\82¢,
\8eæ
\93¾
\82É
\8e¸
\94s
\82µ
\82½.
103 public final File getVideoFile(TextProgressListener listener) {
104 File file = new VideoFileLocator(videoType.getFileType(), videoType.isAutoFileName(), videoType.getInitFile(),
105 getVideoIdWithBracket(), getVideoTitle(), ".flv").getFile();
106 file = videoFileGetter.get(file, listener);
111 *
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b\82ð
\8eæ
\93¾
\82µ
\82Ü
\82·.
112 * @param listener
\90i
\92»
\92Ê
\92m
\82ð
\8eó
\82¯
\8eæ
\82é
\82½
\82ß
\82Ì
\83\8a\83X
\83i.
113 * @return
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b.
114 * @throws IOException
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b\82ª
\91¶
\8dÝ
\82µ
\82È
\82¢,
\8eæ
\93¾
\82É
\8e¸
\94s
\82µ
\82½.
116 public final File getCommentFile(TextProgressListener listener) {
117 File file = new FileLocator(commentType.isAutoFileName(), commentType.getInitFile(), getVideoIdWithBracket(),
118 getVideoTitle(), ".xml").getFile();
119 file = commentFileGetter.get(file, listener);
124 *
\93\8a\8de
\8eÒ
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b\82ð
\8eæ
\93¾
\82µ
\82Ü
\82·.
125 * @param listener
\90i
\92»
\92Ê
\92m
\82ð
\8eó
\82¯
\8eæ
\82é
\82½
\82ß
\82Ì
\83\8a\83X
\83i.
126 * @return
\93\8a\8de
\8eÒ
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b.
127 * @throws IOException
\83R
\83\81\83\93\83g
\83t
\83@
\83C
\83\8b\82ª
\91¶
\8dÝ
\82µ
\82È
\82¢,
\8eæ
\93¾
\82É
\8e¸
\94s
\82µ
\82½.
129 public final File getTcommFile(TextProgressListener listener) {
130 File file = new FileLocator(tcommType.isAutoFileName(), tcommType.getInitFile(), getVideoIdWithBracket(),
131 getVideoTitle(), ".xml").getFile();
132 file = tcommFileGetter.get(file, listener);
136 private String getVideoIdWithBracket() {
137 return "[" + videoId + "]";
140 public static class InstanciationType<T> {
142 private final T fileType;
143 private final boolean autoFileName;
144 private final File initFile;
147 *
\83t
\83@
\83C
\83\8b\82ð
\83C
\83\93\83X
\83^
\83\93\83X
\89»
\82·
\82é
\95û
\96@
\82ð
\8ew
\92è
\82·
\82é
\83N
\83\89\83X.
148 * @param fileType
\83t
\83@
\83C
\83\8b\82Ì
\8eí
\97Þ
\82ð
\8ew
\92è
\82·
\82é.
149 * @param autoFileName
\83t
\83@
\83C
\83\8b\96¼
\82ð
\8e©
\93®
\96½
\96¼
\82·
\82é
\82È
\82çtrue,
\92¼
\90Ú
\8ew
\92è
\82·
\82é
\82È
\82çfalse.
150 * @param initFileName
\83t
\83@
\83C
\83\8b\8fî
\95ñ. autoFileName
\82ªtrue
\82Å
\82 \82ê
\82Î
\95Û
\91¶
\82·
\82é
\83f
\83B
\83\8c\83N
\83g
\83\8a\96¼
\82ð, false
\82È
\82ç
\95Û
\91¶
\82·
\82é
\83t
\83@
\83C
\83\8b\96¼
\82ð
\8ew
\92è
\82·
\82é.
152 public InstanciationType(T fileType, boolean autoFileName, File initFileName) {
153 this.fileType = fileType;
154 this.autoFileName = autoFileName;
155 this.initFile = initFileName;
158 public T getFileType() {
162 public File getInitFile() {
166 public boolean isAutoFileName() {
171 public static class CommentInstanciationType extends InstanciationType<Boolean> {
173 private final boolean autoCommentNum;
174 private final String backComment;
176 public CommentInstanciationType(Boolean fileType, boolean autoFileName, File initFileName,
177 boolean autoCommentNum, String backComment) {
178 super(fileType, autoFileName, initFileName);
179 this.autoCommentNum = autoCommentNum;
180 this.backComment = backComment;
183 public boolean isAutoCommentNum() {
184 return autoCommentNum;
187 public String getBackComment() {