package cn.edu.xaut.datamanager.action;import java.io.BufferedReader;
import java.io.StringReader;
import java.sql.*;
import java.util.Iterator;import javax.swing.JOptionPane;import org.dom4j.Document;
import org.dom4j.Element;import cn.edu.xaut.datamanager.ActionCode;
import cn.edu.xaut.datamanager.util.DataProp;
import cn.edu.xaut.datamanager.util.XMLUtil;
import cn.edu.xaut.datamanager.comm.ActionResponse;
import cn.edu.xaut.app_pub.conn.SetupConnectionFactory;
import cn.edu.xaut.app_pub.guanyuan.CodeNumber;public class Action_class_Response extends ActionResponse{
public Action_class_Response(){
super(ActionCode.classcode);
}
public String getActionname(){
return "班级管理";
}
public String execute(String str){
if(checkXml(getXMLSchema(),str)){
try{
String[][] xmlArr=getDataInfo(str);
return saveData(xmlArr);
}catch(Exception e){
            System.out.println(e.getMessage());
            e.printStackTrace();
return "班级管理保存失败";
}
}else return "班级管理XML格式错误,保存失败";
}

public String getXMLSchema(){
        return XMLUtil.getXmlFile(this.getClass(), "schemaclass.xsd");
    }
    public String[][] getDataInfo(String xmlStr){
        String[][] xmlArr=null;
        
        if(checkXml(getXMLSchema(),xmlStr)){
            try{
                BufferedReader br = new BufferedReader(new StringReader(xmlStr));
                Document doc = XMLUtil.getDocument(br);
                Element root = doc.getRootElement();
                xmlArr=new String[root.nodeCount()+1][2];
                Iterator it = root.elementIterator("row");
                xmlArr[0][0]="clname";
                xmlArr[0][1]="xueyuan";
                int j=1;
                while(it.hasNext()){
                    Element ele = (Element) it.next();
                    xmlArr[j][0]=ele.element("clname").getTextTrim();
                    xmlArr[j][1]=ele.element("xueyuan").getTextTrim();
                    System.out.println("xmlArr["+j+"][0]="+xmlArr[j][0]);
                    j++;
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }else JOptionPane.showMessageDialog(null, "xml错误");
        return xmlArr;
    }
    public String saveData(String[][]xmlArr){
StringBuffer returnStr=new StringBuffer();
for(int i=1;i<xmlArr.length;i++){
if(xmlArr[i][0]!=null&&(!xmlArr[i][0].equals("null"))&&(!xmlArr[i][0].trim().equals(""))){
try{
String sql_sel="select * from db_class where clname='"+xmlArr[i][0]+"'";

SetupConnectionFactory conn=new SetupConnectionFactory();
Statement st=conn.oracleConnection().createStatement();
                System.out.println(sql_sel);                 
                
                ResultSet rs=st.executeQuery(sql_sel);
if(rs.next()){
if(!(xmlArr[i][1]==null||xmlArr[i][1].trim().equals("")||xmlArr[i][1].trim().equals("null")))
{
String sql_upd="update db_class set xueyuan='"+DataProp.getLOVId("xueyuan",xmlArr[i][1])+"' where clname='"+xmlArr[i][0]+"'";
st.executeUpdate(sql_upd);
System.out.println(sql_upd);
}
}else{
String sql_ins="insert into db_class (clid,clname,xueyuan) " +
"values("+CodeNumber.codeNumber("db_class", "clid",null)+",'"+xmlArr[i][0]+"','"+DataProp.getLOVId("xueyuan",xmlArr[i][1])+"')";
st.executeUpdate(sql_ins);
System.out.println(sql_ins);
}
}catch(SQLException e){
returnStr.append("班级管理--班级名:").append(xmlArr[i][0]).append("  保存失败!\n");
            //e.printStackTrace();
}
}
}
return (returnStr.toString()==null||returnStr.toString().equals(""))?"班级管理全部保存成功":returnStr.toString();
    }
}//----------------------------------
/*
*这是我工程中的一个类,和你要实现的功能差不多,先解析XML,将数据存储到数组中,然后再对数组操作,将数据存入数据库.
*这需要DOM4J包. 你解读一下吧,希望对你有用.
*/