/**
* Oshi (https://github.com/oshi/oshi)
*
* Copyright (c) 2010 - 2017 The Oshi Project Team
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Maintainers:
* dblock[at]dblock[dot]org
* widdis[at]gmail[dot]com
* enrico.bianchi[at]gmail[dot]com
*
* Contributors:
* https://github.com/oshi/oshi/graphs/contributors
*/
package oshi.json.hardware.impl;
import java.util.Properties;
import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonBuilderFactory;
import javax.json.JsonObject;
import javax.json.JsonObjectBuilder;
import oshi.json.hardware.CentralProcessor;
import oshi.json.json.AbstractOshiJsonObject;
import oshi.json.json.NullAwareJsonObjectBuilder;
import oshi.json.util.PropertiesUtil;
/**
* Wrapper class to implement CentralProcessor interface with platform-specific
* objects
*/
public class CentralProcessorImpl extends AbstractOshiJsonObject implements CentralProcessor {
private static final long serialVersionUID = 1L;
private transient JsonBuilderFactory jsonFactory = Json.createBuilderFactory(null);
private oshi.hardware.CentralProcessor processor;
/**
* Creates a new platform-specific CentralProcessor object wrapping the
* provided argument
*
* @param processor
* a platform-specific CentralProcessor object
*/
public CentralProcessorImpl(oshi.hardware.CentralProcessor processor) {
this.processor = processor;
}
/**
* {@inheritDoc}
*/
@Override
public String getVendor() {
return this.processor.getVendor();
}
/**
* {@inheritDoc}
*/
@Override
public void setVendor(String vendor) {
this.processor.setVendor(vendor);
}
/**
* {@inheritDoc}
*/
@Override
public String getName() {
return this.processor.getName();
}
/**
* {@inheritDoc}
*/
@Override
public void setName(String name) {
this.processor.setName(name);
}
/**
* {@inheritDoc}
*/
@Override
public String getProcessorID() {
return this.processor.getProcessorID();
}
/**
* {@inheritDoc}
*/
@Override
public void setProcessorID(String processorID) {
this.processor.setProcessorID(processorID);
}
/**
* {@inheritDoc}
*/
@Override
public long getVendorFreq() {
return this.processor.getVendorFreq();
}
/**
* {@inheritDoc}
*/
@Override
public void setVendorFreq(long freq) {
this.processor.setVendorFreq(freq);
}
/**
* {@inheritDoc}
*/
@Override
public String getIdentifier() {
return this.processor.getIdentifier();
}
/**
* {@inheritDoc}
*/
@Override
public void setIdentifier(String identifier) {
this.processor.setIdentifier(identifier);
}
/**
* {@inheritDoc}
*/
@Override
public boolean isCpu64bit() {
return this.processor.isCpu64bit();
}
/**
* {@inheritDoc}
*/
@Override
public void setCpu64(boolean cpu64) {
this.processor.setCpu64(cpu64);
}
/**
* {@inheritDoc}
*/
@Override
public String getStepping() {
return this.processor.getStepping();
}
/**
* {@inheritDoc}
*/
@Override
public void setStepping(String stepping) {
this.processor.setStepping(stepping);
}
/**
* {@inheritDoc}
*/
@Override
public String getModel() {
return this.processor.getModel();
}
/**
* {@inheritDoc}
*/
@Override
public void setModel(String model) {
this.processor.setModel(model);
}
/**
* {@inheritDoc}
*/
@Override
public String getFamily() {
return this.processor.getFamily();
}
/**
* {@inheritDoc}
*/
@Override
public void setFamily(String family) {
this.processor.setFamily(family);
}
/**
* {@inheritDoc}
*/
@Override
public double getSystemCpuLoadBetweenTicks() {
return this.processor.getSystemCpuLoadBetweenTicks();
}
/**
* {@inheritDoc}
*/
@Override
public long[] getSystemCpuLoadTicks() {
return this.processor.getSystemCpuLoadTicks();
}
/**
* {@inheritDoc}
*/
@Override
public double getSystemCpuLoad() {
return this.processor.getSystemCpuLoad();
}
/**
* {@inheritDoc}
*/
@Override
public double getSystemLoadAverage() {
return this.processor.getSystemLoadAverage();
}
/**
* {@inheritDoc}
*/
@Override
public double[] getSystemLoadAverage(int nelem) {
return this.processor.getSystemLoadAverage(nelem);
}
/**
* {@inheritDoc}
*/
@Override
public double[] getProcessorCpuLoadBetweenTicks() {
return this.processor.getProcessorCpuLoadBetweenTicks();
}
/**
* {@inheritDoc}
*/
@Override
public long[][] getProcessorCpuLoadTicks() {
return this.processor.getProcessorCpuLoadTicks();
}
/**
* {@inheritDoc}
*/
@Override
public long getSystemUptime() {
return this.processor.getSystemUptime();
}
/**
* {@inheritDoc}
*/
@Override
@Deprecated
public String getSystemSerialNumber() {
return this.processor.getSystemSerialNumber();
}
/**
* {@inheritDoc}
*/
@Override
public int getLogicalProcessorCount() {
return this.processor.getLogicalProcessorCount();
}
/**
* {@inheritDoc}
*/
@Override
public int getPhysicalProcessorCount() {
return this.processor.getPhysicalProcessorCount();
}
/**
* {@inheritDoc}
*/
@Override
public JsonObject toJSON(Properties properties) {
JsonObjectBuilder json = NullAwareJsonObjectBuilder.wrap(this.jsonFactory.createObjectBuilder());
if (PropertiesUtil.getBoolean(properties, "hardware.processor.name")) {
json.add("name", getName());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.physicalProcessorCount")) {
json.add("physicalProcessorCount", getPhysicalProcessorCount());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.logicalProcessorCount")) {
json.add("logicalProcessorCount", getLogicalProcessorCount());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.vendor")) {
json.add("vendor", getVendor());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.vendorFreq")) {
json.add("vendorFreq", getVendorFreq());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.processorID")) {
json.add("processorID", getProcessorID());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.identifier")) {
json.add("identifier", getIdentifier());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.cpu64bit")) {
json.add("cpu64bit", isCpu64bit());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.family")) {
json.add("family", getFamily());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.model")) {
json.add("model", getModel());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.stepping")) {
json.add("stepping", getStepping());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.systemCpuLoadBetweenTicks")) {
json.add("systemCpuLoadBetweenTicks", getSystemCpuLoadBetweenTicks());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.systemCpuLoadTicks")) {
JsonArrayBuilder systemCpuLoadTicksArrayBuilder = this.jsonFactory.createArrayBuilder();
for (long ticks : getSystemCpuLoadTicks()) {
systemCpuLoadTicksArrayBuilder.add(ticks);
}
json.add("systemCpuLoadTicks", systemCpuLoadTicksArrayBuilder.build());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.systemCpuLoad")) {
json.add("systemCpuLoad", getSystemCpuLoad());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.systemLoadAverage")) {
json.add("systemLoadAverage", getSystemLoadAverage());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.systemLoadAverages")) {
JsonArrayBuilder systemLoadAverageArrayBuilder = this.jsonFactory.createArrayBuilder();
for (double avg : getSystemLoadAverage(3)) {
systemLoadAverageArrayBuilder.add(avg);
}
json.add("systemLoadAverages", systemLoadAverageArrayBuilder.build());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.processorCpuLoadBetweenTicks")) {
JsonArrayBuilder processorCpuLoadBetweenTicksArrayBuilder = this.jsonFactory.createArrayBuilder();
for (double load : getProcessorCpuLoadBetweenTicks()) {
processorCpuLoadBetweenTicksArrayBuilder.add(load);
}
json.add("processorCpuLoadBetweenTicks", processorCpuLoadBetweenTicksArrayBuilder.build());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.processorCpuLoadTicks")) {
JsonArrayBuilder processorCpuLoadTicksArrayBuilder = this.jsonFactory.createArrayBuilder();
for (long[] procTicks : getProcessorCpuLoadTicks()) {
JsonArrayBuilder processorTicksArrayBuilder = this.jsonFactory.createArrayBuilder();
for (long ticks : procTicks) {
processorTicksArrayBuilder.add(ticks);
}
processorCpuLoadTicksArrayBuilder.add(processorTicksArrayBuilder.build());
}
json.add("processorCpuLoadTicks", processorCpuLoadTicksArrayBuilder.build());
}
if (PropertiesUtil.getBoolean(properties, "hardware.processor.systemUptime")) {
json.add("systemUptime", getSystemUptime());
}
return json.build();
}
@Override
public String toString() {
return this.processor.toString();
}
}