public class TelLoginService extends ETellerBaseService implements ITelLoginService {
/**
* 查询登录信息
*/
static String line = "├"; //保存首个制表符
static int flag = 0;
static Map<String,Integer> map = new HashMap<String,Integer>();
@Test
public void a() throws Exception{
ResultSet rs = null;
Connection conn = null;
Statement smt=null;
List<ExtBraninfo> list = new ArrayList<ExtBraninfo>();
conn=getConnection(); // 获取数据库连接
try {
smt=conn.createStatement();
//查询全部
rs=smt.executeQuery("SELECT T1.BRAN_CODE, T1.BRAN_NAME, T1.PARENT_BRAN "+
"FROM BRT_BRANDEF T1 START WITH T1.BRAN_CODE='2990999'" +
"CONNECT BY PRIOR T1.BRAN_CODE = T1.PARENT_BRAN");
while (rs.next()){
ExtBraninfo bran = new ExtBraninfo();
bran.setBranCode(rs.getString("bran_Code"));
bran.setBranName(rs.getString("bran_Name"));
bran.setParentBran(rs.getString("parent_Bran"));
list.add(bran);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (rs != null) {
rs.close();
}
if (smt != null) {
smt.close();
}
if (conn!= null) {
conn.close();
}
}
String root = ""; //用于保存节点
root = list.get(0).getBranCode(); //赋值:根节点
map.put(root, 0); //上方定义了全局的 map,用于存放 机构号,及前方横岗数量
makeTree(list,root); //调用方法,处理数据
//输出
for(ExtBraninfo temp : list){
System.out.println(temp.getBranCode());
}
}
//处理数据
public static void makeTree(List<ExtBraninfo> list,String root){
//为树添加横线 (按组添加)
for(ExtBraninfo temp:list){
if(root.equals(temp.getParentBran())){
root = temp.getBranCode(); //保存当前根节点,用于添加至map
temp.setBranCode(line+temp.getBranCode()); //为机构添加横线
flag ++; //全局变量,用于存放处理到第n条数据
map.put(root, line.length()); //添加,机构与横线数量对应关系
line = line + "─";
}
}
//第n组数据
if(list.get(flag) != null && flag < list.size()-1){
flag ++;
ExtBraninfo ebNext = list.get(flag);
Integer length = map.get(ebNext.getParentBran());
line = "├"; //保存首个制表符
for(int i=0; i<length; i++){
line += "─";
}
map.put(ebNext.getBranCode(), line.length());
String root1 = list.get(flag).getBranCode();
list.get(flag).setBranCode(line+ebNext.getBranCode());//为第n组数据首个添加符号
line += "─";
makeTree(list,root1); //递归 :为第n组数据添加横线
}
}
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}
try {
conn = DriverManager.getConnection("###", "##", "##");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
}