package org.neo4j.kernel.management; import java.io.File; public class StoreFile extends Neo4jJmx implements StoreFileMBean { private static final String NODE_STORE = "neostore.nodestore.db"; private static final String RELATIONSHIP_STORE = "neostore.relationshipstore.db"; private static final String PROPERTY_STORE = "neostore.propertystore.db"; private static final String ARRAY_STORE = "neostore.propertystore.db.arrays"; private static final String STRING_STORE = "neostore.propertystore.db.strings"; private static final String LOGICAL_LOG1 = "nioneo_logical.log.1"; private static final String LOGICAL_LOG2 = "nioneo_logical.log.2"; private final File storePath; StoreFile( int instanceId, File storePath ) { super( instanceId ); this.storePath = storePath; } public long getTotalStoreSize() { return sizeOf( storePath ); } public long getLogicalLogSize() { File logicalLog = new File( storePath, LOGICAL_LOG1 ); if ( !logicalLog.isFile() ) { logicalLog = new File( storePath, LOGICAL_LOG2 ); } return sizeOf( logicalLog ); } private static long sizeOf( File file ) { if ( file.isFile() ) { return file.length(); } else if ( file.isDirectory() ) { long size = 0; for ( File child : file.listFiles() ) { size += sizeOf( child ); } return size; } return 0; } private long sizeOf( String name ) { return sizeOf( new File( storePath, name ) ); } public long getArrayStoreSize() { return sizeOf( ARRAY_STORE ); } public long getNodeStoreSize() { return sizeOf( NODE_STORE ); } public long getPropertyStoreSize() { return sizeOf( PROPERTY_STORE ); } public long getRelationshipStoreSize() { return sizeOf( RELATIONSHIP_STORE ); } public long getStringStoreSize() { return sizeOf( STRING_STORE ); } }