📄 countergroupservice.java
字号:
/**
* @(#)CounterGroupService.java Nov 21, 2006 10:12:59 AM
*
* COPYRIGHT DaTang Mobile Communications Equipment CO.,LTD
*/
package com.datangmobile.oss.omc.pc.util;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.datangmobile.oss.platform.util.ILogger;
import com.datangmobile.oss.platform.util.ModuleLogger;
/**
* 保存了每个计数器组中计数器index和name 对于整个性能采集来说只需要一个类实例
*
* @author liuyuan
*
*/
public class CounterGroupService {
private static CounterGroupService counterService = null;
/**
*
*/
private HashMap<Integer, ArrayList<String>> groups = new HashMap<Integer, ArrayList<String>>();
/**
*
*/
private static final ILogger log = ModuleLogger.getPmLogger().getOperLogger();
/**
* 构造函数
*
*/
public CounterGroupService() {
}
/**
* 返回单实例类
*
* @return
*/
public static CounterGroupService getInstance() {
if(null == counterService){
counterService = new CounterGroupService();
try {
counterService.init();
log.info(CounterGroupService.class, "init succeed!");
} catch (Exception e) {
log.error("初始化计数器组映射关系失败!", e);
}
}
return counterService;
}
/**
* 初始化
*
* @throws Exception
*/
private void init() throws Exception {
if (counterService == null) {
throw new Exception("Error! not initial");
}
groups = convert(this.getCounterInfos());
}
/**
* 按照计数器组分,每个计数器组id对应一个字符串数组,是计数器按照在计数器组中的序列的name数组
*
* @return
* @throws SQLException
*/
private HashMap<Integer, ArrayList<String>> convert(
CounterInfo[] counterInfos) {
if (counterInfos == null) {
return null;
}
HashMap<Integer, ArrayList<String>> groupinfos = new HashMap<Integer, ArrayList<String>>();
for (int i = 0; i < counterInfos.length; i++) {
Integer groupid = counterInfos[i].getGroupid();
if (!groupinfos.containsKey(groupid)) {
/* 如果还没有该groupid,则添加该groupid,他对应的arrayList<String>只有一个长度 */
ArrayList<String> counternames = new ArrayList<String>();
counternames.add(counterInfos[i].getName());
groupinfos.put(groupid, counternames);
} else {
/* 如果找到了该groupid,则在该groupid对应的ArrayList<String>下增加新的name */
ArrayList<String> svcs = groupinfos.get(groupid);
svcs.add(counterInfos[i].getName());
}
}
return groupinfos;
}
/**
* 需要从数据库中得到计数器的信息,所属的计数器组id和计数器的name
*
* @return
* @throws SQLException
*/
private CounterInfo[] getCounterInfos() throws SQLException {
Connection conn = null;
/* 建立数据库连接 */
try {
conn = Database.connect();
} catch (Exception e) {
if(e instanceof SQLException){
throw (SQLException)e;
}else{
throw new SQLException("init database connection error!"+e);
}
}
Statement stmt = null;
stmt = conn.createStatement();
String query = "select counter_id ,name from tbl_guide_line where category = 'NEDEF' order by counter_id, idx_in_counter_group";
ResultSet rs = null;
rs = stmt.executeQuery(query);
List<CounterInfo> infos = new ArrayList<CounterInfo>();
CounterInfo info = null;
/* 访问查询的结果集 */
while (rs.next()) {
info = new CounterInfo();
info.setGroupid(rs.getInt("counter_id"));
info.setName(rs.getString("name"));
infos.add(info);
}
/* 关闭数据库的连接 */
Database.closestmt(stmt);
Database.closeRset(rs);
Database.closeConnection(conn);
/* 返回结果 */
CounterInfo[] counterInfos = new CounterInfo[infos.size()];
infos.toArray(counterInfos);
return counterInfos;
}
/**
* 根据计数器组id返回计数器列表
*
* @param groupid
* @return
*/
public ArrayList<String> getCounterNames(Integer groupid) {
return groups.get(groupid);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -