All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.neo4j.ogm.drivers.embedded.response.StatisticsModelAdapter Maven / Gradle / Ivy

/*
 * Copyright (c) 2002-2016 "Neo Technology,"
 * Network Engine for Objects in Lund AB [http://neotechnology.com]
 *
 * This product is licensed to you under the Apache License, Version 2.0 (the "License").
 * You may not use this product except in compliance with the License.
 *
 * This product may include a number of subcomponents with
 * separate copyright notices and license terms. Your use of the source
 * code for these subcomponents is subject to the terms and
 *  conditions of the subcomponent's license, as noted in the LICENSE file.
 */

package org.neo4j.ogm.drivers.embedded.response;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.neo4j.graphdb.Result;
import org.neo4j.ogm.exception.ResultProcessingException;
import org.neo4j.ogm.json.ObjectMapperFactory;
import org.neo4j.ogm.response.model.QueryStatisticsModel;
import org.neo4j.ogm.result.adapter.ResultAdapter;

/**
 * @author vince
 */
public class StatisticsModelAdapter implements ResultAdapter {

	protected static final ObjectMapper mapper = ObjectMapperFactory.objectMapper();

	@Override
	public QueryStatisticsModel adapt(Result response) {
		try {
			org.neo4j.graphdb.QueryStatistics statistics = response.getQueryStatistics();
			String stats = mapper.writeValueAsString(statistics);
			stats = stats.replace("Deleted", "_deleted");
			stats = stats.replace("Added", "_added");
			stats = stats.replace("Updates", "_updates");
			stats = stats.replace("Created", "_created");
			stats = stats.replace("Set", "_set");
			stats = stats.replace("Removed", "_removed");
			stats = stats.replace("deletedNodes", "nodes_deleted");
			stats = stats.replace("deletedRelationships", "relationships_deleted");

			//Modify the string to include contains_updates as it is a calculated value
			String containsUpdates = ",\"contains_updates\":" + statistics.containsUpdates();
			int closingBraceIndex = stats.lastIndexOf("}");
			stats = stats.substring(0, closingBraceIndex) + containsUpdates + "}";

			return mapper.readValue(stats, QueryStatisticsModel.class);
		} catch (Exception e) {
			throw new ResultProcessingException("Could not read response statistics", e);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy