package com.webgroupmedia.cerb4.exporter.rt.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.rt.Database;
import com.webgroupmedia.cerb4.exporter.rt.Driver;
public class Org {
public void export() {
Connection conn = Database.getInstance();
String cfgOutputDir = Configuration.get("outputDir", "output");
String sExportEncoding = new String(Configuration.get("exportEncoding", "ISO-8859-1"));
String cfgExportRTGroup = new String(Configuration.get("exportOrgsRTGroup", "Unprivileged"));
Integer iCount = 0;
Integer iSubDir = 0;
try {
Statement s = conn.createStatement();
String sql = "SELECT DISTINCT u.Organization " +
"FROM Users u " +
"INNER JOIN GroupMembers gm on gm.MemberId = u.id " +
"INNER JOIN Groups g ON gm.GroupId = g.id " +
"WHERE 1=1 ";
String sqlLastCondition = "";
boolean exportUnprivileged = (cfgExportRTGroup.equals("Unprivileged"));
if(exportUnprivileged) {
sqlLastCondition = "AND g.Type = 'Unprivileged' ";
}
else {
String groupsQueryStr = Driver.generateGroupsListSQL(cfgExportRTGroup);
sqlLastCondition = "AND g.Domain='UserDefined' AND g.Name IN (" + groupsQueryStr+") ";
}
sql += sqlLastCondition;
//System.out.println(sql);
s.execute(sql);
ResultSet rs = s.getResultSet();
File outputDir = null;
while(rs.next()) {
String orgName = Driver.fixMagicQuotes(rs.getString("Organization"));
if(orgName==null || orgName.trim().length()==0) {
continue;
}
Document doc = DocumentHelper.createDocument();
Element eContact = doc.addElement("organization");
doc.setXMLEncoding(sExportEncoding);
eContact.addElement("name").addText(orgName);
eContact.addElement("street").addText("");
eContact.addElement("city").addText("");
eContact.addElement("province").addText("");
eContact.addElement("postal").addText("");
eContact.addElement("country").addText("");
eContact.addElement("phone").addText("");
//eContact.addElement("fax").addText(sFax);
eContact.addElement("website").addText("");
if (0 == iCount % 2000 || 0 == iCount) {
iSubDir++;
// Make the output subdirectory
outputDir = new File(cfgOutputDir + "/02-orgs-" + String.format("%09d", iCount));
outputDir.mkdirs();
}
String sXmlFileName = outputDir.getPath() + "/" + String.format("%09d", iCount) + ".xml";
try {
new XMLThread(doc, sXmlFileName).start();
} catch (Exception e) {
e.printStackTrace();
}
iCount++;
}
rs.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// 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();
// s.execute("SELECT Organization, Address1, Address2, City, State, Zip, Country, WorkPhone "+
// "FROM Users "
// );
// ResultSet rs = s.getResultSet();
//
//
// Set<String> companySet = new HashSet<String>();
// File outputDir = null;
// while(rs.next()) {
//
// Document doc = DocumentHelper.createDocument();
// Element eContact = doc.addElement("organization");
// doc.setXMLEncoding(sExportEncoding);
//
// Integer iId = iCount;
// String sName = Driver.fixMagicQuotes(rs.getString("companyname"));
//
// if(companySet.contains(sName)) {
// continue;
// }
// companySet.add(sName);
//
// String street1 = Driver.fixMagicQuotes(rs.getString("Address1"));
// String street2 = Driver.fixMagicQuotes(rs.getString("Address2"));
// String street = street1 + street2;
//
// String city = Driver.fixMagicQuotes(rs.getString("City"));
//
// String state = Driver.fixMagicQuotes(rs.getString("State"));
//
// String zip = Driver.fixMagicQuotes(rs.getString("Zip"));
//
// String country = Driver.fixMagicQuotes(rs.getString("Country"));
// String workPhone = Driver.fixMagicQuotes(rs.getString("WorkPhone"));
//
//
// eContact.addElement("name").addText(sName);
// eContact.addElement("street").addText(street);
// eContact.addElement("city").addText(city);
// eContact.addElement("province").addText(state);
// eContact.addElement("postal").addText(zip);
// eContact.addElement("country").addText(country);
// eContact.addElement("phone").addText(workPhone);
// //eContact.addElement("fax").addText(sFax);
// eContact.addElement("website").addText("");
//
// if(0 == iCount % 2000 || 0 == iCount) {
// iSubDir++;
//
// // Make the output subdirectory
// outputDir = new File(cfgOutputDir+"/02-orgs-" + 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();
// }
//
// }
}