summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/instance/GitblitInstanceStat.java
blob: 15ae6fa797f97b4a01edf594cef566670b1df8fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package com.gitblit.instance;

import com.gitblit.models.ServerStatus;

import java.util.Date;

/**
 * GitblitInstanceStat collects the static information about a Gitblit instance,
 * such as its version, type, operating system and other static data.
 *
 */
class GitblitInstanceStat
{

    enum GitblitInstanceType {
        GO,
        WAR,
        EXPRESS,
        DOCKER
    }

    final GitblitInstanceType instanceType;

    String version;
    Date startTs;
    String os;
    String osName;
    String osVersion;
    String osArch;
    String javaVersion;
    String javaVendor;
    String javaRuntimeVersion;
    String javaRuntimeName;
    String javaVmVersion;
    String javaVmName;
    long maxMem;


    GitblitInstanceStat()
    {
        this.instanceType = GitblitInstanceType.WAR;
        initOS();
        initJava();
    }

    GitblitInstanceStat(GitblitInstanceType instanceType)
    {
        this.instanceType = instanceType;
        initOS();
        initJava();
    }


    GitblitInstanceStat init(ServerStatus serverStatus)
    {
        this.version = serverStatus.version;
        this.startTs = serverStatus.bootDate;

        this.maxMem = serverStatus.heapMaximum;

        return this;
    }


    void initOS()
    {
        String os = System.getProperty("os.name");
        if (os == null) {
            this.os = "Unknown";
        } else {
            String oslc = os.toLowerCase();
            if (oslc.contains("windows")) {
                this.os = "Windows";
            } else if (oslc.contains("linux")) {
                this.os = "Linux";
            } else if (oslc.contains("mac") || oslc.contains("darwin")) {
                this.os = "macOS";
            } else if (oslc.contains("bsd")) {
                this.os = "BSD";
            } else if (oslc.contains("solaris") || oslc.contains("sun") ||
                    oslc.contains("aix") || oslc.contains("hpux") || oslc.contains("unix")) {
                this.os = "Unix";
            } else {
                this.os = os;
            }
        }

        this.osName = System.getProperty("os.name");
        this.osVersion = System.getProperty("os.version");
        this.osArch = System.getProperty("os.arch");
    }

    void initJava()
    {
        this.javaVersion = System.getProperty("java.version");
        this.javaVendor = System.getProperty("java.vendor");
        this.javaRuntimeVersion = System.getProperty("java.runtime.version", "");
        this.javaRuntimeName = System.getProperty("java.runtime.name", "");
        this.javaVmVersion = System.getProperty("java.vm.version", "");
        this.javaVmName = System.getProperty("java.vm.name", "");
    }



    @Override
    public String toString()
    {
        StringBuilder sb = new StringBuilder();
        sb.append("GitblitInstanceStat {")
          .append("\n  instanceType: ").append(instanceType)
          .append(",\n  version: ").append(version)
          .append(",\n  startTs: ").append(startTs)
          .append(",\n  os: ").append(os)
          .append(",\n  osName: ").append(osName)
          .append(",\n  osVersion: ").append(osVersion)
          .append(",\n  osArch: ").append(osArch)
          .append(",\n  javaVersion: ").append(javaVersion)
          .append(",\n  javaVendor: ").append(javaVendor)
          .append(",\n  javaRuntimeVersion: ").append(javaRuntimeVersion)
          .append(",\n  javaRuntimeName: ").append(javaRuntimeName)
          .append(",\n  javaVmVersion: ").append(javaVmVersion)
          .append(",\n  javaVmName: ").append(javaVmName)
          .append(",\n  maxMem: ").append(maxMem)
          .append("\n}");
        return sb.toString();
    }
}