Example usage for com.mongodb DBCursor size

List of usage examples for com.mongodb DBCursor size

Introduction

In this page you can find the example usage for com.mongodb DBCursor size.

Prototype

public int size() 

Source Link

Document

Counts the number of objects matching the query this does take limit/skip into consideration

Usage

From source file:com.ikanow.infinit.e.harvest.enrichment.legacy.alchemyapi.AlchemyEntityGeoCleanser.java

License:Open Source License

public boolean cleanseGeoInDocu(DocumentPojo doc) {

    boolean bChangedAnything = false;

    Map<String, Candidate> dubiousLocations = new HashMap<String, Candidate>();

    Set<String> otherRegions = new HashSet<String>();
    Set<String> otherCountries = new HashSet<String>();
    Set<String> otherCountriesOrRegionsReferenced = new HashSet<String>();

    //Debug//w  w  w.j a v a 2s  . co m
    if (_nDebugLevel >= 2) {
        System.out.println(
                "+++++++ Doc: " + doc.getTitle() + " / " + doc.getId() + " / " + doc.getEntities().size());
    }

    // 1] First off, let's find anything location-based and also determine if it's bad or not 

    if (null != doc.getEntities())
        for (EntityPojo ent : doc.getEntities()) {

            boolean bStrongCandidate = false;

            // People: decompose names
            if (EntityPojo.Dimension.Where == ent.getDimension()) {

                // So locations get disambiguated to one of:
                // "<city-etc>, <region-or-country>", or "<region-or-country>"
                // though can also just be left as they are.

                String sActualName = ent.getActual_name().toLowerCase();
                if (!ent.getDisambiguatedName().toLowerCase().equals(sActualName)) {
                    // It's been disambiguated

                    //Debug
                    if (_nDebugLevel >= 3) {
                        System.out.println("disambiguous candidate: " + ent.getDisambiguatedName() + " VS "
                                + ent.getActual_name() + " ("
                                + ((null != ent.getSemanticLinks()) ? ent.getSemanticLinks().size() : 0) + ")");
                    }

                    // OK next step, is it a disambiguation to a US town?
                    String splitMe[] = ent.getDisambiguatedName().split(", ");
                    if (2 == splitMe.length) {

                        String stateOrCountry = splitMe[1];
                        Matcher m = _statesRegex.matcher(stateOrCountry);
                        if (m.find()) { // This is a US disambiguation - high risk case
                            // Short cut if state is already directly mentioned?
                            stateOrCountry = stateOrCountry.toLowerCase();

                            if (!otherRegions.contains(stateOrCountry)) { // See list below - no need to go any further

                                // OK next step - is it a possible ambiguity:
                                ArrayList<BasicDBObject> x = new ArrayList<BasicDBObject>();
                                BasicDBObject inner0_0 = new BasicDBObject(MongoDbManager.not_,
                                        Pattern.compile("US"));
                                BasicDBObject inner1_0 = new BasicDBObject("country_code", inner0_0);
                                x.add(inner1_0);

                                BasicDBObject inner0_1 = new BasicDBObject(MongoDbManager.gte_, 400000);
                                BasicDBObject inner1_1 = new BasicDBObject("population", inner0_1);
                                x.add(inner1_1);

                                BasicDBObject dbo = new BasicDBObject();
                                dbo.append("search_field", sActualName);
                                dbo.append(MongoDbManager.or_, x);

                                DBCursor dbc = _georefDB.find(dbo);
                                if (dbc.size() >= 1) { // Problems!

                                    //Create list of candidates

                                    Type listType = new TypeToken<LinkedList<GeoFeaturePojo>>() {
                                    }.getType();
                                    LinkedList<GeoFeaturePojo> grpl = new Gson()
                                            .fromJson(dbc.toArray().toString(), listType);

                                    //Debug
                                    if (_nDebugLevel >= 2) {
                                        System.out.println("\tERROR CANDIDATE: " + ent.getDisambiguatedName()
                                                + " VS " + ent.getActual_name() + " (" + dbc.count() + ")");

                                        if (_nDebugLevel >= 3) {
                                            for (GeoFeaturePojo grp : grpl) {
                                                System.out.println("\t\tCandidate:" + grp.getCity() + " / "
                                                        + grp.getRegion() + " / " + grp.getCountry());
                                            }
                                        }
                                    }

                                    Candidate candidate = new Candidate(ent, grpl, stateOrCountry);
                                    dubiousLocations.put(ent.getIndex(), candidate);
                                    bStrongCandidate = true;

                                } // if strong candidate
                            } //TESTED ("reston, virginia" after "virginia/stateorcounty" mention)
                              // (end if can't shortcut past all this)

                        } // end if a US town
                    } // end if in the format "A, B"

                } // if weak candidate
                  //TESTED

                if (!bStrongCandidate) { // Obv can't count on a disambiguous candidate:               
                    String type = ent.getType().toLowerCase();

                    if (type.equals("stateorcounty")) {
                        String disName = ent.getDisambiguatedName().toLowerCase();
                        if (_abbrStateRegex.matcher(disName).matches()) {
                            otherRegions.add(getStateFromAbbr(disName));
                        } else {
                            otherRegions.add(ent.getDisambiguatedName().toLowerCase());
                        }
                        otherCountriesOrRegionsReferenced.add("united states");
                    } //TESTED: "mich./stateorcounty"
                    else if (type.equals("country")) {
                        String disName = ent.getDisambiguatedName().toLowerCase();

                        // Translation of known badly transcribed countries:
                        // (England->UK)
                        if (disName.equals("england")) {
                            otherCountries.add("united kingdom");
                        } //TESTED
                        else {
                            otherCountries.add(ent.getDisambiguatedName().toLowerCase());
                        }
                    } else if (type.equals("region")) {
                        otherRegions.add(ent.getDisambiguatedName().toLowerCase());
                    } else if (type.equals("city")) {
                        String splitMe[] = ent.getDisambiguatedName().split(",\\s*");
                        if (2 == splitMe.length) {
                            otherCountriesOrRegionsReferenced.add(splitMe[1].toLowerCase());
                            if (this._statesRegex.matcher(splitMe[1]).find()) {
                                otherCountriesOrRegionsReferenced.add("united states");
                            } //TESTED: "lexingon, kentucky/city"
                        }
                    }
                } //TESTED: just above clauses

            } // if location

        } // (end loop over entities)

    // Debug:
    if ((_nDebugLevel >= 3) && (!dubiousLocations.isEmpty())) {
        for (String s : otherRegions) {
            System.out.println("Strong region: " + s);
        }
        for (String s : otherCountries) {
            System.out.println("Strong countries: " + s);
        }
        for (String s : otherCountriesOrRegionsReferenced) {
            System.out.println("Weak regionscountries: " + s);
        }
    }

    // 2] The requirements and algorithm are discussed in 
    // http://ikanow.jira.com/wiki/display/INF/Beta...+improving+AlchemyAPI+extraction+%28geo%29
    // Canonical cases:
    // Darfur -> Darfur, MN even though Sudan and sometimes Darfur, Sudan are present
    // Shanghai -> Shanghai, WV even though China is mentioned (and not WV)
    // Manchester -> Manchester village, NY (not Manchester, UK)
    // Philadelphia -> Philadelphia (village), NY (though NY is mentioned and not PA) 

    // We're generating the following order
    //       10] Sitting tenant with strong direct
    //       15] Large city with strong direct      
    //       20] Region with direct
    //       30] Large city with strong indirect
    //       40] Sitting tenant with strong indirect 
    //       50] Region with indirect
    //       60] Another foreign possibility with strong direct 
    //       70] Large city with weak direct
    //       72] Large city with weak indirect
    //       75] Large city with no reference 
    //       78] Another foreign possibility with strong indirect (>100K population - ie not insignificant) 
    //       80] Sitting tenant with any weak (US) direct or indirect 
    //       90] Another foreign possibility with strong indirect 
    //      100] Another foreign possibility with weak direct 
    //      110] Another foreign possibility with weak indirect 
    //      120] Region with no reference, if there is only 1
    //      130] Sitting tenant with none of the above (ie default)
    //      140] Anything else!

    for (Map.Entry<String, Candidate> pair : dubiousLocations.entrySet()) {
        EntityPojo ent = pair.getValue().entity;
        Candidate candidate = pair.getValue();

        // 2.1] Let's analyse the "sitting tenant"

        int nPrio = 130;
        GeoFeaturePojo currLeader = null;
        int nCase = 0; // (just for debugging, 0=st, 1=large city, 2=region, 3=other)

        if (otherRegions.contains(candidate.state)) { // Strong direct ref, winner!
            nPrio = 10; // winner!
        } //TESTED: "san antonio, texas/city" vs "texas"
        else if (otherCountriesOrRegionsReferenced.contains(candidate.state)) {
            // Indirect ref
            nPrio = 40; // good, but beatable...
        } //TESTED: "philadelphia (village), new york/city" 
        else if (otherCountries.contains("united states")) { // Weak direct ref
            nPrio = 80; // better than nothing...            
        } //TESTED: "apache, oklahoma/city"
        else if (otherCountriesOrRegionsReferenced.contains("united states")) { // Weak indirect ref
            nPrio = 80; // better than nothing...            
        } //TESTED: "washington, d.c." have DC as stateorcounty, but US in countries list

        // Special case: we don't like "village":
        if ((80 != nPrio) && ent.getDisambiguatedName().contains("village")
                && !ent.getActual_name().contains("village")) {
            nPrio = 80;
        } //TESTED: "Downvoted: Philadelphia (village), New York from Philadelphia"

        // Debug
        if (_nDebugLevel >= 2) {
            System.out.println(pair.getKey() + " SittingTenantScore=" + nPrio);
        }

        // Alternatives
        if (nPrio > 10) {

            LinkedList<GeoFeaturePojo> geos = pair.getValue().candidates;
            for (GeoFeaturePojo geo : geos) {

                int nAltPrio = 140;
                int nAltCase = -1;
                String city = (null != geo.getCity()) ? geo.getCity().toLowerCase() : null;
                String region = (null != geo.getRegion()) ? geo.getRegion().toLowerCase() : null;
                String country = (null != geo.getCountry()) ? geo.getCountry().toLowerCase() : null;

                // 2.2] CASE 1: I'm a city with pop > 1M (best score 15)
                //                15] Large city with strong direct      
                //                30] Large city with strong indirect
                //                70] Large city with weak direct
                //                72] Large city with weak indirect
                //                75] Large city with no reference                

                if ((null != city) && (geo.getPopulation() >= 400000) && (nPrio > 15)) {
                    nAltCase = 1;

                    if ((null != region) && (otherRegions.contains(region))) {
                        nAltPrio = 15; // strong direct
                    } //TESTED: "dallas / Texas / United States = 15"
                    else if ((null != region) && (otherCountriesOrRegionsReferenced.contains(region))) {
                        nAltPrio = 30; // strong indirect
                    } //TESTED: "sacramento / California / United State"
                    else if ((null != country) && (otherCountries.contains(country))) {
                        nAltPrio = 70; // weak direct 
                    } //TESTED: "berlin, germany", with "germany" directly mentioned
                    else if ((null != country) && (otherCountriesOrRegionsReferenced.contains(country))) {
                        nAltPrio = 72; // weak indirect 
                    } //TESTED: "los angeles / California / United States = 72"
                    else {
                        nAltPrio = 75; // just for being big!
                    } //TESTED: "barcelona, spain"
                }

                // 2.3] CASE 2: I'm a region (best score=20, can beat current score)
                //                20] Region with direct
                //                50] Region with indirect
                //               120] Region with no reference, if there is only 1

                else if ((null == city) && (nPrio > 20)) {
                    nAltCase = 2;

                    if ((null != country) && (otherCountries.contains(country))) {
                        nAltPrio = 20; // strong direct 
                    } //TESTED: (region) "Berlin, Germany" with "Germany" mentioned
                    else if ((null != country) && (otherCountriesOrRegionsReferenced.contains(country))) {
                        nAltPrio = 50; // strong indirect 
                    } //(haven't seen, but we'll live)
                    else {
                        nAltPrio = 120; // (just for being there)
                    } //TESTED: "null / Portland / Jamaica = 120", also "Shanghai / China"
                }

                // 2.4] CASE 3: I'm any foreign possibility (best score=60)
                //                60] Another foreign possibility with strong direct 
                //                78] Another foreign possibility with strong indirect (>100K population - ie not insignificant) 
                //                90] Another foreign possibility with strong indirect 
                //               100] Another foreign possibility with weak direct 
                //               110] Another foreign possibility with weak indirect 

                else if (nPrio > 60) {
                    nAltCase = 3;

                    if ((null != region) && (otherRegions.contains(region))) {
                        nAltPrio = 60; // strong direct

                        // Double check we're not falling into the trap below:
                        if (!geo.getCountry_code().equals("US")) {
                            Matcher m = this._statesRegex.matcher(geo.getRegion());
                            if (m.matches()) { // non US state matching against (probably) US state, disregard)
                                nAltPrio = 140;
                            }
                        } //TESTED (same clause as below)

                    } //TESTED: lol "philadelphia / Maryland / Liberia = 60" (before above extra clause)

                    if (nAltPrio > 60) { // (may need to re-run test)
                        if ((null != country) && (otherCountries.contains(country))) {
                            if (geo.getPopulation() < 100000) {
                                nAltPrio = 90; // strong indirect
                            } //TESTED: "washington / Villa Clara / Cuba"
                            else {
                                nAltPrio = 78; // strong indirect, with boost!                        
                            } //TESTED: "geneva, Geneve, Switzerland", pop 180K
                        } else if ((null != region) && (otherCountriesOrRegionsReferenced.contains(region))) {
                            nAltPrio = 100; // weak direct
                        } //TESTED: "lincoln / Lincolnshire / United Kingdom = 100"
                        else if ((null != country) && (otherCountriesOrRegionsReferenced.contains(country))) {
                            nAltPrio = 110; // weak indirect
                        } //(haven't seen, but we'll live)                  
                    }
                }
                // Debug:
                if ((_nDebugLevel >= 2) && (nAltPrio < 140)) {
                    System.out.println("----Alternative: " + geo.getCity() + " / " + geo.getRegion() + " / "
                            + geo.getCountry() + " score=" + nAltPrio);
                }

                // Outcome of results:

                if (nAltPrio < nPrio) {
                    currLeader = geo;
                    nPrio = nAltPrio;
                    nCase = nAltCase;
                }
            } // end loop over alternativse

            if (null != currLeader) { // Need to change

                if (1 == nCase) {
                    this._nMovedToLargeCity++;

                    //(Cities are lower case in georef DB for some reason)
                    String city = WordUtils.capitalize(currLeader.getCity());

                    if (currLeader.getCountry_code().equals("US")) { // Special case: is this just the original?

                        String region = currLeader.getRegion();
                        if (region.equals("District of Columbia")) { // Special special case
                            region = "D.C.";
                        }
                        String sCandidate = city + ", " + region;

                        if (!sCandidate.equals(ent.getDisambiguatedName())) {
                            ent.setDisambiguatedName(sCandidate);
                            ent.setIndex(ent.getDisambiguatedName() + "/city");
                            ent.setSemanticLinks(null);
                            bChangedAnything = true;
                        } //TESTED (lots, eg "Philadelphia (village), New York" -> "Philadelphia, PA"; Wash, Ill. -> Wash DC)
                        else {
                            this._nMovedToLargeCity--;
                            _nStayedWithOriginal++;
                        } //TESTED ("Washington DC", "San Juan, Puerto Rico")
                    } //TESTED (see above)
                    else {
                        ent.setDisambiguatedName(city + ", " + currLeader.getCountry());
                        ent.setIndex(ent.getDisambiguatedName() + "/city");
                        ent.setSemanticLinks(null);
                        bChangedAnything = true;
                    } //TESTED: "london, california/city to London, United Kingdom"
                } else if (2 == nCase) {
                    this._nMovedToRegion++;
                    ent.setDisambiguatedName(currLeader.getRegion() + ", " + currLeader.getCountry());
                    ent.setIndex(ent.getDisambiguatedName() + "/region");
                    ent.setSemanticLinks(null);
                    bChangedAnything = true;

                } //TESTED: "Moved madrid, new york/city to Madrid, Spain" (treats Madrid as region, like Berlin see above)
                else {
                    //(Cities are lower case in georef DB for some reason)
                    String city = WordUtils.capitalize(currLeader.getCity());

                    this._nMovedToForeignCity++;
                    ent.setDisambiguatedName(city + ", " + currLeader.getCountry());
                    ent.setIndex(ent.getDisambiguatedName() + "/city");
                    ent.setSemanticLinks(null);
                    bChangedAnything = true;

                } //TESTED: "Moved geneva, new york/city to Geneva, Switzerland"

                if ((_nDebugLevel >= 1) && (null == ent.getSemanticLinks())) {
                    System.out.println("++++ Moved " + pair.getKey() + " to " + ent.getDisambiguatedName());
                }
            } else {
                _nStayedWithOriginal++;
            }

        } // (if sitting tenant not holder)

    } // (end loop over candidates)      

    if ((_nDebugLevel >= 1) && bChangedAnything) {
        System.out.println("\t(((Doc: " + doc.getTitle() + " / " + doc.getId() + " / " + doc.getUrl() + ")))");
    }

    return bChangedAnything;
}

From source file:com.ikanow.infinit.e.processing.generic.GenericProcessingController.java

License:Open Source License

public void InitializeIndex(boolean bDeleteDocs, boolean bDeleteEntityFeature, boolean bDeleteEventFeature,
        boolean bRebuildDocsIndex) {

    try { //create elasticsearch indexes

        if (!ElasticSearchManager.pingIndex(null, null)) {
            throw new RuntimeException("Index is red, disable indexing operations");
        } //TESTED

        PropertiesManager pm = new PropertiesManager();

        if (!pm.getAggregationDisabled()) {

            boolean languageNormalization = pm.getNormalizeEncoding();

            Builder localSettingsEvent = ImmutableSettings.settingsBuilder();
            localSettingsEvent.put("number_of_shards", 10).put("number_of_replicas", 2);
            localSettingsEvent.put("index.analysis.analyzer.suggestAnalyzer.tokenizer", "standard");
            if (languageNormalization) {
                localSettingsEvent.putArray("index.analysis.analyzer.suggestAnalyzer.filter", "icu_normalizer",
                        "icu_folding", "standard", "lowercase");
            } else {
                localSettingsEvent.putArray("index.analysis.analyzer.suggestAnalyzer.filter", "standard",
                        "lowercase");
            }/*from   w ww .  j  a  va  2  s .co m*/

            Builder localSettingsGaz = ImmutableSettings.settingsBuilder();
            localSettingsGaz.put("number_of_shards", 10).put("number_of_replicas", 2);
            localSettingsGaz.put("index.analysis.analyzer.suggestAnalyzer.tokenizer", "standard");
            if (languageNormalization) {
                localSettingsGaz.putArray("index.analysis.analyzer.suggestAnalyzer.filter", "icu_normalizer",
                        "icu_folding", "standard", "lowercase");
            } else {
                localSettingsGaz.putArray("index.analysis.analyzer.suggestAnalyzer.filter", "standard",
                        "lowercase");
            }

            //event feature
            String eventGazMapping = new Gson().toJson(new AssociationFeaturePojoIndexMap.Mapping(),
                    AssociationFeaturePojoIndexMap.Mapping.class);
            ElasticSearchManager eventIndex = IndexManager.createIndex(
                    AssociationFeaturePojoIndexMap.indexName_, null, false, null, eventGazMapping,
                    localSettingsEvent);
            if (null == eventIndex) { // (if has been previously referenced in this process space)
                eventIndex = IndexManager.getIndex(AssociationFeaturePojoIndexMap.indexName_);
            }
            eventIndex.createAlias(AssociationFeaturePojoIndexMap.indexCollectionName_);
            if (bDeleteEventFeature) {
                eventIndex.deleteMe();
                eventIndex = IndexManager.createIndex(AssociationFeaturePojoIndexMap.indexName_, null, false,
                        null, eventGazMapping, localSettingsEvent);
            }
            //entity feature
            String gazMapping = new Gson().toJson(new EntityFeaturePojoIndexMap.Mapping(),
                    EntityFeaturePojoIndexMap.Mapping.class);
            ElasticSearchManager entityIndex = IndexManager.createIndex(EntityFeaturePojoIndexMap.indexName_,
                    null, false, null, gazMapping, localSettingsGaz);
            if (null == entityIndex) { // (if has been previously referenced in this process space)
                entityIndex = IndexManager.getIndex(EntityFeaturePojoIndexMap.indexName_);
            }
            entityIndex.createAlias(EntityFeaturePojoIndexMap.indexCollectionName_);
            if (bDeleteEntityFeature) {
                entityIndex.deleteMe();
                entityIndex = IndexManager.createIndex(EntityFeaturePojoIndexMap.indexName_, null, false, null,
                        gazMapping, localSettingsGaz);
            }
        }

        //DOCS - much more complicated than anything else 

        boolean bPingMainIndexFailed = !ElasticSearchManager
                .pingIndex(DocumentPojoIndexMap.globalDocumentIndex_);
        // (ie if main doc index doesn't exist then always rebuild all indexes)

        if (bPingMainIndexFailed) { // extra level of robustness... sleep for a minute then double check the index is really missing...
            try {
                Thread.sleep(60000);
            } catch (Exception e) {
            }
            bPingMainIndexFailed = !ElasticSearchManager.pingIndex(DocumentPojoIndexMap.globalDocumentIndex_);
        }
        bRebuildDocsIndex |= bPingMainIndexFailed;

        // check the main index has the "collection" alias - if not then rebuild everything

        if (!bPingMainIndexFailed && (null == _aliasInfo)) {
            ElasticSearchManager docIndex = ElasticSearchManager
                    .getIndex(DocumentPojoIndexMap.globalDocumentIndex_);
            ClusterStateResponse clusterState = docIndex.getRawClient().admin().cluster()
                    .state(new ClusterStateRequest()).actionGet();
            _aliasInfo = CrossVersionImmutableMapOfImmutableMaps
                    .getAliases(clusterState.getState().getMetaData());
            if (!_aliasInfo.containsKey(DocumentPojoIndexMap.globalDocumentIndexCollection_)) {
                bRebuildDocsIndex = true;
            }
        } //TESTED

        createCommunityDocIndex(DocumentPojoIndexMap.globalDocumentIndex_, null, false, true, bDeleteDocs);
        createCommunityDocIndex(DocumentPojoIndexMap.manyGeoDocumentIndex_, null, false, false, bDeleteDocs);

        // Some hardwired dummy communities
        createCommunityDocIndex("4e3706c48d26852237078005", null, true, false, bDeleteDocs); // (admin)
        createCommunityDocIndex("4e3706c48d26852237079004", null, true, false, bDeleteDocs); // (test user)
        // (create dummy index used to keep personal group aliases)

        if (bRebuildDocsIndex || bDeleteDocs) {

            // OK, going to have different shards for different communities:
            // Get a list of all the communities:

            BasicDBObject query = new BasicDBObject();
            BasicDBObject fieldsToDrop = new BasicDBObject("members", 0);
            fieldsToDrop.put("communityAttributes", 0);
            fieldsToDrop.put("userAttributes", 0);
            DBCursor dbc = DbManager.getSocial().getCommunity().find(query, fieldsToDrop);

            List<DBObject> tmparray = dbc.toArray(); // (brings the entire thing into memory so don't get cursor timeouts)
            int i = 0;
            System.out.println("Initializing " + dbc.size() + " indexes:");
            for (int j = 0; j < 2; ++j) {
                for (DBObject dbotmp : tmparray) {
                    if ((++i % 100) == 0) {
                        System.out.println("Initialized " + i + " indexes.");
                    }
                    BasicDBObject dbo = (BasicDBObject) dbotmp;

                    // OK, going to see if there are any sources with this group id, create a new index if so:
                    // (Don't use CommunityPojo data model here for performance reasons....
                    //  (Also, haven't gotten round to porting CommunityPojo field access to using static fields))
                    ObjectId communityId = (ObjectId) dbo.get("_id");
                    boolean bPersonalGroup = dbo.getBoolean("isPersonalCommunity", false);
                    boolean bSystemGroup = dbo.getBoolean("isSystemCommunity", false);
                    ObjectId parentCommunityId = (ObjectId) dbo.get("parentId");

                    createCommunityDocIndex(communityId.toString(), parentCommunityId, bPersonalGroup,
                            bSystemGroup, bDeleteDocs, j == 0);

                } //end loop over communities
            } // end loop over communities - first time parents only
        } // (end if need to do big loop over all sources)
    } catch (Exception e) {
        //DEBUG
        //e.printStackTrace();

        throw new RuntimeException(e.getMessage());
    }
}

From source file:com.linuxbox.enkive.archiver.mongodb.MongoArchivingService.java

License:Open Source License

private boolean attachmentReferencedByMultipleMessages(String attachmentId) {
    BasicDBObject attachmentQuery = new BasicDBObject(ATTACHMENT_ID_LIST, attachmentId);
    DBCursor results = messageColl.find(attachmentQuery);
    return (results.size() > 1);
}

From source file:com.linuxbox.enkive.archiver.mongodb.MongoArchivingService.java

License:Open Source License

private boolean messageReferencedAsNestedMessage(String messageId) {
    BasicDBObject nestedMessageQuery = new BasicDBObject(NESTED_MESSAGE_ID_LIST, messageId);
    DBCursor results = messageColl.find(nestedMessageQuery);
    return (results.size() > 0);
}

From source file:com.linuxbox.enkive.permissions.message.MongoMessagePermissionsService.java

License:Open Source License

@Override
public boolean canReadAttachment(Collection<String> addresses, String attachmentId) {
    BasicDBObject query = new BasicDBObject();

    // Needs to match MAIL_FROM OR FROM
    BasicDBList addressQuery = new BasicDBList();
    for (String address : addresses) {
        addressQuery.add(new BasicDBObject(MAIL_FROM, address));
        addressQuery.add(new BasicDBObject(FROM, address));
        addressQuery.add(new BasicDBObject(RCPT_TO, address));
        addressQuery.add(new BasicDBObject(TO, address));
        addressQuery.add(new BasicDBObject(CC, address));
    }//  w ww  . j  a  v  a  2  s  .  c om
    query.put("$or", addressQuery);
    query.put(ATTACHMENT_ID_LIST, attachmentId);
    DBCursor results = messageCollection.find(query);
    if (results.size() > 0)
        return true;
    else
        return false;
}

From source file:com.mysema.query.mongodb.MongodbQuery.java

License:Apache License

@Override
public List<K> list() {
    try {/*  w w w  . ja va 2  s .c  o  m*/
        DBCursor cursor = createCursor();
        List<K> results = new ArrayList<K>(cursor.size());
        for (DBObject dbObject : cursor) {
            results.add(transformer.apply(dbObject));
        }
        return results;
    } catch (NoResults ex) {
        return Collections.emptyList();
    }
}

From source file:com.redhat.lightblue.crud.mongo.BasicDocFinder.java

License:Open Source License

@Override
public long find(CRUDOperationContext ctx, DBCollection coll, DBObject mongoQuery, DBObject mongoSort,
        Long from, Long to) {
    LOGGER.debug("Submitting query");
    DBCursor cursor = new FindCommand(null, coll, mongoQuery, null).execute();
    LOGGER.debug("Query evaluated");
    if (mongoSort != null) {
        cursor = cursor.sort(mongoSort);
        LOGGER.debug("Result set sorted");
    }/*from  ww w . jav  a  2 s . co  m*/
    long ret = cursor.size();
    LOGGER.debug("Applying limits: {} - {}", from, to);
    if (from != null) {
        cursor.skip(from.intValue());
    }
    if (to != null) {
        cursor.limit(to.intValue() - (from == null ? 0 : from.intValue()) + 1);
    }
    LOGGER.debug("Retrieving results");
    List<DBObject> mongoResults = cursor.toArray();
    LOGGER.debug("Retrieved {} results", mongoResults.size());
    List<JsonDoc> jsonDocs = translator.toJson(mongoResults);
    ctx.addDocuments(jsonDocs);
    for (DocCtx doc : ctx.getDocuments()) {
        doc.setOperationPerformed(Operation.FIND);
    }
    LOGGER.debug("Translated DBObjects to json");
    return ret;
}

From source file:com.setronica.ucs.storage.MongoListStorage.java

License:LGPL

@Override
public void open() throws IOException {
    DB db = mongoClient.getDB(mongoDbName);
    collection = db.getCollection(mongoCollectionName);
    if (collection == null) {
        collection = db.createCollection(mongoCollectionName, null);
    }//from  w  ww.jav  a  2  s. c om
    collection.setWriteConcern(WriteConcern.ACKNOWLEDGED);

    DBCursor cursor = collection.find();
    data = new ArrayList<E>(cursor.size());
    for (DBObject entry : cursor) {
        Integer index = (Integer) entry.get("_id");
        while (index >= data.size()) {
            data.add(null);
        }
        data.set(index, (E) readObject((byte[]) entry.get("element")));
    }
}

From source file:com.setronica.ucs.storage.MongoMapStorage.java

License:LGPL

@Override
public void open() throws IOException {
    DB db = mongoClient.getDB(mongoDbName);
    collection = db.getCollection(mongoCollectionName);
    if (collection == null) {
        collection = db.createCollection(mongoCollectionName, null);
    }//from ww w . j av a2s  .  c om
    collection.setWriteConcern(WriteConcern.ACKNOWLEDGED);

    DBCursor cursor = collection.find();
    data = new HashMap<K, E>(cursor.size());
    for (DBObject entry : cursor) {
        data.put((K) readObject(entry.get("_id")), (E) readObject(entry.get("value")));
    }
}

From source file:controllers.FilterController.java

License:Apache License

private static Graph getSturgesHistogramm(Filter f, String property) {
    BasicDBObject query = Application.getFilterQuery(f);
    DBCursor cursor = Configurator.getDefaultConfigurator().getPersistence().find(Constants.TBL_ELEMENTS,
            query);//from   w  w  w.j a  v a2  s .  c  o m
    int n = cursor.size();
    int bins = (int) ((Math.log(n) / Math.log(2)) + 1);
    MapReduceJob job = new NumericAggregationJob(f.getCollection(), property);
    job.setFilterquery(query);

    MapReduceOutput output = job.execute();
    List<BasicDBObject> results = (List<BasicDBObject>) output.getCommandResult().get("results");
    Graph g = null;
    if (!results.isEmpty()) {
        BasicDBObject aggregation = (BasicDBObject) results.get(0).get("value");
        long max = aggregation.getLong("max");
        int width = (int) (max / bins);
        Map<String, String> config = new HashMap<String, String>();
        config.put("bin_width", width + "");

        job = new HistogramJob(f.getCollection(), property);
        job.setFilterquery(query);
        job.setConfig(config);
        output = job.execute();
        List<String> keys = new ArrayList<String>();
        List<String> values = new ArrayList<String>();

        calculateNumericHistogramResults(output, keys, values, width);

        g = new Graph(property, keys, values);
    }

    return g;
}