Example usage for com.mongodb.client.model Updates set

List of usage examples for com.mongodb.client.model Updates set

Introduction

In this page you can find the example usage for com.mongodb.client.model Updates set.

Prototype

public static <TItem> Bson set(final String fieldName, @Nullable final TItem value) 

Source Link

Document

Creates an update that sets the value of the field with the given name to the given value.

Usage

From source file:com.creactiviti.piper.core.task.MongoCounterRepository.java

License:Apache License

@Override
public void set(String aCounterName, long aValue) {
    collection/*from  w ww . j  a v  a 2  s.  c om*/
            .findOneAndUpdate(eq("_id", aCounterName),
                    combine(Updates.set(DSL.VALUE, aValue), setOnInsert("_id", aCounterName),
                            setOnInsert(DSL.CREATE_TIME, new Date())),
                    new FindOneAndUpdateOptions().upsert(true));
}

From source file:com.epam.dlab.backendapi.dao.EnvStatusDAO.java

License:Apache License

private void updateEdgeStatus(String user, Document edge, String instanceId, EnvResource r) {
    LOGGER.trace("Update EDGE status for user {} with instance_id {} from {} to {}", user, instanceId,
            edge.getString(EDGE_STATUS), r.getStatus());
    String oldStatus = edge.getString(EDGE_STATUS);
    UserInstanceStatus oStatus = (oldStatus == null ? UserInstanceStatus.CREATING
            : UserInstanceStatus.of(oldStatus));
    UserInstanceStatus status = getInstanceNewStatus(oStatus, r.getStatus());
    LOGGER.trace("EDGE status translated for user {} with instanceId {} from {} to {}", user, instanceId,
            r.getStatus(), status);/*from w w  w  .  ja  va2  s.com*/
    if (oStatus != status) {
        LOGGER.debug("EDGE status will be updated from {} to {}", oldStatus, status);
        updateOne(USER_EDGE, eq(ID, user), Updates.set(EDGE_STATUS, status.toString()));
    }
}

From source file:com.epam.dlab.backendapi.dao.EnvStatusDAO.java

License:Apache License

/**
 * Update the status of exploratory if it needed.
 *
 * @param user            the user name//w w  w  . j a  v a2  s .  c  o m
 * @param exploratoryName the name of exploratory
 * @param oldStatus       old status
 * @param newStatus       new status
 */
private void updateExploratoryStatus(String user, String exploratoryName, String oldStatus, String newStatus) {
    LOGGER.trace("Update exploratory status for user {} with exploratory {} from {} to {}", user,
            exploratoryName, oldStatus, newStatus);
    UserInstanceStatus oStatus = UserInstanceStatus.of(oldStatus);
    UserInstanceStatus status = getInstanceNewStatus(oStatus, newStatus);
    LOGGER.trace("Exploratory status translated for user {} with exploratory {} from {} to {}", user,
            exploratoryName, newStatus, status);

    if (oStatus != status) {
        LOGGER.debug("Exploratory status for user {} with exploratory {} will be updated from {} to {}", user,
                exploratoryName, oldStatus, status);
        updateOne(USER_INSTANCES, exploratoryCondition(user, exploratoryName),
                Updates.set(STATUS, status.toString()));
    }
}

From source file:com.epam.dlab.backendapi.dao.KeyDAO.java

License:Apache License

/**
 * Updates the status of EDGE node.// w  ww.j  ava 2  s.  c o  m
 *
 * @param user   user name
 * @param status status of EDGE node
 */
public void updateEdgeStatus(String user, String status) {
    updateOne(USER_EDGE, eq(ID, user), Updates.set(EDGE_STATUS, status));
}

From source file:com.epam.dlab.backendapi.dao.KeyDAO.java

License:Apache License

/**
 * Updates the field 'reupload_key_required' of EDGE node.
 *
 * @param user                user name/*from  w  w w.ja va2s.  c  om*/
 * @param reuploadKeyRequired true/false
 * @param edgeStatuses        allowable edge statuses
 */
public void updateEdgeReuploadKey(String user, boolean reuploadKeyRequired,
        UserInstanceStatus... edgeStatuses) {
    updateOne(USER_EDGE, and(eq(ID, user), in(EDGE_STATUS, statusList(edgeStatuses))),
            Updates.set(REUPLOAD_KEY_REQUIRED, reuploadKeyRequired));
}

From source file:com.epam.dlab.backendapi.dao.RequestIdDAO.java

License:Apache License

public void resetExpirationTime() {
    Date time = new Date();
    getCollection(REQUEST_ID).updateMany(new Document(), Updates.set(EXPIRATION_TIME, time));
}

From source file:com.epam.dlab.billing.azure.AzureBillingDetailsService.java

License:Apache License

private void updateBillingDetails(String user, List<Document> billingDetails) {
    if (!billingDetails.isEmpty()) {
        Map<String, List<Document>> info = new HashMap<>();

        Consumer<Document> aggregator = e -> {

            String notebookId = e.getString(MongoKeyWords.EXPLORATORY_ID);
            List<Document> documents = info.get(notebookId);
            if (documents == null) {
                documents = new ArrayList<>();
            }/*from ww w.j av  a 2s.c  o m*/

            documents.add(e);
            info.put(notebookId, documents);
        };

        billingDetails.stream().filter(
                e -> DlabResourceType.EXPLORATORY.toString().equals(e.getString(MongoKeyWords.RESOURCE_TYPE)))
                .forEach(aggregator);

        billingDetails.stream().filter(
                e -> DlabResourceType.COMPUTATIONAL.toString().equals(e.getString(MongoKeyWords.RESOURCE_TYPE)))
                .forEach(aggregator);

        billingDetails.stream().filter(
                e -> DlabResourceType.VOLUME.toString().equals(e.getString(MongoKeyWords.RESOURCE_TYPE)))
                .forEach(aggregator);

        for (Map.Entry<String, List<Document>> entry : info.entrySet()) {
            double sum = entry.getValue().stream().mapToDouble(e -> e.getDouble(MongoKeyWords.COST)).sum();

            entry.getValue().forEach(e -> e.put(MongoKeyWords.COST_STRING,
                    BillingCalculationUtils.formatDouble(e.getDouble(MongoKeyWords.COST))));

            log.debug("Update billing for notebook {}, cost is {} {}", entry.getKey(), sum, currencyCode);

            Bson updates = Updates.combine(
                    Updates.set(MongoKeyWords.COST_STRING, BillingCalculationUtils.formatDouble(sum)),
                    Updates.set(MongoKeyWords.COST, sum),
                    Updates.set(MongoKeyWords.CURRENCY_CODE, currencyCode),
                    Updates.set(MongoKeyWords.BILLING_DETAILS, entry.getValue()));

            UpdateResult updateResult = mongoDbBillingClient.getDatabase()
                    .getCollection(MongoKeyWords.NOTEBOOK_COLLECTION)
                    .updateOne(Filters.and(Filters.eq(MongoKeyWords.DLAB_USER, user),
                            Filters.eq(MongoKeyWords.EXPLORATORY_ID_OLD, entry.getKey())), updates);

            log.debug("Update result for {}/{} is {}", user, entry.getKey(), updateResult);
        }
    } else {
        log.warn("No billing details found for notebooks for user {}", user);
    }
}

From source file:com.epam.dlab.mongo.DlabResourceTypeDAO.java

License:Apache License

/**
 * Update exploratory cost in Mongo DB./* ww  w  . ja  v  a2  s  .com*/
 *
 * @param user            the name of user.
 * @param exploratoryName id of exploratory.
 */
private void updateExploratoryCost(String user, String exploratoryName) {
    LOGGER.debug("Update explorartory {} cost for user {}", exploratoryName, user);
    List<? extends Bson> pipeline = Arrays.asList(
            match(and(eq(FIELD_USER, user), eq(FIELD_EXPLORATORY_NAME, exploratoryName))),
            group(getGrouppingFields(FIELD_DLAB_RESOURCE_ID, ReportLine.FIELD_PRODUCT,
                    ReportLine.FIELD_RESOURCE_TYPE, ReportLine.FIELD_CURRENCY_CODE),
                    sum(ReportLine.FIELD_COST, "$" + ReportLine.FIELD_COST),
                    min(FIELD_USAGE_DATE_START, "$" + ReportLine.FIELD_USAGE_DATE),
                    max(FIELD_USAGE_DATE_END, "$" + ReportLine.FIELD_USAGE_DATE)),
            sort(new Document(FIELD_ID + "." + FIELD_DLAB_RESOURCE_ID, 1)
                    .append(FIELD_ID + "." + ReportLine.FIELD_PRODUCT, 1)));
    AggregateIterable<Document> docs = connection.getCollection(COLLECTION_BILLING).aggregate(pipeline);
    LinkedList<Document> billing = new LinkedList<>();
    ResourceItemList resources = getResourceList();
    Double costTotal = null;
    String currencyCode = null;
    for (Document d : docs) {
        Document id = (Document) d.get(FIELD_ID);
        double cost = BillingCalculationUtils.round(d.getDouble(ReportLine.FIELD_COST), 2);
        costTotal = (costTotal == null ? cost : costTotal + cost);
        if (currencyCode == null) {
            currencyCode = id.getString(ReportLine.FIELD_CURRENCY_CODE);
        }

        Document total = new Document()
                .append(FIELD_RESOURCE_NAME,
                        resources.getById(id.getString(FIELD_DLAB_RESOURCE_ID)).getResourceName())
                .append(ReportLine.FIELD_PRODUCT, id.getString(ReportLine.FIELD_PRODUCT))
                .append(ReportLine.FIELD_RESOURCE_TYPE, id.getString(ReportLine.FIELD_RESOURCE_TYPE))
                .append(ReportLine.FIELD_COST, BillingCalculationUtils.formatDouble(cost))
                .append(ReportLine.FIELD_CURRENCY_CODE, id.getString(ReportLine.FIELD_CURRENCY_CODE))
                .append(FIELD_USAGE_DATE_START, d.getString(FIELD_USAGE_DATE_START))
                .append(FIELD_USAGE_DATE_END, d.getString(FIELD_USAGE_DATE_END));
        billing.add(total);
    }

    LOGGER.debug("Total explorartory {} cost for user {} is {} {}, detail count is {}", exploratoryName, user,
            costTotal, currencyCode, billing.size());
    billing.sort(new BillingComparator());

    MongoCollection<Document> cExploratory = connection.getCollection(COLLECTION_USER_INSTANCES);
    Bson values = Updates.combine(
            Updates.set(ReportLine.FIELD_COST, BillingCalculationUtils.formatDouble(costTotal)),
            Updates.set(FIELD_CURRENCY_CODE, currencyCode),
            Updates.set(COLLECTION_BILLING, (!billing.isEmpty() ? billing : null)));
    cExploratory.updateOne(and(and(eq(FIELD_USER, user), eq(FIELD_EXPLORATORY_NAME, exploratoryName))), values);
}

From source file:com.epam.dlab.mongo.DlabResourceTypeDAO.java

License:Apache License

/**
 * Update EDGE cost in Mongo DB./*w  ww  .ja v a  2  s  . c o m*/
 *
 * @param user the name of user.
 */
private void updateEdgeCost(String user) {
    List<? extends Bson> pipeline = Arrays.asList(
            match(and(eq(FIELD_USER, user), eq(FIELD_EXPLORATORY_NAME, null))),
            group(getGrouppingFields(ReportLine.FIELD_CURRENCY_CODE),
                    sum(ReportLine.FIELD_COST, "$" + ReportLine.FIELD_COST)));
    AggregateIterable<Document> docs = connection.getCollection(COLLECTION_BILLING_TOTAL).aggregate(pipeline);

    MongoCollection<Document> cEdge = connection.getCollection(COLLECTION_USER_EDGE);
    for (Document d : docs) {
        Document id = (Document) d.get(FIELD_ID);
        Bson values = Updates.combine(
                Updates.set(ReportLine.FIELD_COST,
                        BillingCalculationUtils.round(d.getDouble(ReportLine.FIELD_COST), 2)),
                Updates.set(FIELD_CURRENCY_CODE, id.get(ReportLine.FIELD_CURRENCY_CODE)));
        cEdge.updateOne(eq(FIELD_ID, user), values);
    }
}

From source file:com.exorath.exodata.impl.IExoDocument.java

License:Apache License

@Override
public Observable<UpdateResult> set(String key, Object value) {
    return update(Updates.set(key, value), true);
}