package com.webgroupmedia.cerb4.exporter.kayako.entities; import java.io.File; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import com.cerb4.impex.Configuration; import com.cerb4.impex.XMLThread; import com.webgroupmedia.cerb4.exporter.kayako.Database; import com.webgroupmedia.cerb4.exporter.kayako.Driver; public class Contact { public void export() { Connection conn = Database.getInstance(); String cfgOutputDir = Configuration.get("outputDir", "output"); String sExportEncoding = new String(Configuration.get("exportEncoding", "ISO-8859-1")); Integer iCount = 0; Integer iSubDir = 0; try { Statement s = conn.createStatement(); String sql = "SELECT u.userid, u.fullname, ue.email, u.userpassword as pass, "+ "c.mobiletelephonenumber, c.othertelephonenumber, c.businesstelephonenumber, c.hometelephonenumber, " + "companyname " + "FROM swusers u "+ "INNER JOIN swuseremails ue ON u.userid = ue.userid " + "LEFT JOIN swcontacts c ON ue.email = c.email1address " ; s.execute(sql); ResultSet rs = s.getResultSet(); File outputDir = null; while(rs.next()) { Document doc = DocumentHelper.createDocument(); Element eContact = doc.addElement("contact"); doc.setXMLEncoding(sExportEncoding); Integer iId = rs.getInt("userid"); String sFullName = Driver.fixMagicQuotes(rs.getString("fullname")); String sEmail = Driver.fixMagicQuotes(rs.getString("email")); String sPassword = Driver.fixMagicQuotes(rs.getString("pass")); String sPhone = Driver.fixMagicQuotes(rs.getString("mobiletelephonenumber")); if(sPhone.trim().length() == 0) { sPhone = Driver.fixMagicQuotes(rs.getString("othertelephonenumber")); if(sPhone.trim().length() == 0) { sPhone = Driver.fixMagicQuotes(rs.getString("businesstelephonenumber")); if(sPhone.trim().length() == 0) { sPhone = Driver.fixMagicQuotes(rs.getString("hometelephonenumber")); } } } String sOrg = Driver.fixMagicQuotes(rs.getString("companyname")); String sFirstName, sLastName=""; if(-1 != sFullName.indexOf(" ")) { sFirstName = sFullName.substring(0,sFullName.indexOf(" ")); sLastName = sFullName.substring(sFullName.indexOf(" ")); } else { sFirstName = sFullName; } eContact.addElement("first_name").addText(sFirstName); eContact.addElement("last_name").addText(sLastName); eContact.addElement("email").addText(sEmail); eContact.addElement("password").addText(sPassword); eContact.addElement("phone").addText(sPhone); eContact.addElement("organization").addText(sOrg); if(0 == iCount % 2000 || 0 == iCount) { iSubDir++; // Make the output subdirectory outputDir = new File(cfgOutputDir+"/03-contacts-" + String.format("%09d", iId)); outputDir.mkdirs(); } String sXmlFileName = outputDir.getPath() + "/" + String.format("%09d",iId) + ".xml"; try { new XMLThread(doc, sXmlFileName).start(); } catch(Exception e) { e.printStackTrace(); } iCount++; } rs.close(); s.close(); } catch (Exception e) { e.printStackTrace(); } } }