package org.jumbodb.database.service.management.status; import org.apache.commons.io.IOUtils; import org.jumbodb.connector.JumboConstants; import org.jumbodb.database.service.configuration.JumboConfiguration; import org.jumbodb.database.service.management.status.dto.ServerInformation; import org.jumbodb.database.service.statistics.GlobalStatistics; import java.io.IOException; import java.io.InputStream; import java.text.DateFormat; import java.text.NumberFormat; import java.util.Properties; /** * User: carsten * Date: 4/3/13 * Time: 8:06 PM */ public class StatusService { private JumboConfiguration config; public StatusService(JumboConfiguration config) { this.config = config; } public ServerInformation getStatus() { Runtime runtime = Runtime.getRuntime(); NumberFormat format = NumberFormat.getInstance(); DateFormat dateFormat = DateFormat.getDateTimeInstance(); long maxMemory = runtime.maxMemory(); long allocatedMemory = runtime.totalMemory(); long freeMemory = runtime.freeMemory(); long divideMB = 1024 * 1024; long indexDiskTotalSpace = config.getIndexPath().getTotalSpace(); long indexDiskFreeSpace = config.getIndexPath().getFreeSpace(); long dataDiskTotalSpace = config.getDataPath().getTotalSpace(); long dataDiskFreeSpace = config.getDataPath().getFreeSpace(); ServerInformation status = new ServerInformation(); status.setAllocatedMemory(format.format(allocatedMemory / divideMB) + " MB"); status.setDataPath(config.getDataPath().getAbsolutePath()); status.setFreeMemory(format.format(freeMemory / divideMB) + " MB"); status.setImportPort(config.getImportPort()); status.setIndexPath(config.getIndexPath().getAbsolutePath()); status.setMaximumMemory(format.format(maxMemory / divideMB) + " MB"); status.setNumberOfQueries(GlobalStatistics.getNumberOfQueries()); status.setNumberOfResults(GlobalStatistics.getNumberOfResults()); status.setQueryPort(config.getQueryPort()); status.setStartupTime(dateFormat.format(GlobalStatistics.getStartupTime())); status.setTotalFreeMemory(format.format((freeMemory + (maxMemory - allocatedMemory)) / divideMB) + " MB"); status.setQueryProtocolVersion(String.valueOf(JumboConstants.QUERY_PROTOCOL_VERSION)); status.setImportProtocolVersion(String.valueOf(JumboConstants.IMPORT_PROTOCOL_VERSION)); status.setDataDiskFreeSpace(format.format(dataDiskFreeSpace / divideMB) + " MB"); status.setDataDiskTotalSpace(format.format(dataDiskTotalSpace / divideMB) + " MB"); status.setDataDiskUsedSpacePerc((double)(((dataDiskTotalSpace - dataDiskFreeSpace) * 100) / dataDiskTotalSpace)); status.setDataDiskUsedSpace(format.format((dataDiskTotalSpace - dataDiskFreeSpace) / divideMB) + " MB"); status.setIndexDiskFreeSpace(format.format(indexDiskFreeSpace / divideMB) + " MB"); status.setIndexDiskTotalSpace(format.format(indexDiskTotalSpace / divideMB) + " MB"); status.setIndexDiskUsedSpacePerc((double)(((indexDiskTotalSpace - indexDiskFreeSpace) * 100) / indexDiskTotalSpace)); status.setIndexDiskUsedSpace(format.format((indexDiskTotalSpace - indexDiskFreeSpace) / divideMB) + " MB"); return status; } }