I hate to bump an old thread but i'm looking to achieve the same thing
here. Are there examples out there of making java views accessible to the
http api for phonegap style apps? I read through these posts and have had
no success getting it to work.
On Monday, March 17, 2014 at 7:49:31 AM UTC-7, Ami Kapadia wrote:
>
> I have solved this issue by this:
>
> Android Code: To create view.
>
> Database db = server.getDatabase(strDbName);
> db.open();
> listenPort = startCBLListener(DEFAULT_LISTEN_PORT, server);
>
> View v1 = db.getView(String.format("%s/%s",
> strDbName,
> "getrecords_typewise"));
>
> //Here strDbName = database name, "getrecords_typewise" = View name.
>
> v1.setMap(new Mapper()
> {
> @Override
> public void map(Map<String, Object> document, Emitter emitter)
> {
> Object docType = document.get("type");
> if (docType != null && document.get("is_active") != null &&
> document.get("is_active").equals(true))
> {
> emitter.emit(new Object[]{docType.toString()}, document);
> }
> }
> }, strVersion);
> db.registerView(v1);
>
> Phonegap Code:
> config.views(["getrecords_typewise", {
> startkey : ["contact"],
> endkey : ["contact"],
> descending : true
> }], function(err, view)
> {
>
> var len = view['rows'].length;
>
> var counter=0;
> var data=[];
> if(view['rows']!=null && view['rows'].length>0){
> for(j=0;j<view['rows'].length;j++)
> {
> data.push(view['rows'][j].value);
> }
> }
>
> });
>
>
> On Sat, Feb 15, 2014 at 6:05 AM, Traun Leyden <[email protected]
> <javascript:>> wrote:
>
>>
>>
>> On Thursday, February 13, 2014, Ami Gandhi <[email protected]
>> <javascript:>> wrote:
>>
>>>
>>>
>>> But calling view from Phonegap is very slow!
>>> Having this logs all the time.
>>> 02-14 00:45:05.685: D/dalvikvm(6462): WAIT_FOR_CONCURRENT_GC blocked 14ms
>>> 02-14 00:45:05.715: V/CBLDatabase(6462): call map for sequence=14
>>> 02-14 00:45:05.750: D/dalvikvm(6462): GC_CONCURRENT freed 492K, 27% free
>>> 13190K/17863K, paused 2ms+2ms, total 23ms
>>>
>>
>> Have you taken a look at the Android Monitor / DDMS to see where the
>> memory is being used?
>>
>>
>>>
>>> So, moving on native approach.
>>>
>>
>> Did you follow the instructions from Daniel Carr above? Did you comment
>> out the call to "CBLView.setCompiler(new CBLJavaScriptViewCompiler());"
>>
>> Another thing that could be going wrong, are you defining a view with the
>> exact same name for the javascript based view you defined? I would
>> recommend using a different name so they don't conflict.
>>
>>
>>
>>> But it is not working when I call view "amiview" from phonegap.
>>>
>>
>> Is there an error message?
>>
>>
>>
>>
>>> On Thursday, February 13, 2014 11:21:18 PM UTC+5:30, Traun Leyden wrote:
>>>>
>>>>
>>>> I think there should be examples of that in https://github.com/
>>>> couchbaselabs/TodoLite-PhoneGap.
>>>>
>>>> It should essentially be the same as making a view query via REST to
>>>> CouchDB, so you can also check the CouchDB docs.
>>>>
>>>> @Chris -- I guess the recommended js library for talking to Couchbase
>>>> Lite from javascript is "coax/hoax" right? Is there any others that
>>>> people
>>>> should be aware of that will make their lives easier?
>>>>
>>>> On Thursday, February 13, 2014, Ami Gandhi <[email protected]> wrote:
>>>>
>>>> Hi!
>>>> Can you tell me how to query CBLView from phonegap android?
>>>> Also, how to set startkey and endkey?
>>>>
>>>> On Monday, October 21, 2013 11:28:38 PM UTC+5:30, Traun Leyden wrote:
>>>>
>>>> Thanks for contributing this!
>>>>
>>>>
>>>> On Sun, Oct 20, 2013 at 5:16 PM, Daniel Carr <[email protected]>
>>>> wrote:
>>>>
>>>> Thanks for your replies.
>>>>
>>>> If anyone is keen to try this, it's pretty easy. I know very little
>>>> java and was able to work it out, and the performance is way better.
>>>>
>>>>
>>>> To get it to work, clone the git repo and import the modified cloned
>>>> repo as a phonegap plugin:
>>>>
>>>> git clone https://github.com/couchbaselabs/Couchbase-Lite-PhoneGap-
>>>> Plugin.git
>>>> cd project
>>>> phonegap local plugin add ../Couchbase-List-PhoneGap-Plugin
>>>>
>>>>
>>>> Every time you modify the plugin, you need to remove and add it again.
>>>>
>>>> phonegap local plugin remove com.couchbase.lite.phonegap
>>>> phonegap local plugin add ../Couchbase-List-PhoneGap-Plugin
>>>>
>>>>
>>>>
>>>> As a proof of concept, I edited /src/android/CBLite.java file in
>>>> Cordova-Lite-PhoneGap-Plugin.
>>>>
>>>> Add these to the imports:
>>>>
>>>> import com.couchbase.cblite.CBLDatabase;
>>>> import com.couchbase.cblite.CBLViewMapBlock;
>>>> import com.couchbase.cblite.CBLViewMapEmitBlock;
>>>>
>>>>
>>>> Remove the Javascript View thingy:
>>>>
>>>> - CBLView.setCompiler(new
>>>> CBLJavaScriptViewCompiler());
>>>>
>>>>
>>>>
>>>> Declare a view as described here: http://docs.couchbase.co
>>>> m/couchbase-lite/cbl-android/#working-with-views
>>>>
>>>>
>>>>
>>>> e.g.: (sorry about the dodgy tabulation)
>>>>
>>>>
>>>> @@ -41,12 +45,25 @@ public class CBLite extends CordovaPlugin {
>>>>
>>>> CBLURLStreamHandlerFactory.reg
>>>> isterSelfIgnoreError();
>>>>
>>>> - CBLView.setCompiler(new
>>>> CBLJavaScriptViewCompiler());
>>>> -
>>>> String filesDir = this.cordova.getActivity().
>>>> getFilesDir()
>>>> .getAbsolutePath();
>>>> CBLServer server = startCBLite(filesDir);
>>>> -
>>>> +
>>>> + CBLDatabase db = server.getDatabaseNamed("treat
>>>> ment");
>>>> + CBLView testView = db.getViewNamed("ivetTest/
>>>> test");
>>>> + testView.setMapReduceBlocks(new
>>>> CBLViewMapBlock() {
>>>> +
>>>> + @Override
>>>> + public void map(Map<String, Object> document,
>>>> CBLViewMapEmitBlock emitter) {
>>>> + String type = (String)document.get("Type");
>>>> + if( "TreatmentRecord".equals(
>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Couchbase Mobile" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/mobile-couchbase/bc488580-9fab-4f22-8a51-a0bc697e931f%40googlegroups.com
>>> .
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "Couchbase Mobile" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/mobile-couchbase/lAt7w3ntbKo/unsubscribe
>> .
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected] <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/mobile-couchbase/CACSSHCHskg2tQ2ce8TckCh0j0PFZ314aidUP6UfztFhn2%3DqwVg%40mail.gmail.com
>> .
>>
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
--
You received this message because you are subscribed to the Google Groups
"Couchbase Mobile" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/mobile-couchbase/48fb567e-5d85-4c7a-aaf0-fabbf926d3b0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.