ludc
2025-01-16 986aa62ed00bee39363bab41b4eeb8259d446efd
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
package com.vci.client.framework.systemConfig.usedSpaceStatis;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.text.DecimalFormat;
 
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.border.TitledBorder;
 
import com.vci.client.ClientSession;
import com.vci.client.common.VCIBasePanel;
import com.vci.client.framework.appConfig.object.AppConfigDetailObject;
import com.vci.client.framework.delegate.AppConfigDetailClientDelegate;
import com.vci.client.framework.rightConfig.object.FunctionObject;
import com.vci.client.framework.specialrole.ModuleInterface.IModuleShow;
import com.vci.client.ui.exception.VCIException;
import com.vci.client.ui.swing.components.VCIJLabel;
import com.vci.corba.common.VCIError;
import com.vci.corba.framework.data.DataSourceInfo;
 
public class UsedSpaceStatisAndPcPanel extends VCIBasePanel implements IModuleShow {
 
    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    VCIJLabel sysDBALabel = new VCIJLabel("系统数据库(表空间)");
    VCIJLabel sysLogLabel = new VCIJLabel("系统日志表容量");
 
    public UsedSpaceStatisAndPcPanel(FunctionObject funcObj) {
        super(funcObj);
        // TODO Auto-generated constructor stub
        init();
    }
    
    private void init() {
        this.setLayout(new BorderLayout());
        this.setBorder(new TitledBorder("使用空间统计"));
        JPanel mainPanel = new JPanel();
        JPanel contentPanel = initContentPanel();
        mainPanel.setLayout(new BorderLayout());
        mainPanel.add(contentPanel, BorderLayout.LINE_START);
        this.add(mainPanel, BorderLayout.LINE_START);
    }
    
    private JPanel initContentPanel() {
        String[][] data=getData();
        String sysDBAData="总大小:"+data[0][0]+"            已使用大小:"+data[0][1];
        String sysLogData="最大条数:"+data[1][0]+"       实际条数:"+data[1][1];
        VCIJLabel sysDBADataLabel = new VCIJLabel(sysDBAData);
        VCIJLabel sysLogDataLabel = new VCIJLabel(sysLogData);
        VCIJLabel sysDBADataRatLabel = new VCIJLabel("使用比率:"+data[0][2]);
        VCIJLabel sysLogDataRatLabel = new VCIJLabel("使用比率:"+data[1][2]);
        JPanel contentPanel = new JPanel();
        contentPanel.setLayout(null);
        contentPanel.setPreferredSize(new Dimension(3000,40));
        sysDBALabel.setBounds(20, 10, 200, 25);
        sysDBADataLabel.setBounds(30, 30, 500, 25);
        sysDBADataRatLabel.setBounds(340, 30, 120, 25);
        sysLogLabel.setBounds(20, 80, 200, 25);
        sysLogDataLabel.setBounds(30, 100, 500, 25);
        sysLogDataRatLabel.setBounds(340, 100, 120, 25);
        contentPanel.add(sysDBADataLabel,BorderLayout.LINE_START);
        contentPanel.add(sysLogDataLabel,BorderLayout.LINE_START);
        contentPanel.add(sysDBADataRatLabel,BorderLayout.LINE_START);
        contentPanel.add(sysLogDataRatLabel,BorderLayout.LINE_START);
        contentPanel.add(sysDBALabel,BorderLayout.LINE_START);
        contentPanel.add(sysLogLabel,BorderLayout.LINE_START);
        JProgressBar barSysDBA = new JProgressBar();
        JProgressBar barSysLog = new JProgressBar();
        barSysDBA.setMinimum(0);
        barSysDBA.setMaximum(100);
        barSysDBA.setValue(Integer.parseInt(data[0][3]));
        barSysDBA.setStringPainted(true);
        barSysDBA.setPreferredSize(new Dimension(200,20));
        barSysDBA.setBounds(470, 32, 200, 20);
        barSysLog.setMinimum(0);
        barSysLog.setMaximum(100);
        barSysLog.setValue(Integer.parseInt(data[1][3]));
        barSysLog.setStringPainted(true);
        barSysLog.setPreferredSize(new Dimension(200,20));
        barSysLog.setBounds(470, 102, 200, 20);
        if(Integer.parseInt(data[0][3])>=90){
            barSysDBA.setForeground(new Color(255,0,0));
        }else if(Integer.parseInt(data[1][3])>=90){
            barSysLog.setForeground(new Color(255,0,0));
        }
        contentPanel.add(barSysDBA,BorderLayout.LINE_START);
        contentPanel.add(barSysLog,BorderLayout.LINE_START);
        return contentPanel;
    }
    
    private String[][] getData(){
        String[][] data=new String[2][4];
        try {
            DataSourceInfo dsInfo = ClientSession.getFrameworkService().getDataSourceInfo();//系统数据信息
            String[] dataBase=new String[]{getFormatString(dsInfo.tbSpaceTotal),getFormatString(dsInfo.tbSpaceUsed)}; //系统数据总大小,已使用大小
            AppConfigDetailObject logMaxCount;
            logMaxCount = new AppConfigDetailClientDelegate(null).getAppConfigDetailByKey("LogMaxCount");
            String logMaxCountValue=logMaxCount.getValue();//系统日志最大条数
            if (logMaxCountValue.isEmpty())
                logMaxCountValue = "100000";
            
            String logCount = dsInfo.pllogCount;//系统日志实际条数
            String[] rate=new String[2];//使用比率值
            String[] rateShow=new String[2];//使用比率显示图值
            float dataBaseRate= Float.parseFloat(dataBase[1])/Float.parseFloat(dataBase[0]);
            if(dataBaseRate>0 && dataBaseRate<0.01){
                rate[0]="< 1%";
                rateShow[0]="1";
            }else if(dataBaseRate==0){
                rate[0]="0%";
                rateShow[0]="0";
            }else if(dataBaseRate>=0.99){
                rate[0]=new DecimalFormat("##.##").format(dataBaseRate*100);
                rate[0]=rate[0]+"%";
                rateShow[0]="99";
            }else{
                rate[0]=new DecimalFormat("##.##").format(dataBaseRate*100);
                rate[0]=rate[0]+"%";
                rateShow[0]=new DecimalFormat("0").format(dataBaseRate*100);
            }
            //系统日志表
            String[] logRateShow=new String[2];
            float logRate= Float.parseFloat(logCount)/Float.parseFloat(logMaxCountValue);
            if(logRate>0 && logRate<0.01){
                logRateShow[0]="< 1%";
                logRateShow[1]="1";
            }else if(logRate==0){
                logRateShow[0]="0%";
                logRateShow[1]="0";
            }else if(logRate>=0.99 && logRate<1){
                logRateShow[0]=new DecimalFormat("##.##").format(logRate*100);
                logRateShow[0]=logRateShow[0]+"%";
                logRateShow[1]="99";
            }else if(logRate>=1){
                logRateShow[0]=new DecimalFormat("##.##").format(logRate*100);
                logRateShow[0]=logRateShow[0]+"%";
                logRateShow[1]="100";
            }
            else{
                logRateShow[0]=new DecimalFormat("##.##").format(logRate*100);
                logRateShow[0]=logRateShow[0]+"%";
                logRateShow[1]=new DecimalFormat("0").format(logRate*100);
            }
              
            for(int i=0;i<dataBase.length;i++){
                String temp = dataBase[i];
                if (temp.isEmpty())
                    dataBase[i] = "0";
                else{
                    float size = Float.parseFloat(temp);
                    if(size > 1024){
                        dataBase[i]=String.valueOf(new DecimalFormat("##.##").format(size/1024))+"G";
                    }else{
                        dataBase[i]=dataBase[i]+"M";
                    }
                }
            }
            data[0][0]=dataBase[0];
            data[0][1]=dataBase[1];
            data[0][2]=rate[0];
            data[0][3]=rateShow[0];
            data[1][0]=logMaxCountValue;
            data[1][1]=logCount;
            data[1][2]=logRateShow[0];
            data[1][3]=logRateShow[1];
        } catch (VCIError e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (VCIException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return data;
    }
    
 
    private String getFormatString(String value){
        String[] split = value.split("\\.");
        if(split.length == 2 && split[1].length() > 2){
            return split[0] + "." + split[1].substring(0, 2);
        }
        return value;
    }
 
    @Override
    public String getUserID() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public String getRoleID() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public JPanel getModuleComponent() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public String getModuleName() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public String getIconName() {
        // TODO Auto-generated method stub
        return null;
    }
 
    @Override
    public String getModuleShowInfo() {
        // TODO Auto-generated method stub
        return null;
    }
}