Package com.sissi.ucenter.relation.muc.apply.register

Source Code of com.sissi.ucenter.relation.muc.apply.register.MongoRegisterSubmitContext

package com.sissi.ucenter.relation.muc.apply.register;

import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DBObject;
import com.mongodb.MongoException;
import com.mongodb.WriteConcern;
import com.sissi.config.Dictionary;
import com.sissi.config.MongoConfig;
import com.sissi.context.JID;
import com.sissi.field.Fields;
import com.sissi.ucenter.impl.MongoFieldsContext;
import com.sissi.ucenter.relation.muc.apply.ApplyContext;

/**
* 更新个人信息请求(Information). 索引策略1: {"jid":1}</p>索引策略2: {"jid":1,"informations.jid":1}
*
* @author kim 2014年3月12日
*/
public class MongoRegisterSubmitContext extends MongoFieldsContext implements ApplyContext {

  private final MongoConfig config;

  public MongoRegisterSubmitContext(MongoConfig config) {
    super();
    this.config = config;
  }

  /*
   * 全量更新
   *
   * @see com.sissi.ucenter.relation.muc.request.RequestContext#request(com.sissi.context.JID, com.sissi.context.JID, com.sissi.field.Fields)
   */
  @Override
  public boolean apply(JID invoker, JID group, Fields fields) {
    DBObject entity = super.entities(fields, BasicDBObjectBuilder.start());
    try {
      // {"jid":to.bare,"informations.jid":from.bare},{"$set":{"infomrations.$.information":..entity..}}
      this.config.collection().update(BasicDBObjectBuilder.start().add(Dictionary.FIELD_JID, group.asStringWithBare()).add(Dictionary.FIELD_INFORMATIONS + "." + Dictionary.FIELD_JID, invoker.asStringWithBare()).get(), BasicDBObjectBuilder.start("$set", BasicDBObjectBuilder.start(Dictionary.FIELD_INFORMATIONS + ".$." + Dictionary.FIELD_INFORMATION, entity).get()).get(), true, false, WriteConcern.SAFE);
    } catch (MongoException e) {
      // {"jid":to.bare},{"$addToSet"{"informations":{"jid":from.bare,"activate":当前时间,"information":...entity...}}}
      this.config.collection().update(BasicDBObjectBuilder.start().add(Dictionary.FIELD_JID, group.asStringWithBare()).get(), BasicDBObjectBuilder.start().add("$addToSet", BasicDBObjectBuilder.start(Dictionary.FIELD_INFORMATIONS, BasicDBObjectBuilder.start().add(Dictionary.FIELD_JID, invoker.asStringWithBare()).add(Dictionary.FIELD_ACTIVATE, System.currentTimeMillis()).add(Dictionary.FIELD_INFORMATION, entity).get()).get()).get());
    }
    return true;
  }
}
TOP

Related Classes of com.sissi.ucenter.relation.muc.apply.register.MongoRegisterSubmitContext

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.