Hi All,

I would to know about how we can do the sorting technique using one view 
and query. Right now i'm having 3 types sorting technique(*LastModifiedDate*
,*DueDate,ResponsibleEmailID*)  i do not like write three view and queries. 
I want to finish in one view and query itself all three sorting techniques.
I will share here how is did till the time,

1) This for sort by lastmodified date

//create view for get all ticket document per project
com.couchbase.lite.View viewTicketsPerProjectPagination = 
database.getView(String.format("%s/%s", D_DOCNAME, 
TICKETS_PER_PROJECT_PAGINATION));
viewTicketsPerProjectPagination.setMap(new Mapper() {
    @Override
    public void map(Map<String, Object> document, Emitter emitter) {

        Object type = document.get(TYPE);
        String archivedState;
        try {
            archivedState = (String) document.get(ARCHIVED) != null ? ARCHIVED 
: UNARCHIVED;
        }catch (Exception ex){
            archivedState = UNARCHIVED;
        }
        try {
            if (type != null && DOCTYPE_TICKET.equals(type)) {
                emitter.emit(new 
Object[]{document.get(PROJECT),archivedState,((HashMap<String, String>) 
document.get(DATES)).get(LASTMODIFIEDDATE)}, null);
            }
        } catch (NullPointerException e) {
        }
    }
}, "5.5");


2)This is for dueDate


//create view for get Tickets for selected map document in project  by using 
status As Per DueDate
com.couchbase.lite.View viewTicketsPerMapPaginationByStatusAsPerDueDate = 
database.getView(String.format("%s/%s", D_DOCNAME, 
TICKET_PER_MAP_BY_STATUS_AS_PER_DUE_DATE));
viewTicketsPerMapPaginationByStatusAsPerDueDate.setMap(new Mapper() {
    @Override
    public void map(Map<String, Object> document, Emitter emitter) {

        Object type = document.get(TYPE);
        String archivedState;
        try {
            archivedState = (String) document.get(ARCHIVED) != null ? ARCHIVED 
: UNARCHIVED;
        }catch (Exception ex){
            archivedState = UNARCHIVED;
        }

        try {
            if (type != null && DOCTYPE_TICKET.equals(type)) {
                emitter.emit(new Object[]{document.get(PROJECT), 
document.get(MAP), ((HashMap<String, String>) document.get(STATE)).get(STATE), 
archivedState,((HashMap<String, String>) document.get(PLAN)).get(DUEDATE)},
                        null);
            }
        } catch (NullPointerException e) {
        }
    }
}, "1.4");


3) This is for sort by responsible emailId


//create view for get all ticket document per project As Per Reponsible
com.couchbase.lite.View viewTicketsPerProjectPaginationAsPerReponsible = 
database.getView(String.format("%s/%s", D_DOCNAME, 
TICKETS_PER_PROJECT_PAGINATION_AS_PER_RESPONSIBLE));
viewTicketsPerProjectPaginationAsPerReponsible.setMap(new Mapper() {
    @Override
    public void map(Map<String, Object> document, Emitter emitter) {

        Object type = document.get(TYPE);
        String archivedState;
        Object sortObject;
        try {
            archivedState = (String) document.get(ARCHIVED) != null ? ARCHIVED 
: UNARCHIVED;
        }catch (Exception ex){
            archivedState = UNARCHIVED;
        }
        try{
            sortObject = ((HashMap<Object, HashMap<Object, String>>) 
document.get(PARTICIPANTS)).
                    get(RESPONSIBLE).get(EMAIL);
        }catch (Exception ex){
            sortObject = null;
        }

        try {
            if (type != null && DOCTYPE_TICKET.equals(type)) {
                emitter.emit(new Object[]{document.get(PROJECT), 
archivedState,sortObject},
                        null);
            }
        } catch (NullPointerException e) {
        }
    }
}, "2.9");


But those are causing the performance because of lot other thinks are there to 
write view and query, so that inmy project contains more view and query i would 
to reduce those many thinks.


How we can reduce those many views ? is there any api's to write direct sorting 
thinks supported by CBL API's 


Please let me know if you need any other information i can provide you  


Thank's

prasanna




-- 
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/0708f3f7-372e-4a25-a0c4-d772d17b6513%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to