package jp.crwdev.app.container; import java.util.ArrayList; import java.util.List; import jp.crwdev.app.container.folder.FolderImageFileScanner; import jp.crwdev.app.container.pdf.PdfImageFileScanner; import jp.crwdev.app.container.rar.RarFileScanner; import jp.crwdev.app.container.zip.ZipFileScanner; import jp.crwdev.app.interfaces.IImageFileInfoList; import jp.crwdev.app.interfaces.IImageFileScanner; public class ImageFileScanner implements IImageFileScanner { private static ImageFileScanner mInstance = null; private static IImageFileScanner mCurrentScanner = null; private static List<IImageFileScanner> mScanners = null; public static IImageFileScanner getFileScanner(String filepath){ if(mInstance == null){ mInstance = new ImageFileScanner(); } if(ImageFileScanner.mScanners == null){ return null; } for(IImageFileScanner scanner : ImageFileScanner.mScanners){ if(scanner.open(filepath)){ mCurrentScanner = scanner; return scanner; } } return null; } protected ImageFileScanner(){ mScanners = new ArrayList<IImageFileScanner>(); mScanners.add(new FolderImageFileScanner()); mScanners.add(new ZipFileScanner()); mScanners.add(new RarFileScanner()); mScanners.add(new PdfImageFileScanner()); } @Override public void close() { // NOP } @Override public String getOpenFilePath(){ return mCurrentScanner.getOpenFilePath(); } @Override public IImageFileInfoList getImageFileInfoList() { // NOP return null; } @Override public boolean open(String path) { // NOP return false; } }