Example usage for com.mongodb BasicDBObject get

List of usage examples for com.mongodb BasicDBObject get

Introduction

In this page you can find the example usage for com.mongodb BasicDBObject get.

Prototype

public Object get(final String key) 

Source Link

Document

Gets a value from this object

Usage

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;
                }
            }
        }
    }
}