[jsword-devel] feather request: book downloading and index generating api
David
lzj369 at gmail.com
Fri Dec 8 22:01:26 MST 2006
I like your above code. It is just what I need.
On 12/8/06, P. R. B. <dysbiote at yahoo.com> wrote:
>
> Hi gang,
>
> I ran into the same problem with RCP. I ultimately turned the core JSword
> libraries (common and jsword -- the parts I was after) into an RCP plug-in
> that could accommodate the RCP Job class and use plug-ins to extend the
> installer, filter, and driver (RCP needs to manage class loaders itself, so
> the class utilities and property files were removed). The key to changing
> the job code, for me, was to replace JSword-Job calls with IProgressMonitor
> calls, and making all calls run in the caller's thread. The IProgressMonitor
> interface serves essentially the same purpose and the JSword Job class, so
> the change was fairly straight-forward.
>
> I have an example of the changes that I made at the bottom of this e-mail.
>
> Off-topic: I hit project burn-out with this endeavor a few weeks back and
> the fate of the code is undecided (I take project burn-out pretty hard). The
> JSword plug-in is functional and the RCP application is 100% working. If
> anyone wants to play with it or is interested in helping me resurrect the
> thing back to life, please let me know.
>
> Thanks,
> -Phillip
>
> --
>
> Example changes to convert JSword Job code to use IProgressMonitor (for
> non-RCP'rs, IProgressMonitor and IStatus are part of the Eclipse/RCP core
> API):
>
> Installer interface:
> IStatus install(IProgressMonitor monitor, Book book);
>
> HttpSwordInstaller class:
> public IStatus install(IProgressMonitor monitor, Book book){
> // Is the book already installed? Then nothing to do.
> if (Books.installed().getBook(book.getName()) != null)
> {
> monitor.beginTask(Msg.INSTALLING.toString(book.getName()), 1);
> monitor.worked(1);
> monitor.done();
> return Status.OK_STATUS;
> }
>
> final SwordBookMetaData sbmd = (SwordBookMetaData)
> book.getBookMetaData();
> try
> {
> // the task has as many steps to perform as there are parts to
> the download
> monitor.beginTask(Msg.INSTALLING.toString(book.getName()),
> (getSize(book) / 4096) + 1);
> monitor.subTask(Msg.JOB_INIT.toString());
>
> URL temp = NetUtil.getTemporaryURL("swd", ZIP_SUFFIX);
> //$NON-NLS-1$
>
> // download the book. Each chunk downloaded contributes to the
> monitor's work.
> download(monitor, directory + '/' + PACKAGE_DIR,
> sbmd.getInitials() + ZIP_SUFFIX, temp);
>
> // Once the unzipping is started, we need to continue
> File dldir = SwordBookPath.getDownloadDir();
> if (!monitor.isCanceled())
> {
> monitor.subTask(Msg.JOB_CONFIG.toString());
> IOUtil.unpackZip(NetUtil.getAsFile(temp), dldir);
> SwordBookDriver.registerNewBook(sbmd, dldir);
> }
>
> }
> catch (Exception ex)
> {
> Reporter.informUser(this, ex);
> return new Status(IStatus.ERROR, JswordActivator.PLUGIN_ID, 0,
> Msg.UNKNOWN_ERROR.toString(), ex);
> }
> finally
> {
> monitor.done();
> }
>
> return Status.OK_STATUS;
>
>
> ----- Original Message ----
> From: David <lzj369 at gmail.com>
> To: J-Sword Developers Mailing List <jsword-devel at crosswire.org>
> Sent: Friday, December 8, 2006 10:26:01 AM
> Subject: Re: [jsword-devel] feather request: book downloading and index
> generating api
>
> Hi, DM,
> If you just want to migrate to SWT, I personally think it does not worth
> it. SWT just another set of API, like SWING. However, if you want to
> migrate to NETBEAN RCP or Eclipse RCP, I will applause your effort. (The
> application size will be increased by 6-9MB). For Eclipse RCP, the work is
> just create veiws and call jword api.
>
> The work I am doing is based on Eclipse RCP. Jsword is a base part of it.
> The plan is to build a p2p system that can enable blog , forum sharing, of
> course file sharing( JXTA.) next year. It will be a set of plugins.
>
> Right now, I am rewriting the system to look like exactly what is on web
> sword interface. After all, people are familar with web interface. I ,
> however did a websword plugin with tomcat embedded(yes, a server on user's
> desktop). It is cool. However, due to other considerations, I put it on
> hold.
>
> Since you are interest, I will put the source code to Google code next
> week. I tried sourceforge, still does not get approved. An alternative is
> I put the code temporily into jwsord SVN, so you can look at it. Again, next
> week. :)
>
>
>
> On 12/8/06, DM Smith <dmsmith555 at yahoo.com> wrote:
> >
> > We hope to migrate the UI to SWT. So I am very interested in your RCP
> > work. Is there a place where I can see what you have done. If possible,
> > I'd like to minimize your pain of re-integrating the JSword as it
> > changes.
> >
> > David wrote:
> > > Eclipse RCP platform has its own threading api. Use can choose the job
> > > run on backgroud or foreground. I maybe need to double check why the
> > > process failed. (I believe it is because of threading)
> > > For book installation, I added two mirror methods to do downloading
> > > and copying. It works fine. The only issue is the api and package
> > > keep changing and I have to compare every time there is a new release
> > > and merge the code.
> > >
> > > For indexing, I have not made it to work correctly. I will study the
> > > code next week. The basic idea is kick off a background job and call
> > > jsword api to generate index. No thread for indexing itself is needed.
> >
> > >
> > > For Web sword, the book installation is on server side. Never mind.
> > > It will not be used for end users. I put it on hold because I have
> > > several othe plugins need to be done soon.
> > >
> > > Zhaojun
> > >
> > > On 12/8/06, *DM Smith* <dmsmith555 at yahoo.com
> > > <mailto:dmsmith555 at yahoo.com>> wrote:
> > >
> > > David wrote:
> > > > Hi, DM and fellow developers,
> > > >
> > > > I am developing web sword(90% done, pure j2ee implementation,
> > will
> > > > help web hosting) and sword on eclipse RCP. Issues were raised
> > up
> > > > when I try to integrate install book and generate indices. The
> > code
> > > > now has job api build in and also has the reporter to
> > > communicate with
> > > > user UI.
> > > >
> > > > In order to accelerate the acceptance of jword library, the api
> > for
> > > > downloading books and api for index processing need to seperated
> > > from
> > > > Job api.
> > > I'm not sure I understand the problem.
> > >
> > > The index api (org.crosswire.jsword.index) is independent of the
> > > Job and
> > > Reporter apis. The Lucene implementation is not.
> > > Likewise for the install api ( org.crosswire.jsword.index ) and
> > the
> > > sword
> > > implementation.
> > >
> > > Both the Job api and the Reporter api are listener based. If there
> > > is no
> > > listener for Job events or Reporter events, then those are not
> > heard.
> > > Any listener of your choosing can be provided or not provided. It
> > > is up
> > > to you.
> > >
> > > The purpose of the Job and Reporter apis is to provide
> > asynchronous
> > > communication of a potentially background task thread. For
> > > example, you
> > > will notice in BibleDesktop that you can download and/or index
> > > more than
> > > one Book at a time. Each download and index is on its own thread
> > > and it
> > > communicates back to BibleDesktop asynchronously of its progress
> > > or any
> > > problems that are encountered.
> > >
> > > In a web environment asynchronous communication of long-lived
> > > threads on
> > > the server may prove to be a challenge, but it should be possible.
> > >
> > >
> > > _______________________________________________
> > > jsword-devel mailing list
> > > jsword-devel at crosswire.org <mailto:jsword-devel at crosswire.org>
> > > http://www.crosswire.org/mailman/listinfo/jsword-devel
> > >
> > >
> > >
> > ------------------------------------------------------------------------
> > >
> > > _______________________________________________
> > > jsword-devel mailing list
> > > jsword-devel at crosswire.org
> > > http://www.crosswire.org/mailman/listinfo/jsword-devel
> > >
> >
> >
> > _______________________________________________
> > jsword-devel mailing list
> > jsword-devel at crosswire.org
> > http://www.crosswire.org/mailman/listinfo/jsword-devel
> >
>
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel
>
>
> ------------------------------
> Check out the all-new Yahoo! Mail beta<http://us.rd.yahoo.com/evt=43257/*http://advision.webevents.yahoo.com/mailbeta>- Fire up a more powerful email and get things done faster.
>
> _______________________________________________
> jsword-devel mailing list
> jsword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/jsword-devel
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.crosswire.org/pipermail/jsword-devel/attachments/20061209/f3347d22/attachment.html
More information about the jsword-devel
mailing list