OSDN Git Service

https://osdn.net/cvs/view/gokigen/MeMoMa/ から コピーしてくる。(+API27でビルドできるよう、少し調整。)
[gokigen/MeMoMa.git] / app / src / main / java / jp / sourceforge / gokigen / memoma / holders / MeMoMaDataFileHolder.java
1 package jp.sourceforge.gokigen.memoma.holders;
2
3 import java.io.File;
4 import java.io.FilenameFilter;
5
6 import android.content.Context;
7 import android.widget.ArrayAdapter;
8
9 import jp.sourceforge.gokigen.memoma.fileio.ExternalStorageFileUtility;
10
11 /**
12  *    めもまのデータファイル名を保持するクラス (ArrayAdapterを拡張)
13  * 
14  * @author MRSa
15  *
16  */
17 public class MeMoMaDataFileHolder extends ArrayAdapter<String> implements FilenameFilter
18 {
19         private ExternalStorageFileUtility fileUtility = null;
20         private String fileExtension = "";
21
22         /**
23          *    コンストラクタ
24          * 
25          */
26     public MeMoMaDataFileHolder(Context context, int textViewRscId, ExternalStorageFileUtility utility, String extension)
27     {
28         super(context, textViewRscId);
29         fileUtility = utility;
30         fileExtension = extension;
31     }
32     
33     /**
34      *    ファイル一覧を生成する。
35      * 
36      */
37     public int updateFileList(String currentFileName, String extendDirectory)
38     {
39         int outputIndex = -1;
40         
41         clear();
42         String directory = fileUtility.getGokigenDirectory();
43         if (extendDirectory != null)
44         {
45                 // ディレクトリが指定されていた時には、そのディレクトリを追加する
46                 directory = directory + extendDirectory;
47         }
48         String[] dirFileList = (new File(directory)).list(this);
49         try {
50                         for (int index = 0; index < dirFileList.length; index++) {
51                                 String fileName = dirFileList[index].substring(0, dirFileList[index].indexOf(fileExtension));
52                                 if (fileName.contentEquals(currentFileName) == true)  // ファイル先頭にない場合は追加する。
53                                 {
54                                         // 選択したインデックスを設定する。
55                                         outputIndex = index;
56                                 }
57                                 add(fileName);
58                                 //Log.v(Main.APP_IDENTIFIER, fileName + ", File : " + dirFileList[index]);
59                         }
60                 }
61                 catch (Exception e)
62                 {
63                                 e.printStackTrace();
64                 }
65         System.gc();
66         
67         //Log.v(Main.APP_IDENTIFIER, "::::::: "  + " (" + currentFileName + ") : " + outputIndex);
68         return (outputIndex);
69     }
70
71     /**
72      *    受け付けるファイル名のフィルタを応答する。
73      *    (指定された拡張子を持つなファイルだけ抽出する。)
74      * 
75      */
76     public boolean accept(File dir, String filename)
77     {
78         return (filename.endsWith(fileExtension) ? true : false);
79     }
80 }