Feature extend system management resource with custom data (#423)
* Added map to system management and mgmt resource to extend the the rest resource with custom data Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com> * Lazy initialization of hash map and typo fix Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com> * Renamed the map to usageData Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com> * Adapted hashcode and equals and now returning empty map Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com> * Reduced duplicated code Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com> * Removed the if statement Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com> * Added separated method for lazy initialization Signed-off-by: Jonathan Philip Knoblauch <JonathanPhilip.Knoblauch@bosch-si.com>
This commit is contained in:
committed by
Michael Hirsch
parent
a00ea49e47
commit
d553716cda
@@ -8,6 +8,8 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.mgmt.json.model.systemmanagement;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||
@@ -25,6 +27,7 @@ public class MgmtSystemTenantServiceUsage {
|
||||
private long artifacts;
|
||||
private long actions;
|
||||
private long overallArtifactVolumeInBytes;
|
||||
private Map<String, String> usageData;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
@@ -71,4 +74,12 @@ public class MgmtSystemTenantServiceUsage {
|
||||
return tenantName;
|
||||
}
|
||||
|
||||
public Map<String, String> getUsageData() {
|
||||
return usageData;
|
||||
}
|
||||
|
||||
public void setUsageData(final Map<String, String> usageData) {
|
||||
this.usageData = usageData;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -87,7 +87,9 @@ public class MgmtSystemManagementResource implements MgmtSystemManagementRestApi
|
||||
result.setArtifacts(tenant.getArtifacts());
|
||||
result.setOverallArtifactVolumeInBytes(tenant.getOverallArtifactVolumeInBytes());
|
||||
result.setTargets(tenant.getTargets());
|
||||
|
||||
if (!tenant.getUsageData().isEmpty()) {
|
||||
result.setUsageData(tenant.getUsageData());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,11 @@
|
||||
*/
|
||||
package org.eclipse.hawkbit.repository.report.model;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
/**
|
||||
* System usage stats element for a tenant.
|
||||
*
|
||||
@@ -19,6 +24,7 @@ public class TenantUsage {
|
||||
private long artifacts;
|
||||
private long actions;
|
||||
private long overallArtifactVolumeInBytes;
|
||||
private Map<String, String> usageData;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
@@ -26,85 +32,74 @@ public class TenantUsage {
|
||||
* @param tenantName
|
||||
*/
|
||||
public TenantUsage(final String tenantName) {
|
||||
super();
|
||||
this.tenantName = tenantName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return name of the tenant
|
||||
*/
|
||||
public String getTenantName() {
|
||||
return tenantName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return number of targets of the tenant
|
||||
*/
|
||||
public long getTargets() {
|
||||
return targets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param targets
|
||||
* of the tenant
|
||||
* @return updated tenant stats element
|
||||
*/
|
||||
public TenantUsage setTargets(final long targets) {
|
||||
this.targets = targets;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return number of undeleted artifacts of the tenant
|
||||
*/
|
||||
public long getArtifacts() {
|
||||
return artifacts;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param artifacts
|
||||
* of tenant
|
||||
* @return updated tenant stats element
|
||||
*/
|
||||
public Map<String, String> getUsageData() {
|
||||
return Collections.unmodifiableMap(getLazyUsageData());
|
||||
}
|
||||
|
||||
private Map<String, String> getLazyUsageData() {
|
||||
if (usageData == null) {
|
||||
usageData = Maps.newHashMap();
|
||||
}
|
||||
return usageData;
|
||||
}
|
||||
|
||||
public TenantUsage setArtifacts(final long artifacts) {
|
||||
this.artifacts = artifacts;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return current overallArtifactVolumeInBytes
|
||||
*/
|
||||
public long getOverallArtifactVolumeInBytes() {
|
||||
return overallArtifactVolumeInBytes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param overallArtifactVolumeInBytes
|
||||
* of the tenant in bytes
|
||||
* @return updated tenant stats element
|
||||
*/
|
||||
public TenantUsage setOverallArtifactVolumeInBytes(final long overallArtifactVolumeInBytes) {
|
||||
this.overallArtifactVolumeInBytes = overallArtifactVolumeInBytes;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return number of actions of tenant
|
||||
*/
|
||||
public long getActions() {
|
||||
return actions;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param actions
|
||||
* of the tenant
|
||||
* @return updated tenant stats element
|
||||
*/
|
||||
public TenantUsage setActions(final long actions) {
|
||||
this.actions = actions;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add a key and value as usage data to the system usage stats.
|
||||
*
|
||||
* @param key
|
||||
* the key to set
|
||||
* @param value
|
||||
* the value to set
|
||||
* @return tenant stats element with new usage added
|
||||
*/
|
||||
public TenantUsage addUsageData(final String key, final String value) {
|
||||
getLazyUsageData().put(key, value);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
@@ -114,6 +109,7 @@ public class TenantUsage {
|
||||
result = prime * result + (int) (overallArtifactVolumeInBytes ^ (overallArtifactVolumeInBytes >>> 32));
|
||||
result = prime * result + (int) (targets ^ (targets >>> 32));
|
||||
result = prime * result + ((tenantName == null) ? 0 : tenantName.hashCode());
|
||||
result = prime * result + ((usageData == null) ? 0 : usageData.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -141,6 +137,9 @@ public class TenantUsage {
|
||||
if (targets != other.targets) {
|
||||
return false;
|
||||
}
|
||||
if (!this.getUsageData().equals(other.getUsageData())) {
|
||||
return false;
|
||||
}
|
||||
if (tenantName == null) {
|
||||
if (other.tenantName != null) {
|
||||
return false;
|
||||
@@ -154,7 +153,8 @@ public class TenantUsage {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TenantUsage [tenantName=" + tenantName + ", targets=" + targets + ", artifacts=" + artifacts
|
||||
+ ", actions=" + actions + ", overallArtifactVolumeInBytes=" + overallArtifactVolumeInBytes + "]";
|
||||
+ ", actions=" + actions + ", overallArtifactVolumeInBytes=" + overallArtifactVolumeInBytes
|
||||
+ ", usageData=" + usageData + "]";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user