package ar.rulosoft.mimanganu.servers; import android.content.Context; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import ar.rulosoft.mimanganu.R; import ar.rulosoft.mimanganu.componentes.Chapter; import ar.rulosoft.mimanganu.componentes.Manga; import ar.rulosoft.mimanganu.utils.Util; /** * Created by Raul on 14/05/2016. */ public class FromFolder extends ServerBase { private static final String FLOAT_PATTERN = "([.,0123456789]+)"; private static final String STRING_END_PATTERN = "[^\\d]\\."; private static final String VOLUME_REMOVE_PATTERN = "[v|V][o|O][l|L].{0,1}\\d+"; private static Comparator<String> NUMBERS_ASC = new Comparator<String>() { @Override public int compare(String c1, String c2) { try { String str1 = c1.replaceAll(VOLUME_REMOVE_PATTERN, " "); str1 = str1.replaceAll(STRING_END_PATTERN, " "); str1 = ServerBase.getFirstMatch(FLOAT_PATTERN, str1, ""); Float f1 = Float.parseFloat(str1); String str2 = c2.replaceAll(VOLUME_REMOVE_PATTERN, " "); str2 = str2.replaceAll(STRING_END_PATTERN, " "); str2 = ServerBase.getFirstMatch(FLOAT_PATTERN, str2, ""); float f2 = Float.parseFloat(str2); return (int) Math.floor(f1 - f2); } catch (Exception e) { return 0; } } }; FromFolder(Context context) { super(context); this.setFlag(R.drawable.noimage); this.setIcon(R.drawable.from_folder); this.setServerName("FromFolder"); setServerID(ServerBase.FROMFOLDER); } @Override public ArrayList<Manga> getMangas() throws Exception { return null; } @Override public ArrayList<Manga> search(String term) throws Exception { return null; } @Override public void loadChapters(Manga manga, boolean forceReload) throws Exception { manga.setImages(manga.getPath() + "cover.jpg"); ArrayList<String> folders = Util.getInstance().dirList(manga.getPath()); ArrayList<Chapter> chapters = new ArrayList<>(); folders.remove(0);//remove "." for(String folder:folders){ Chapter chapter = new Chapter(folder,manga.getPath() + folder + "/"); chapter.setDownloaded(true); chapters.add(chapter); } Collections.sort(chapters,Chapter.Comparators.NUMBERS_DESC); manga.setChapters(chapters); } @Override public void loadMangaInformation(Manga manga, boolean forceReload) throws Exception { loadChapters(manga,forceReload); } @Override public String getPagesNumber(Chapter chapter, int page) { return null; } @Override public String getImageFrom(Chapter chapter, int page) throws Exception { return chapter.getPath() + chapter.getExtra().split("\\|")[page + 1]; } @Override public void chapterInit(Chapter chapter) throws Exception { ArrayList<String> images = Util.getInstance().imageList(chapter.getPath()); chapter.setPages(images.size()); Collections.sort(images,NUMBERS_ASC); String save = ""; for (String image:images){ save = save + "|" + image; } chapter.setExtra(save); } @Override public boolean hasList() { return false; } }