package createtable.actions; import javax.xml.parsers.*; import org.w3c.dom.*; import org.xml.sax.SAXException; import java.io.IOException; import java.sql.Connection; import com.ceec.generator.DBGenerator; public class PackageEditorDBRunable implements Runnable{ /** * The constructor. */ // project.xml�ж�ȡ��Ŀ����Ŀ¼�Լ���Ŀ���� private String workplace=new String(); //����Ŀ¼ private String projectName=new String(); //��Ŀ���� private String componentName=new String(); //�齨���� private String componentPath=new String(); //�齨·�� private String packageName=new String(); private Connection con; private Monitor rwp; private CommFunction commfun; public PackageEditorDBRunable(CommFunction commfun,Monitor rwp,Connection con,String projectname,String componentpath,String packagename){ this.rwp=rwp; this.con=con; this.projectName=projectname; this.componentPath=componentpath; this.packageName=packagename; this.commfun=commfun; } public void run() { try { // ���������齨 this.createComponent(); this.createEnum();//��������ö�� } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); commfun.openMessage(); rwp.monitorCancel(); return; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); commfun.openMessage(); rwp.monitorCancel(); return; } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); commfun.openMessage(); rwp.monitorCancel(); return; } rwp.monitorCancel(); // TODO Auto-generated method stub } /** * create component read project.xml * @param project * @throws SAXException * @throws IOException * @throws ParserConfigurationException */ public void createComponent() throws SAXException, IOException, ParserConfigurationException{ // ��ʼ��ȡxml DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder; builder = factory.newDocumentBuilder(); Document document = builder.parse(this.componentPath+"\\project.xml"); // root=richweb ȡ�ø�Ԫ�� Element root = document.getDocumentElement(); // root��һ��project if(root.getElementsByTagName("project")!=null){ Element prot = (Element) root.getElementsByTagName("project").item(0); // get package if(prot.getElementsByTagName("package")!=null){ NodeList packages = prot.getElementsByTagName("package"); for(int i=0;i<packages.getLength();i++) { Element packagelement = (Element)packages.item(i); if(packagelement.getElementsByTagName("name")!=null){ Element packageElement=(Element)packagelement.getElementsByTagName("name").item(0); Text packagetext = (Text)packageElement.getFirstChild(); if(packagetext.getNodeValue().equalsIgnoreCase(this.packageName)||this.packageName.equals(null)||this.packageName.equals("")){ this.packageName=packagetext.getNodeValue(); //get component if(packagelement.getElementsByTagName("component")!=null){ NodeList component =packagelement.getElementsByTagName("component"); for(int j=0;j<component.getLength();j++){ Element componentelement = (Element)component.item(j); if(componentelement.getElementsByTagName("name")!=null){ Element comElement=(Element)componentelement.getElementsByTagName("name").item(0); Text componentext=(Text)comElement.getFirstChild(); // �齨���� // this.componentName=this.projectName+"."+this.packageName+"."+componentext.getNodeValue()+".xml"; // added at 2006/11/21 // aimed at getting the "path" which is the id of this component //***********Begin******** this.componentName = componentelement.getElementsByTagName("path").item(0).getFirstChild().getNodeValue() + ".xml"; //************End********* if (commfun.ifExists(this.con,componentext.getNodeValue())){ try{ commfun.dropTable(this.con,componentext.getNodeValue()); }catch(Exception e){ e.printStackTrace(); commfun.openMessage(); rwp.monitorCancel(); return; } } //// �������������� DBGenerator ganerator=new DBGenerator(); ganerator.setComponentXMLName(this.componentName); ganerator.setComponentXMLPath(this.componentPath); ganerator.setConnection(this.con); try { ganerator.generate(); } catch (Exception e) { // TODO �Զ����� catch �� //System.out.println(e.getMessage()); e.printStackTrace(); commfun.openMessage(); rwp.monitorCancel(); return; } } } } } } } } } } /** * create enum read project.xml * @param project * @throws SAXException * @throws IOException * @throws ParserConfigurationException */ public void createEnum() throws SAXException, IOException, ParserConfigurationException{ // ��ʼ��ȡxml DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder; builder = factory.newDocumentBuilder(); Document document = builder.parse(workplace+"\\"+this.projectName+"\\.configure\\project.xml"); // root=richweb ȡ�ø�Ԫ�� Element root = document.getDocumentElement(); // root��һ��project if(root.getElementsByTagName("project")!=null){ Element prot = (Element) root.getElementsByTagName("project").item(0); // get package if( prot.getElementsByTagName("package")!=null){ NodeList packages = prot.getElementsByTagName("package"); for(int i=0;i<packages.getLength();i++) { Element packagelement = (Element)packages.item(i); if(packagelement.getElementsByTagName("name")!=null){ Element packageElement=(Element)packagelement.getElementsByTagName("name").item(0); Text packagetext=(Text)packageElement.getFirstChild(); if(packagetext.getNodeValue().equals(this.packageName)||this.packageName.equals(null)||this.packageName.equals("")){ //��һ������������component editor //�ڶ���������null,""������package editor //get Enum if(packagelement.getElementsByTagName("enumeration")!=null){ NodeList enums =packagelement.getElementsByTagName("enumeration"); for(int j=0;j<enums.getLength();j++){ Element enumsElement = (Element)enums.item(i); if(enumsElement.getElementsByTagName("name")!=null){ Element comElement=(Element)enumsElement.getElementsByTagName("name").item(0); Text enumtext=(Text)comElement.getFirstChild(); // �齨���� this.componentName=this.projectName+"."+this.packageName+"."+enumtext.getNodeValue()+".xml"; // added at 2006/11/21 // aimed at getting the "path" which is the id of this component //***********Begin******** this.componentName = enumsElement.getElementsByTagName("path").item(0).getFirstChild().getNodeValue() + ".xml"; //************End********* if(commfun.ifExists(this.con,enumtext.getNodeValue())){ try{ commfun.dropTable(this.con,enumtext.getNodeValue()); }catch(Exception e){ e.printStackTrace(); commfun.openMessage(); rwp.monitorCancel(); return; } } //// �������������� DBGenerator ganerator=new DBGenerator(); ganerator.setComponentXMLName(this.componentName); ganerator.setComponentXMLPath(this.componentPath); ganerator.setConnection(this.con); try { ganerator.generate(); } catch (Exception e) { // TODO �Զ����� catch �� e.printStackTrace(); commfun.openMessage(); rwp.monitorCancel(); return; } } } } } } } } } } }