package com.psg.dlsysinfo.dl_sysinfo_server.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import java.util.ArrayList;
import java.util.List;

@JsonIgnoreProperties(ignoreUnknown = true)
public class SystemInfoDTO {

    @JsonProperty("clientIdentifier")
    private String clientIdentifier;

    @JsonProperty("hostname")
    private String hostname;

    @JsonProperty("osName")
    private String osName;

    @JsonProperty("osVersion")
    private String osVersion;

    @JsonProperty("windowsVersion")
    private String windowsVersion;

    @JsonProperty("windowsBuild")
    private String windowsBuild;

    @JsonProperty("osArchitecture")
    private String osArchitecture;

    @JsonProperty("processorName")
    private String processorName;

    @JsonProperty("processorArchitecture")
    private String processorArchitecture;

    @JsonProperty("gpuName")
    private List<String> gpuNames;

    @JsonProperty("totalMemory")
    private String totalMemory;

    @JsonProperty("ipAddress")
    private String ipAddress;

    @JsonProperty("lastBootTime")
    private String lastBootTime;


    @JsonProperty("installedApplications")
    private List<InstalledAppDTO> installedApplications;

    @JsonProperty("drives")
    private List<DriveInfoDTO> drives = new ArrayList<>();

    @JsonProperty("ipAddresses")
    private List<IpAddressDTO> ipAddresses;




    public List<DriveInfoDTO> getDrives() {
        return drives;
    }

    public void setDrives(List<DriveInfoDTO> drives) {
        this.drives = drives;
    }

    public String getClientIdentifier() {
        return clientIdentifier;
    }

    public void setClientIdentifier(String clientIdentifier) {
        this.clientIdentifier = clientIdentifier;
    }

    public String getHostname() {
        return hostname;
    }

    public void setHostname(String hostname) {
        this.hostname = hostname;
    }

    public String getOsName() {
        return osName;
    }

    public void setOsName(String osName) {
        this.osName = osName;
    }

    public String getOsVersion() {
        return osVersion;
    }

    public void setOsVersion(String osVersion) {
        this.osVersion = osVersion;
    }

    public String getWindowsVersion() {
        return windowsVersion;
    }

    public void setWindowsVersion(String windowsVersion) {
        this.windowsVersion = windowsVersion;
    }

    public String getWindowsBuild() {
        return windowsBuild;
    }

    public void setWindowsBuild(String windowsBuild) {
        this.windowsBuild = windowsBuild;
    }

    public String getOsArchitecture() {
        return osArchitecture;
    }

    public void setOsArchitecture(String osArchitecture) {
        this.osArchitecture = osArchitecture;
    }

    public String getProcessorName() {
        return processorName;
    }

    public void setProcessorName(String processorName) {
        this.processorName = processorName;
    }

    public String getProcessorArchitecture() {
        return processorArchitecture;
    }

    public void setProcessorArchitecture(String processorArchitecture) {
        this.processorArchitecture = processorArchitecture;
    }

    public List<String> getGpuNames() {
        return gpuNames;
    }

    public void setGpuNames(List<String> gpuNames) {
        this.gpuNames = gpuNames;
    }

    public String getTotalMemory() {
        return totalMemory;
    }

    public void setTotalMemory(String totalMemory) {
        this.totalMemory = totalMemory;
    }

    public List<IpAddressDTO> getIpAddresses() {
        return ipAddresses;
    }
    public void setIpAddresses(List<IpAddressDTO> ipAddresses) {
        this.ipAddresses = ipAddresses;
    }


    public String getLastBootTime() {
        return lastBootTime;
    }

    public void setLastBootTime(String lastBootTime) {
        this.lastBootTime = lastBootTime;
    }



    public List<InstalledAppDTO> getInstalledApplications() {
        return installedApplications;
    }

    public void setInstalledApplications(List<InstalledAppDTO> installedApplications) {
        this.installedApplications = installedApplications;
    }
}
