List of usage examples for com.mongodb BasicDBObject get
public Object get(final String key)
From source file:com.ebay.cloud.cms.dal.persistence.impl.root.RootFieldModifyCommand.java
License:Apache License
private void buildSetFieldBody(DBObject modifyBody) { MetaField field = getField();//from w w w. j a v a 2 s . c o m BasicDBObject enityObject = (BasicDBObject) getEntity().getNode(); BasicDBObject fieldObject = (BasicDBObject) enityObject.get(field.getDbName()); if (fieldObject != null) { BasicDBObject set = (BasicDBObject) modifyBody.get("$set"); set.put(field.getDbName(), fieldObject); } }
From source file:com.ebay.cloud.cms.dal.persistence.impl.root.RootFieldModifyCommand.java
License:Apache License
private void buildArrayBody(DBObject modifyBody) { MetaField field = getField();//from w w w . ja v a 2 s . co m BasicDBObject enityObject = (BasicDBObject) getEntity().getNode(); BasicDBObject fieldObject = (BasicDBObject) enityObject.get(field.getDbName()); if (fieldObject != null) { Object givenValue = (fieldObject).get(V); if (givenValue != null) { BasicDBObject eachDbo = new BasicDBObject(); eachDbo.put("$each", givenValue); BasicDBObject addToSetDbo = new BasicDBObject(); addToSetDbo.put(field.getValueDbName(), eachDbo); modifyBody.put("$addToSet", addToSetDbo); // field length, only update when we do have updates BasicDBObject inc = (BasicDBObject) modifyBody.get("$inc"); inc.put(field.getDbName() + DOT + FieldProperty.LENGTH.getDbName(), getEntity().getFieldLength(fieldName)); // field time stamp BasicDBObject set = (BasicDBObject) modifyBody.get("$set"); set.put(field.getDbName() + DOT + FieldProperty.TIMESTAMP.getDbName(), getEntity().getFieldTimestamp(fieldName)); } } }
From source file:com.ebay.cloud.cms.dal.persistence.impl.root.RootFieldModifyCommand.java
License:Apache License
private void buildJsonBody(DBObject modifyBody) { BasicDBObject set = (BasicDBObject) modifyBody.get("$set"); MetaField field = getField();// ww w.j a v a 2 s . c o m BasicDBObject enityObject = (BasicDBObject) getEntity().getNode(); BasicDBObject fieldObject = (BasicDBObject) enityObject.get(field.getDbName()); if (fieldObject != null) { BasicDBObject givenValue = (BasicDBObject) (fieldObject).get(V); if (givenValue != null) { for (String key : givenValue.keySet()) { set.put(field.getValueDbName() + DOT + key, givenValue.get(key)); } // field properties // no length here BasicDBObject setDbo = (BasicDBObject) modifyBody.get("$set"); setDbo.put(field.getDbName() + DOT + FieldProperty.TIMESTAMP.getDbName(), getEntity().getFieldTimestamp(field.getName())); } } }
From source file:com.ebay.cloud.cms.dalapi.entity.impl.BsonEntity.java
License:Apache License
@Override @SuppressWarnings("unchecked") public List<?> getFieldValues(String fieldName) { // validate the field name MetaField metaField = getMetaClass().getFieldByName(fieldName); CheckConditions.checkArgument(metaField != null, "Can't find meta field %s", fieldName); CheckConditions.checkNotNull(metaField.getDbName(), "Meta field doesn't have db name set!"); // get parent bson & db name BasicDBObject fieldBsonObject = null; String dbValName = null;/*from w ww. j av a 2 s. com*/ if (metaField.isInternal()) { dbValName = metaField.getDbName(); fieldBsonObject = bsonObject; } else { dbValName = MetaField.VALUE_KEY; fieldBsonObject = getBsonField(metaField.getDbName()); } if (fieldBsonObject == null) { return Collections.EMPTY_LIST; } // get value from parent field CardinalityEnum cardinality = metaField.getCardinality(); DataTypeEnum dataType = metaField.getDataType(); IDataTypeHandler handler = BsonDataTypeHandlerFactory.getHandler(dataType); List<Object> result = Collections.EMPTY_LIST; if (cardinality == CardinalityEnum.One) { if (fieldBsonObject.containsField(dbValName)) { Object bsonValue = fieldBsonObject.get(dbValName); // for json type field, if data is Many while metatype changed to One, // it still can return not null bsonValue, but should ignore it if (!(bsonValue instanceof BasicDBList)) { result = new ArrayList<Object>(1); Object value = handler.read(this, bsonValue, metaField); addReadValue(dataType, result, value); } } } else if (fieldBsonObject.get(dbValName) instanceof List) { Object blist = fieldBsonObject.get(dbValName); List<Object> bsonList = (List<Object>) blist; if (bsonList != null) { result = new ArrayList<Object>(); for (Object bsonValue : bsonList) { Object value = handler.read(this, bsonValue, metaField); addReadValue(dataType, result, value); } } } return result; }
From source file:com.ebay.cloud.cms.dalapi.entity.impl.BsonEntity.java
License:Apache License
private void putFieldValues(String fieldName, Object values, boolean setFlag) { // validate the field name MetaField metaField = getMetaClass().getFieldByName(fieldName); CheckConditions.checkArgument(metaField != null, "Can't find meta field %s", fieldName); // get field bson & db name BasicDBObject fieldBsonObject = null; String dbValName = null;/*from w w w. ja v a2 s .c o m*/ if (metaField.isInternal()) { dbValName = metaField.getDbName(); fieldBsonObject = bsonObject; } else { dbValName = MetaField.VALUE_KEY; fieldBsonObject = getOrNewBsonField(metaField.getDbName()); } // set value to the field bson DataTypeEnum dataType = metaField.getDataType(); IDataTypeHandler handler = BsonDataTypeHandlerFactory.getHandler(dataType); CardinalityEnum cardinality = metaField.getCardinality(); boolean updated = false; if (setFlag) { List<?> valuesList = (List<?>) values; if (cardinality == CardinalityEnum.Many) { List<Object> bsonList = new ArrayList<Object>(); if (values != null) { for (Object val : valuesList) { Object bsonValue = handler.write(this, val, metaField); addWriteValue(dataType, bsonValue, bsonList); } } // for list set, force udpate ignore whethere entity added, since user might want to set empty updated = true; fieldBsonObject.put(dbValName, bsonList); } else { Object givenValue = (values == null || valuesList.isEmpty()) ? null : valuesList.get(0); Object bsonValue = handler.write(this, givenValue, metaField); updated |= addWriteValue(fieldBsonObject, dbValName, dataType, bsonValue); } } else { Object bsonValue = handler.write(this, values, metaField); if (cardinality == CardinalityEnum.Many) { @SuppressWarnings("unchecked") List<Object> bsonList = (List<Object>) (fieldBsonObject.get(dbValName)); if (bsonList == null) { bsonList = new ArrayList<Object>(); fieldBsonObject.put(dbValName, bsonList); } updated |= addWriteValue(dataType, bsonValue, bsonList); } else { updated |= addWriteValue(fieldBsonObject, dbValName, dataType, bsonValue); } } if (updated && !metaField.isInternal()) { bsonObject.put(metaField.getDbName(), fieldBsonObject); } }
From source file:com.ebay.cloud.cms.dalapi.persistence.impl.root.RootFieldModifyCommand.java
License:Apache License
private void buildArrayBody(DBObject modifyBody) { MetaField field = getField();/*w w w. j a v a 2 s. c o m*/ BasicDBObject enityObject = (BasicDBObject) getEntity().getNode(); BasicDBObject fieldObject = (BasicDBObject) enityObject.get(field.getDbName()); if (fieldObject != null) { Object givenValue = (fieldObject).get(V); if (givenValue != null) { BasicDBObject eachDbo = new BasicDBObject(); eachDbo.put("$each", givenValue); BasicDBObject addToSetDbo = new BasicDBObject(); addToSetDbo.put(field.getValueDbName(), eachDbo); modifyBody.put("$addToSet", addToSetDbo); // field length, only update when we do have updates BasicDBObject inc = (BasicDBObject) modifyBody.get("$set"); inc.put(field.getDbName() + DOT + FieldProperty.LENGTH.getDbName(), getEntity().getFieldLength(fieldName)); // field time stamp BasicDBObject set = (BasicDBObject) modifyBody.get("$set"); set.put(field.getDbName() + DOT + FieldProperty.TIMESTAMP.getDbName(), getEntity().getFieldTimestamp(fieldName)); } } }
From source file:com.ebay.cloud.cms.metadata.dataloader.MetadataDataLoader.java
License:Apache License
public void loadProperties(InputStream is) { DBCollection propertiesCollection = mongo.getDB(CMSConsts.SYS_DB) .getCollection(CMSConsts.PROPERTIES_COLLECTION); //load properties collection BasicDBObject cmsProperties = (BasicDBObject) loadBasonFromFile(is); for (String key : cmsProperties.keySet()) { DBObject obj = new BasicDBObject().append(key, cmsProperties.get(key)); propertiesCollection.insert(obj); }/*from w w w . j a v a 2s . c om*/ }
From source file:com.ebay.cloud.cms.metadata.mongo.MongoMetadataServiceImpl.java
License:Apache License
private MetaClass innerUpdateMetaClass(MetaClass metaClass, boolean updateGraph, boolean updateExistingField) { populateDbName(metaClass);//from w ww . j a v a2s . co m metaClass.setLastModified(new Date()); BasicDBObject object = (BasicDBObject) converter.toBson(metaClass); BasicDBObject query = new BasicDBObject(); query.append(MetaClass.NAME, metaClass.getName()); BasicDBObject update = new BasicDBObject(); BasicDBObject ups = new BasicDBObject(); Collection<MetaField> updateFields = metaClass.getClassFields(); //update fields BasicDBObject objectFields = (BasicDBObject) object.get("fields"); for (MetaField f : updateFields) { if (!f.isInternal()) { String fieldKey = "fields." + f.getName(); if (!updateExistingField) { query.append(fieldKey, new BasicDBObject(MongoOperand.exists, false)); } ups.append(fieldKey, objectFields.get(f.getName())); } } // update options BasicDBObject objectIndexes = (BasicDBObject) object.get("options"); Collection<IndexInfo> updateIndex = metaClass.getClassIndexes(); if (!updateIndex.isEmpty()) { BasicDBObject indexOptions = (BasicDBObject) objectIndexes.get("indexes"); for (IndexInfo index : updateIndex) { if (index.isInternal()) { continue; } String fieldKey = "options.indexes." + index.getIndexName(); query.append(fieldKey, new BasicDBObject(MongoOperand.exists, false)); ups.append(fieldKey, indexOptions.get(index.getIndexName())); } } // add optional fields if given addIfGiven(object, ups, "description"); if (object.containsField("parent")) { addIfGiven(object, ups, "parent"); addIfGiven(object, ups, "ancestors"); addIfGiven(object, ups, "parentVersion"); } addIfGiven(object, ups, "allowFullTableScan"); addIfGiven(object, ups, "embed"); addIfGiven(object, ups, "lastModified"); addIfGiven(object, ups, "inner"); update.append(MongoOperand.set, ups); BasicDBObject versionObject = new BasicDBObject(); versionObject.put("version", 1); update.put(MongoOperand.inc, versionObject); try { boolean updated = MongoUtils.wrapperUpdate(collection, query, update); if (!updated) { StringBuilder sb = new StringBuilder(); for (MetaField f : updateFields) { sb.append(f.getName()).append(","); } throw new MetaFieldExistsException(sb.toString()); } } catch (MongoException e) { throw new MongoOperationException(e); } cacheManager.deleteMetaClassFromCache(metaClass); MetaClass result = getMetaClass(metaClass.getName()); if (updateGraph) { getMetaClasses(new MetadataContext(true, true)); } return result; }
From source file:com.ebay.cloud.cms.metadata.mongo.MongoMetadataServiceImpl.java
License:Apache License
void addIfGiven(BasicDBObject object, BasicDBObject ups, String name) { if (object.containsField(name)) { ups.append(name, object.get(name)); } }
From source file:com.ebay.cloud.cms.metadata.mongo.MongoMetadataServiceImpl.java
License:Apache License
private void addMetaHistory(MetaClass meta, String operType, MetadataContext context) { saveMetaHistory(meta, operType, context); if (operType.equals("deleteMetaClass")) { return;/*from w w w . j av a2 s . co m*/ } // update the parent version in all children meta List<MetaClass> descendants = graph.getDescendants(meta); if (descendants.size() > 0) { Map<String, Integer> metaVersionMap = new HashMap<String, Integer>(); metaVersionMap.put(meta.getName(), Integer.valueOf(meta.getVersion() + 1)); String oldParent = null; String newParent = null; MetaClass newMeta = getMetaClass(meta.getName()); if (newMeta != null) { BasicDBObject newObject = (BasicDBObject) converter.toBson(newMeta); BasicDBObject oldObject = (BasicDBObject) converter.toBson(meta); if (!oldObject.containsField("parent") && newObject.containsField("parent")) { oldParent = null; newParent = (String) newObject.get("parent"); } else if (oldObject.containsField("parent") && !newObject.containsField("parent")) { oldParent = (String) oldObject.get("parent"); newParent = null; } else if (oldObject.containsField("parent") && newObject.containsField("parent") && !oldObject.get("parent").equals(newObject.get("parent"))) { oldParent = (String) oldObject.get("parent"); newParent = (String) newObject.get("parent"); } } // avoid endless loop by wrong descendants value boolean shrinking = true; while (descendants.size() > 0 && shrinking) { shrinking = false; for (int i = 0; i < descendants.size(); i++) { MetaClass desc = descendants.get(i); String name = desc.getParent(); Integer newVersion = metaVersionMap.get(name); if (newVersion != null) { // update descendant parentVersion MetaClass newDesc = new MetaClass(); newDesc.setName(desc.getName()); newDesc.setParent(name); newDesc.setParentVersion(newVersion.intValue()); List<String> ancestors = desc.getAncestors(); if (!org.apache.commons.lang.StringUtils.isEmpty(oldParent)) { ancestors.remove(oldParent); } if (!org.apache.commons.lang.StringUtils.isEmpty(newParent)) { ancestors.add(newParent); } newDesc.setAncestors(ancestors); innerUpdateMetaClass(newDesc, true, false); // save the descendant history saveMetaHistory(desc, "updateMetaClassByParentVersion", context); metaVersionMap.put(desc.getName(), Integer.valueOf(desc.getVersion() + 1)); descendants.remove(i); shrinking = true; } } } } }