Package com.ikanow.infinit.e.data_model.store

Source Code of com.ikanow.infinit.e.data_model.store.MongoDbManager$FeatureMongoDb

/*******************************************************************************
* Copyright 2012 The Infinit.e Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.ikanow.infinit.e.data_model.store;

import com.ikanow.infinit.e.data_model.utils.PropertiesManager;
import com.mongodb.CommandResult;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.gridfs.GridFS;

// Encapsulates Mongo Databases and collections

public class MongoDbManager {

  // MongoDB commands:
  public static final String regex_ = "$regex";
  public static final String exists_ = "$exists";
  public static final String min_ = "$min";
  public static final String max_ = "$max";
  public static final String and_ = "$and";
  public static final String not_ = "$not";
  public static final String nor_ = "$nor";
  public static final String or_ = "$or";
  public static final String ne_ = "$ne";
  public static final String gt_ = "$gt";
  public static final String gte_ = "$gte";
  public static final String lt_ = "$lt";
  public static final String lte_ = "$lte";
  public static final String all_ = "$all";
  public static final String in_ = "$in";
  public static final String nin_ = "$nin";
  public static final String each_ = "$each";
  public static final String set_ = "$set";
  public static final String unset_ = "$unset";
  public static final String inc_ = "$inc";
  public static final String addToSet_ = "$addToSet";
  public static final String pull_ = "$pull";
  public static final String pullAll_ = "$pullAll";
  public static final String push_ = "$push";
  public static final String pushAll_ = "$pushAll";
  public static final String pop_ = "$pop";
  public static final String size_ = "$size";
  public static final String where_ = "$where";
  // Other keywords:
  public static final String sparse_ = "sparse";
 
  protected MongoDbManager() {}
 
  // 1. MongoDB connection management
 
  private static ThreadLocal<MongoDbConnection> _connections = new ThreadLocal<MongoDbConnection>() {
        @Override protected MongoDbConnection initialValue() {
            try {
        return new MongoDbConnection(new PropertiesManager());
      } catch (Exception e) {
        try {
          return new MongoDbConnection(); // (default to localhost:27017)
        }
        catch (Exception e1) {
          return null;
        }
      }
        }
  };
 
  // Generic database access:
 
  public static DB getDB(String dbName) {
    return _connections.get().getMongo().getDB(dbName);
  }
  public static DBCollection getCollection(String dbName, String collectionName) {
    return _connections.get().getMongo().getDB(dbName).getCollection(collectionName);
  }
 
  // 2. MongoDB database management

  // 2.1. Social DB
 
  private static ThreadLocal<SocialMongoDb> _social = new ThreadLocal<SocialMongoDb>() {
        @Override protected SocialMongoDb initialValue() {
          return new SocialMongoDb(_connections.get().getMongo());
        }
  };
  public static SocialMongoDb getSocial() {
    return _social.get();
 
 
  // 2.2. Document database
 
  private static ThreadLocal<DocumentMongoDb> _doc = new ThreadLocal<DocumentMongoDb>() {
        @Override protected DocumentMongoDb initialValue() {
          return new DocumentMongoDb(_connections.get().getMongo());
        }
  };
  public static DocumentMongoDb getDocument() {
    return _doc.get();
 
 
  // 2.3. Feature database
 
  private static ThreadLocal<FeatureMongoDb> _feature = new ThreadLocal<FeatureMongoDb>() {
        @Override protected FeatureMongoDb initialValue() {
          return new FeatureMongoDb(_connections.get().getMongo());
        }
  };
  public static FeatureMongoDb getFeature() {
    return _feature.get();
 
 
  // 3.4. Config database
 
  private static ThreadLocal<IngestMongoDb> _ingest = new ThreadLocal<IngestMongoDb>() {
        @Override protected IngestMongoDb initialValue() {
          return new IngestMongoDb(_connections.get().getMongo());
        }
  };
  public static IngestMongoDb getIngest() {
    return _ingest.get();
 
 
  //CALEB NUMBERING SCHEME HERE
  private static ThreadLocal<CustomMongoDb> _custom = new ThreadLocal<CustomMongoDb>() {
        @Override protected CustomMongoDb initialValue() {
          return new CustomMongoDb(_connections.get().getMongo());
        }
  };
  public static CustomMongoDb getCustom() {
    return _custom.get();
 
 
  // 3. Database-specific collection management
 
  // 3.1. Social collections
 
  public static class SocialMongoDb {   
    SocialMongoDb(Mongo mongo) { _savedMongo = mongo; }   
    private Mongo _savedMongo;
   
    private DBCollection _social_person;
    private DBCollection _social_community;
    private DBCollection _social_communityapprove;
   
    private DBCollection _social_authentication;
    private DBCollection _social_cookies;

    private DBCollection _social_share;
    private GridFS _social_share_binary;

    // Keeping these under social as intend to move them all to using share
    private DBCollection _social_gui_modules;
    private DBCollection _social_gui_favmodules;
    private DBCollection _social_gui_setup;   
   
    public CommandResult getLastError(String sLogicalCollectionName) {
      // (In this case, version doesn't -currently- matter)
      if (sLogicalCollectionName.equalsIgnoreCase("authentication")) {     
        return _savedMongo.getDB("security").getLastError();
      }
      else if (sLogicalCollectionName.equalsIgnoreCase("cookies")) {     
        return _savedMongo.getDB("security").getLastError();
      }
      else if (sLogicalCollectionName.equalsIgnoreCase("binary")) {     
        return _savedMongo.getDB("file").getLastError();
      }
      else if (sLogicalCollectionName.equalsIgnoreCase("uimodules")) {     
        return _savedMongo.getDB("gui").getLastError();
      }
      else if (sLogicalCollectionName.equalsIgnoreCase("uifavoritemodules")) {     
        return _savedMongo.getDB("gui").getLastError();
      }
      else if (sLogicalCollectionName.equalsIgnoreCase("uisetup")) {     
        return _savedMongo.getDB("gui").getLastError();         
      }
      else {
        return _savedMongo.getDB("social").getLastError();
      }
    }

    public DBCollection getPerson() {
      if (null == _social_person) {
        _social_person = _savedMongo.getDB("social").getCollection("person");
      }
      return _social_person;
    }
    public DBCollection getCommunity() {
      if (null == _social_community) {
        _social_community = _savedMongo.getDB("social").getCollection("community");
      }
      return _social_community;
    }
    public DBCollection getCommunityApprove() {
      if (null == _social_communityapprove) {
        _social_communityapprove = _savedMongo.getDB("social").getCollection("communityapprove");
      }
      return _social_communityapprove;
     
    }
    public DBCollection getAuthentication() {
      if (null == _social_authentication) {
        _social_authentication = _savedMongo.getDB("security").getCollection("authentication");
      }
      return _social_authentication;
    }
    public DBCollection getCookies() {
      if (null == _social_cookies) {
        _social_cookies = _savedMongo.getDB("security").getCollection("cookies");
      }
      return _social_cookies;
    }
    public DBCollection getShare() {
      if (null == _social_share) {
        _social_share = _savedMongo.getDB("social").getCollection("share");
      }
      return _social_share;
    }
    public GridFS getShareBinary() {
      if (null == _social_share_binary) {
        _social_share_binary = new GridFS(_savedMongo.getDB("file"), "binary_shares");         
      }
      return _social_share_binary;
    }
    public DBCollection getUIModules() {
      if (null == _social_gui_modules) {
        _social_gui_modules = _savedMongo.getDB("gui").getCollection("modules");         
      }
      return _social_gui_modules;
    }
    public DBCollection getUIFavoriteModules() {
      if (null == _social_gui_favmodules) {
        _social_gui_favmodules = _savedMongo.getDB("gui").getCollection("favmodules");         
      }
      return _social_gui_favmodules;
    }
    public DBCollection getUISetup() {
      if (null == _social_gui_setup) {
        _social_gui_setup = _savedMongo.getDB("gui").getCollection("setup");         
      }
      return _social_gui_setup;
    }
  }
 
  // 3.2. Document collections
 
  public static class DocumentMongoDb {
    DocumentMongoDb(Mongo mongo) { _savedMongo = mongo; }   
    private Mongo _savedMongo;
   
    private DBCollection _document_metadata;
    private DBCollection _document_content;
    private DBCollection _document_counts;
   
    public CommandResult getLastError(String sLogicalCollectionName) {
      // (In this case, logical collection name doesn't matter)
      if (sLogicalCollectionName.equalsIgnoreCase("metadata")){
        return _savedMongo.getDB("doc_metadata").getLastError();       
      }
      else if (sLogicalCollectionName.equalsIgnoreCase("content")){
        return _savedMongo.getDB("doc_content").getLastError();       
      }
      else {
        return null;
      }
    }
    public DBCollection getMetadata() {
      if (null == _document_metadata) {
        _document_metadata = _savedMongo.getDB("doc_metadata").getCollection("metadata");         
      }
      return _document_metadata;
    }
    public DBCollection getContent() {
      if (null == _document_content) {
        _document_content = _savedMongo.getDB("doc_content").getCollection("gzip_content");         
      }
      return _document_content;
    }
    public DBCollection getCounts() {
      if (null == _document_counts) {
        _document_counts = _savedMongo.getDB("doc_metadata").getCollection("doc_counts");         
      }
      return _document_counts;     
    }
  }
 
  // 3.3. Feature collections
 
  public static class FeatureMongoDb
    FeatureMongoDb(Mongo mongo) { _savedMongo = mongo; }   
    private Mongo _savedMongo;
 
    private DBCollection _feature_entity;
    private DBCollection _feature_assoc;
    private DBCollection _feature_geo;
    private DBCollection _feature_sync_lock;
    private DBCollection _feature_agg_lock;
   
    public CommandResult getLastError(String sLogicalCollectionName) {
      // (In this case, logical collection name doesn't matter)
      return _savedMongo.getDB("feature").getLastError();       
    }
   
    public DBCollection getEntity() {
      if (null == _feature_entity) {
        _feature_entity = _savedMongo.getDB("feature").getCollection("entity");         
      }
      return _feature_entity;
    }
    public DBCollection getAssociation() {
      if (null == _feature_assoc) {
        _feature_assoc = _savedMongo.getDB("feature").getCollection("association");         
      }
      return _feature_assoc;
    }
    public DBCollection getGeo() {
      if (null == _feature_geo) {
        _feature_geo = _savedMongo.getDB("feature").getCollection("geo");         
      }
      return _feature_geo;
    }
    public DBCollection getSyncLock() { // (Used to synchronize batch operations performed via script)
      if (null == _feature_sync_lock) {
        _feature_sync_lock = _savedMongo.getDB("feature").getCollection("sync_lock");         
      }
      return _feature_sync_lock;     
    }
    public DBCollection getAggregationLock() { // (Used to lock aggregation activities to one harvester)
      if (null == _feature_agg_lock) {
        _feature_agg_lock = _savedMongo.getDB("feature").getCollection("agg_lock");         
      }
      return _feature_agg_lock;     
    }
  }
 
  // 3.4. Config collections
 
  public static class IngestMongoDb
    IngestMongoDb(Mongo mongo) { _savedMongo = mongo; }   
    private Mongo _savedMongo;

    private DBCollection _ingest_source;
    private DBCollection _ingest_log_harvester_q;
    private DBCollection _ingest_log_harvester_slaves;
    private DBCollection _ingest_federated_cache;
   
    public CommandResult getLastError(String sLogicalCollectionName) {
      // (In this case, logical collection name doesn't matter)
      return _savedMongo.getDB("ingest").getLastError();       
    }
   
    public DBCollection getSource() {
      if (null == _ingest_source) {
        _ingest_source = _savedMongo.getDB("ingest").getCollection("source");                   
      }
      return _ingest_source;
    }
    public DBCollection getLogHarvesterQ() {
      if (null == _ingest_log_harvester_q) {
        _ingest_log_harvester_q = _savedMongo.getDB("ingest").getCollection("log_harvester_q");                   
      }
      return _ingest_log_harvester_q;
    }
    public DBCollection getLogHarvesterSlaves() {
      if (null == _ingest_log_harvester_slaves) {
        _ingest_log_harvester_slaves = _savedMongo.getDB("ingest").getCollection("log_harvester_slaves");                   
      }
      return _ingest_log_harvester_slaves;
    }
    public DBCollection getFederatedCache() {
      if (null == _ingest_federated_cache) {
        _ingest_federated_cache = _savedMongo.getDB("ingest").getCollection("federated_cache");                   
      }
      return _ingest_federated_cache;
    }
  }

  // 3.5 Custom processing collection
 
  public static class CustomMongoDb
 
    CustomMongoDb(Mongo mongo) { _savedMongo = mongo; }   
    private Mongo _savedMongo;

    private DBCollection _config_customlookup;
    private DBCollection _config_customSavedQueryCache;
   
    public CommandResult getLastError(String sLogicalCollectionName) {
      // (In this case, logical collection name doesn't matter)
      return _savedMongo.getDB("custommr").getLastError();       
    }
   
    public DBCollection getLookup() {
      if (null == _config_customlookup) {
        _config_customlookup = _savedMongo.getDB("custommr").getCollection("customlookup");                   
      }
      return _config_customlookup;
    }
    public DBCollection getSavedQueryCache() {
      if (null == _config_customSavedQueryCache) {
        _config_customSavedQueryCache = _savedMongo.getDB("custommr").getCollection("saved_query_cache");                   
      }
      return _config_customSavedQueryCache;
    }
  }
 
 
}
TOP

Related Classes of com.ikanow.infinit.e.data_model.store.MongoDbManager$FeatureMongoDb

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.