package com.easyview.ebook.reader.engine.core.adobe; import com.easyview.ebook.jni.Adobe; import com.easyview.ebook.jni.SearchResult; import com.easyview.ebook.reader.engine.core.DecAdapter; import com.easyview.ebook.reader.engine.core.EngineCode; import com.easyview.ebook.reader.engine.core.EngineCode.EngineMsgCode; import com.easyview.ebook.reader.engine.util.Logger; public class AdobeAdapter extends DecAdapter { private static final String TAG = "AdobeAdapter"; private static Adobe mAdobe; private static AdobeAdapter mAdobeAdapter; private static EngineCode mEngineCode; protected static AdobeAdapter getInstance() { if (null == mAdobeAdapter) { mAdobeAdapter = new AdobeAdapter(); mAdobe = new Adobe(); mEngineCode = EngineCode.getInstance(); } return mAdobeAdapter; } private AdobeAdapter() { } protected int openFile(String url) { Logger.vLog(TAG, "openFile enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.openFile(url); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } return code; } protected void cancelProcessing() { Logger.vLog(TAG, "cancelProcessing enter>>>"); if (isStop()) { return; } mAdobe.cancelProcessing(); Logger.vLog(TAG, "cancelProcessing exit."); } protected void getCurrentHighlightedPage(int[] pagebuf) { Logger.vLog(TAG, "getCurrentHighlightedPage>>>"); if (isStop()) { return; } mAdobe.getCurrentHighlightedPage(pagebuf); Logger.vLog(TAG, "getCurrentHighlightedPage exit."); } protected int goToChapterIndex(int chapterIndex) { Logger.vLog(TAG, "goToChapterIndex enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.goToChapterIndex(chapterIndex); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "goToChapterIndex exit."); return code; } protected double getChapterPagePositionFromIndex(int idx) { Logger.vLog(TAG, "getChapterPagePositionFromIndex enter>>>"); if (isStop()) { return -1; } double value = mAdobe.getChapterPagePositionFromIndex(idx); Logger.vLog(TAG, "getChapterPagePositionFromIndex exit."); return value; } protected boolean findNextText(String text) { Logger.vLog(TAG, "findNextText enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.findNextText(text); Logger.vLog(TAG, "findNextText exit."); return value; } protected boolean findPreviousText(String text) { Logger.vLog(TAG, "findPreviousText enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.findPreviousText(text); Logger.vLog(TAG, "findPreviousText exit."); return value; } protected void resetFindText() { Logger.vLog(TAG, "resetFindText enter>>>"); if (isStop()) { return; } mAdobe.resetFindText(); Logger.vLog(TAG, "resetFindText exit."); } protected void setViewPortSize(int w, int h) { Logger.vLog(TAG, "setViewportSize enter>>>"); if (isStop()) { return; } mAdobe.setViewportSize(w, h); Logger.vLog(TAG, "setViewportSize exit."); } protected int closeFile() { Logger.vLog(TAG, "closeFile enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.closeFile(); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "closeFile exit."); return code; } protected int getNumPages() { Logger.vLog(TAG, "getNumPages enter>>>"); if (isStop()) { return 1; } int value = mAdobe.getNumPages(); Logger.vLog(TAG, "getNumPages exit."); return value; } protected int getPage(int pageno, int[] mypage_buf) { Logger.vLog(TAG, "getPage enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.getPage(pageno, mypage_buf); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "getPage exit."); return code; } protected boolean getNextPage() { Logger.vLog(TAG, "getNextPage enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.getNextPage(); Logger.vLog(TAG, "getNextPage exit."); return value; } protected boolean getPreviousPage() { Logger.vLog(TAG, "getPreviousPage enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.getPreviousPage(); Logger.vLog(TAG, "getPreviousPage exit."); return value; } protected int getCurrentPage(int[] pagebuf) { Logger.vLog(TAG, "getCurrentPage enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.getCurrentPage(pagebuf); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "getCurrentPage exit. code = " + code); return code; } protected String getMetaData(String metaQuery) { Logger.vLog(TAG, "getMetaData enter>>>"); if (isStop()) { return null; } String value = mAdobe.getMetaData(metaQuery); Logger.vLog(TAG, "getMetaData exit."); return value; } protected int getNumChapters() { Logger.vLog(TAG, "getNumChapters enter>>>"); if (isStop()) { return 0; } int value = mAdobe.getNumChapters(); Logger.vLog(TAG, "getNumChapters exit."); return value; } protected String[] getChapterList() { Logger.vLog(TAG, "getChapterList enter>>>"); if (isStop()) { return null; } String[] value = mAdobe.getChapterList(); Logger.vLog(TAG, "getChapterList exit."); return value; } protected int goToChapter(String chapter) { Logger.vLog(TAG, "goToChapter enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.goToChapter(chapter); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "goToChapter exit."); return code; } protected double getChapterPagePosition(String title) { Logger.vLog(TAG, "getChapterPagePosition enter>>>"); if (isStop()) { return 0; } double value = mAdobe.getChapterPagePosition(title); Logger.vLog(TAG, "getChapterPagePosition exit."); return value; } protected String getCurrentLocation() { Logger.vLog(TAG, "getCurrentLocation enter>>>"); if (isStop()) { return null; } String value = mAdobe.getCurrentLocation(); Logger.vLog(TAG, "getCurrentLocation exit."); return value; } protected int goToLocation(String bookmark) { long cur = System.currentTimeMillis(); Logger.vLog(TAG, "goToLocation enter>>>"); if (isStop()) { return 0; } int code = mAdobe.goToLocation(bookmark); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "goToLocation exit. cost time : " + (System.currentTimeMillis() - cur)); return code; } protected int goToPosition(double position) { long cur = System.currentTimeMillis(); Logger.vLog(TAG, "goToPosition enter>>>"); if (isStop()) { return 0; } int code = mAdobe.goToPosition(position); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "goToPosition exit. cost time: " + (System.currentTimeMillis() - cur)); return code; } protected void setFontSize(int size) { Logger.vLog(TAG, "setFontSize enter>>>"); if (isStop()) { return; } mAdobe.setFontSize(size); Logger.vLog(TAG, "setFontSize exit."); } protected double getPagePosition(String bookmark) { Logger.vLog(TAG, "getPagePosition enter>>>"); if (isStop()) { return 0; } double value = mAdobe.getPagePosition(bookmark); Logger.vLog(TAG, "getPagePosition exit value = " + value); return value; } protected int setPassHash(String username, String cc) { Logger.vLog(TAG, "setPassHash enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.setPassHash(username, cc); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "setPassHash exit."); return code; } protected int setHash(String hash) { Logger.vLog(TAG, "setHash enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.setHash(hash); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "setHash exit."); return code; } protected String getHash() { Logger.vLog(TAG, "setHash enter>>>"); if (isStop()) { return null; } String value = mAdobe.getHash(); Logger.vLog(TAG, "setHash exit."); return value; } // TODO need to delete protected int setScreenlandscape(boolean scape) { Logger.vLog(TAG, "setScreenlandscape enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.setScreenlandscape(scape); // if (!mEngineCode.noError(code)) { // mEngineCode.setLastCode(code); // setStop(true); // } else { // mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); // } Logger.vLog(TAG, "setScreenlandscape exit."); return code; } protected void setBackground(boolean background) { Logger.vLog(TAG, "setBackground enter>>>"); if (isStop()) { return; } mAdobe.setBackground(background); Logger.vLog(TAG, "setBackground exit."); } // (x,y):point // z:color value(0~5):light grey,yellow light, // blue dark ,grey tangerine ,green protected String setHighlightbyxy(double x1, double y1, double x2, double y2, int z) { Logger.vLog(TAG, "setHighlightbyxy enter>>>"); if (isStop()) { return null; } String value = mAdobe.setHighlightbyxy(x1, y1, x2, y2, z); Logger.vLog(TAG, "setHighlightbyxy exit."); return value; } protected boolean setHighlightbyloc(String start, String end, int z) { Logger.vLog(TAG, "setHighlightbyloc enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.setHighlightbyloc(start, end, z); Logger.vLog(TAG, "setHighlightbyloc exit."); return value; } protected boolean delHighlight(String start, String end, int z) { Logger.vLog(TAG, "delHighlight enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.delHighlight(start, end, z); Logger.vLog(TAG, "delHighlight exit."); return value; } protected void delAllHighlight() { Logger.vLog(TAG, "delAllHighlight enter>>>"); if (isStop()) { return; } mAdobe.delAllHighlight(); Logger.vLog(TAG, "delAllHighlight exit."); } protected boolean goText(String netext) { Logger.vLog(TAG, "goText enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.goText(netext); Logger.vLog(TAG, "goText exit."); return value; } protected boolean hasNextText(String netext) { Logger.vLog(TAG, "hasNextText enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.hasNextText(netext); Logger.vLog(TAG, "hasNextText exit."); return value; } protected boolean hasPreviousText(String pretext) { Logger.vLog(TAG, "hasPreviousText enter>>>"); if (isStop()) { return false; } boolean value = mAdobe.hasPreviousText(pretext); Logger.vLog(TAG, "hasPreviousText exit."); return value; } protected String findNextMark() { Logger.vLog(TAG, "findNextMark enter>>>"); if (isStop()) { return null; } String value = mAdobe.findPreviousMark(); Logger.vLog(TAG, "findNextMark exit."); return value; } protected String findPreviousMark() { Logger.vLog(TAG, "findPreviousMark enter>>>"); if (isStop()) { return null; } String value = mAdobe.findNextMark(); Logger.vLog(TAG, "findPreviousMark exit."); return value; } protected int compare(String bookmark1, String bookmark2) { Logger.vLog(TAG, "compare enter>>>"); if (isStop()) { return -1; } int value = mAdobe.compare(bookmark1, bookmark2); Logger.vLog(TAG, "compare exit."); return value; } protected String hitTest(double x1, double y1) { Logger.vLog(TAG, "hitTest enter>>>"); if (isStop()) { return null; } String value = mAdobe.hitTest(x1, y1); Logger.vLog(TAG, "hitTest exit."); return value; } protected SearchResult[] getSearchResult(String text, int max, int cont) { Logger.vLog(TAG, "getSearchResult enter>>> text = " + text + " max = " + max + " cont = " + cont); if (isStop()) { return null; } SearchResult[] value = mAdobe.getSearchResult(text, max, cont); Logger.vLog(TAG, "getSearchResult exit. value = " + value); return value; } protected int getCurrentChapterIndex() { Logger.vLog(TAG, "getCurrentChapterIndex enter>>>"); if (isStop()) { return 0; } int index = mAdobe.getCurrentChapterIndex(); Logger.vLog(TAG, "getCurrentChapterIndex exit."); return index; } protected String getSummaryByLocation(String bookmark) { Logger.vLog(TAG, "getSummaryByLocation enter>>>"); if (isStop()) { return null; } String value = mAdobe.getSummaryByLocation(bookmark); Logger.vLog(TAG, "getSummaryByLocation exit."); return value; } protected int getLinkCount() { Logger.vLog(TAG, "getLinkCount enter>>>"); if (isStop()) { return 0; } int value = mAdobe.getLinkCount(); Logger.vLog(TAG, "getLinkCount exit."); return value; } protected void highlightLink(int index) { Logger.vLog(TAG, "highlightLink enter>>>"); if (isStop()) { return; } mAdobe.highlightLink(index); Logger.vLog(TAG, "highlightLink exit."); } protected void selectLink(int index) { Logger.vLog(TAG, "selectLink enter>>>"); if (isStop()) { return; } mAdobe.selectLink(index); Logger.vLog(TAG, "selectLink exit."); } protected int setPDFPassword(String pwd) { Logger.vLog(TAG, "setPDFPassword enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.setPDFPassword(pwd); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { // mAdobeError.setLastError(EngineErrorCode.NO_ERROR); } Logger.vLog(TAG, "setPDFPassword exit. code = " + code); return code; } protected int linkTest(double x, double y, String[] urlStrings) { Logger.vLog(TAG, "linkTest enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.linkTest(x, y, urlStrings); // if (!mEngineCode.noError(code)) { // mEngineCode.setLastCode(code); // setStop(true); // } else { // mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); // } Logger.vLog(TAG, "linkTest exit."); return code; } protected int setUserActivation(String username, String password) { Logger.vLog(TAG, "setUserActivation enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.setUserActivation(username, password); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "setUserActivation exit."); return code; } protected int setDeviceDeactivation() { Logger.vLog(TAG, "setDeviceDeactivation enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.setDeviceDeactivation(); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "setDeviceDeactivation exit."); return code; } // TODO need to be checked of doc protected int run(String[] parameters) { Logger.vLog(TAG, "run enter>>>"); if (isStop()) { return Integer.MAX_VALUE; } int code = mAdobe.run(parameters); if (!mEngineCode.noError(code)) { mEngineCode.setLastCode(code); setStop(true); } else { mEngineCode.setLastCode(EngineMsgCode.NO_ERROR); } Logger.vLog(TAG, "run exit."); return code; } protected void free() { if (mAdobeAdapter != null) { mAdobeAdapter = null; } if (mAdobe != null) { mAdobe = null; } if (mEngineCode != null) { mEngineCode.free(); mEngineCode = null; } Logger.vLog(TAG, "AdobeAdapter free adapter: " + mAdobeAdapter + " adobe: " + mAdobe + " errorCode: " + mEngineCode); } }