Package com.sissi.ucenter.relation.roster.impl

Source Code of com.sissi.ucenter.relation.roster.impl.MongoOurRelation

package com.sissi.ucenter.relation.roster.impl;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DBObject;
import com.sissi.config.Dictionary;
import com.sissi.config.MongoConfig;
import com.sissi.context.JID;
import com.sissi.protocol.iq.roster.RosterSubscription;
import com.sissi.ucenter.relation.Relation;
import com.sissi.ucenter.relation.impl.DefaultRelation;

/**
* 获取订阅关系. 索引策略1: {"master":1,"slave":1}</p> 索引策略2: {"slave":1,"master":1},
*
* @author kim 2014年4月22日
*/
public class MongoOurRelation {

  private final Map<String, Object> plus = Collections.unmodifiableMap(new HashMap<String, Object>());

  private final MongoConfig config;

  private final String[] groups;

  /**
   * @param config
   * @param groups 默认Group
   */
  public MongoOurRelation(MongoConfig config, String[] groups) {
    super();
    this.config = config;
    this.groups = groups;
  }

  public Relation ourRelation(JID from, JID to) {
    DBObject db = this.config.collection().findOne(this.buildQuery(from.asStringWithBare(), to.asStringWithBare()));
    return db != null ? new MongoRosterRelation(db, Dictionary.FIELD_SLAVE, this.groups, this.plus) : new DefaultRelation(to, RosterSubscription.NONE.toString());
  }

  /**
   * {"master":1,"slave":1}
   *
   * @param master
   * @param slave
   * @return
   */
  public DBObject buildQuery(String master, String slave) {
    return BasicDBObjectBuilder.start().add(Dictionary.FIELD_MASTER, master).add(Dictionary.FIELD_SLAVE, slave).get();
  }
}
TOP

Related Classes of com.sissi.ucenter.relation.roster.impl.MongoOurRelation

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.