13d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypackage com.mot.dm.dbtool;
23d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
33d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport java.util.*;
43d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport java.io.*;
53d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambyimport java.util.zip.*;
63d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
73d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hambypublic class Util {
83d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
93d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static Value[] attStrToArrValue(String[] result_str) {
103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Value[] vals = new Value[result_str.length];
113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (int i = 0; i < vals.length; i++) {
123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Value val = new Value(result_str[i], i);
133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      vals[i] = val;
143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return vals;
163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static String getIdNameFromRecords(String id, String key) throws
193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Exception {
203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    int count = 0;
213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String tmp;
223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String tmp_id = id;
233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    boolean isUnique = false;
243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Record rec = (Record) Generator.hashXmlRecords.get(key);
253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (rec == null) {
263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return id;
273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // add count to the end of id to make it unique.
293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while (!isUnique) {
303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      isUnique = true;
313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      for (int i = 0; i < rec.arrIDs.size(); i++) {
323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        tmp = (String) (rec.arrIDs.get(i));
333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (tmp.equalsIgnoreCase(tmp_id)) {
343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          isUnique = false;
353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          tmp_id = id + ++count;
363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          break;
373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return tmp_id;
413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void addXmlToRecord(String xml, String key, String id_name,
443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    String source) throws Exception {
453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Record rec = (Record) Generator.hashXmlRecords.get(key);
463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (rec == null) {
473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      rec = new Record();
483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      rec.key = key;
493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      parseKeyToRecord(key, rec);
503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      //  rec.genCompareStr();
513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    rec.arrIDs.add(id_name);
533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    rec.arrXMLs.add(xml);
543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if ("BROWSER".equalsIgnoreCase(source)) {
553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      rec.containsBrowser = true;
563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else if ("MMS".equalsIgnoreCase(source)) {
583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      rec.containsMMS = true;
593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else if ("JAVA".equalsIgnoreCase(source)) {
613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      rec.containsJavaApp = true;
623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else if ("IM".equalsIgnoreCase(source)) {
643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      rec.containsIM = true;
653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else {
673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      throw new Exception(
683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          "Error! Unsupported application type during record creation.");
693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Generator.hashXmlRecords.put(key, rec);
713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  //set mnc, mcc, provider_name and prepaid values for a record from combine key
743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void parseKeyToRecord(String key, Record record) throws
753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Exception {
763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    StringTokenizer st = new StringTokenizer(key, ":");
773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (st.countTokens() != 4) {
783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      throw new Exception("Error: The key '" + key + "' is wrong.");
793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String tmp;
813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken().trim();
823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    record.mcc = Integer.parseInt(tmp);
833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken().trim();
843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    record.mncLen = tmp.length();
853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    record.mnc = Integer.parseInt(tmp);
863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken().trim();
873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    record.operator_name = tmp;
883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken().trim();
893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (Const.PREPAID.equalsIgnoreCase(tmp)) {
903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      record.account_type = Const.PREPAID_INT;
913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else if (Const.POSTPAID.equalsIgnoreCase(tmp)) {
933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      record.account_type = Const.POSTPAID_INT;
943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else {
963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      record.account_type = Const.BOTH_INT;
973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  //creates xml, wbxml, zip files
1013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void writeRecordsToFiles() throws Exception {
1023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String omacp_xml;
1033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    byte[] omacp_wbxml;
1043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Iterator keys = Generator.hashXmlRecords.keySet().iterator();
1053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while (keys.hasNext()) {
1063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      String key = (String) keys.next();
1073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      // create file name
1083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      //String fileGenName = key.replaceAll(":", "_"); ///rem
1093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      //fileGenName = key.replaceAll(" ", "_"); ///rem
1103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      String fileGenName = generateFileNameFromKey(key);
1113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      String fileXml = fileGenName + ".xml";
1133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      String fileWbxml = fileGenName + ".wbxml";
1143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      String fileZip = fileGenName + ".zip";
1153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      omacp_xml = recordToXml(key);
1173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      writeFile(fileXml, omacp_xml);
1183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      WbxmlEncoder encoder = new WbxmlEncoder();
1213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      //omacp_wbxml = encoder.encode(omacp_xml); //old usage
1223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      omacp_wbxml = encoder.encode(new File(fileXml));
1233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      writeFile(fileWbxml, omacp_wbxml);
1243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      copyFile(fileXml, Const.WORKING_DIR + Const.PATH_SEP + fileXml);
1263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      copyFile(fileWbxml, Const.WORKING_DIR + Const.PATH_SEP + fileWbxml);
1273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (Generator.USE_ZIP) {
1293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        writeZipFile(fileWbxml, fileZip);
1303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        copyFile(fileZip, Const.WORKING_DIR + Const.PATH_SEP + fileZip);
1313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        (new File(fileZip)).delete();
1323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
1333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      (new File(fileXml)).delete();
1353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      (new File(fileWbxml)).delete();
1363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
1383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static String recordToXml(String key) throws Exception {
1403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    StringBuffer allXmlForKey = new StringBuffer();
1413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Record record = (Record) Generator.hashXmlRecords.get(key);
1423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (record != null) {
1433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      for (int i = 0; i < record.arrXMLs.size(); i++) {
1443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        allXmlForKey.append( (String) record.arrXMLs.get(i));
1453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
1463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String validXml = "<wap-provisioningdoc version=\"1.1\">\n" +
1483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        allXmlForKey.toString() + "</wap-provisioningdoc>\n";
1493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return validXml;
1503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
1513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby///############################################################################
1533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void sortAllRecordsIntoArray() throws Exception {
1543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Generator.arraySortedRecords = new Record[Generator.hashXmlRecords.size()];
1553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Iterator iterator = Generator.hashXmlRecords.keySet().iterator();
1563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Record record;
1573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    int count = 0;
1583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while (iterator.hasNext()) {
1593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      record = (Record) Generator.hashXmlRecords.get(iterator.next());
1603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Generator.arraySortedRecords[count] = record;
1613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      count++;
1623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Arrays.sort(Generator.arraySortedRecords);
1643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
1653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void addBitsToTable(BlockTable table, int value,
1673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                    int bitsSize) {
1683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (int i = bitsSize - 1; i >= 0; i--) {
1693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      table.data[table.byteCount] |=
1703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          (value & (1 << i)) != 0 ? 1 << (7 - table.bitCount) : 0;
1713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      table.bitCount++;
1733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (table.bitCount == 8) {
1753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        table.bitCount = 0;
1763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        table.byteCount++;
1773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
1783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
1803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static ArrayList readFile(String path) throws Exception {
1823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ArrayList arr = new ArrayList();
1833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    File f = new File(path);
1843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (!f.exists()) {
1853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      throw new Exception("Error: The file " + f.getAbsolutePath() +
1863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                          " doesn't exist!");
1873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
1883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // txt files should be encoded with UTF-16; csv - with UTF-8
1893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Reader fr = new InputStreamReader(new FileInputStream(f),
1903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                      Generator.ENCODING);
1913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
1923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    BufferedReader br = new BufferedReader(fr);
1933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String line;
1943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    int count = 0;
1953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while ( (line = br.readLine()) != null) {
1963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      count++;
1973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      line = new String(line.getBytes("UTF-8"));
1983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      line = line.trim();
1993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (line.length() > 0) {
2003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        if (Generator.IS_INPUT_TXT_FILE) { //validate and replace tabs with ","
2013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          if (line.indexOf(',') >= 0) {
2023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            throw new Exception("Error: The line#" + count +
2033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                " in the text file " + f.getAbsolutePath() +
2043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                " cannot contains comma ',' as a value.");
2053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          }
2063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          line = line.replaceAll("\t", ",");
2073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
2083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        else if (line.indexOf('\t') >= 0) {
2093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          throw new Exception("Error: The line#" + count +
2103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              " in the csv file " + f.getAbsolutePath() +
2113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                              " contains tabulation as a value.");
2123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        }
2133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        arr.add(line);
2143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
2153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    br.close();
2173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fr.close();
2183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return arr;
2193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
2203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby///WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
2223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby/*  public static void writeFile(String path, String content) throws
2233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Exception {
2243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Writer fw = new OutputStreamWriter(new FileOutputStream(path), "UTF-8"); //Generator.ENCODING
2253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fw.write(content);
2263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fw.flush();
2273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fw.close();
2283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }*/
2293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  //old function
2313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void writeFile(String path, String content) throws Exception {
2323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  writeFile(path, content.getBytes());
2333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   }
2343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby public static void writeFile(String path, byte[] content) throws Exception {
2363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   File f = new File(path);
2373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   FileOutputStream fos = new FileOutputStream(f);
2383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   fos.write(content);
2393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   fos.flush();
2403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby   fos.close();
2413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby }
2423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void writeDBFile() throws Exception {
2443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    File f = new File(Const.DB_FILE_NAME);
2453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    FileOutputStream fos = new FileOutputStream(f);
2463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // write header
2473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.write(Generator.headerTable.data);
2483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // write operators names table
2493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.write(Generator.operatorsNamesTable.data);
2503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // write carrier index table
2513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.write(Generator.carrierIndexTable.data);
2523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    // write applications settings table
2533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.write(Generator.applicationsSettingsTable.data);
2543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.flush();
2563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.close();
2573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
2583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void deleteFile(String path) {
2603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    File f = new File(path);
2613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (f.exists()) {
2623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      f.delete();
2633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
2653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void writeZipFile(String inputFileName,
2673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby                                  String outputZipFileName) throws Exception {
2683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    FileInputStream in = new FileInputStream(inputFileName);
2703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    int wbxmlLen = in.available();
2713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    byte[] wbxml_content = new byte[wbxmlLen];
2723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    in.read(wbxml_content);
2733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    in.close();
2743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    Deflater compressor = new Deflater();
2763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    compressor.setLevel(Deflater.BEST_COMPRESSION);
2773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    compressor.setInput(wbxml_content);
2783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    compressor.finish();
2793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    ByteArrayOutputStream bos = new ByteArrayOutputStream(wbxmlLen);
2813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    byte[] buf = new byte[1024];
2823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while (!compressor.finished()) {
2833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      int count = compressor.deflate(buf);
2843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      bos.write(buf, 0, count);
2853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
2863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    bos.close();
2873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    byte[] wbxml_zip = bos.toByteArray();
2883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    FileOutputStream fos = new FileOutputStream(outputZipFileName);
2893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.write(wbxml_zip);
2903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.flush();
2913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fos.close();
2923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //System.out.println("in: " + wbxmlLen + "  out: " + wbxml_zip.length);
2933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
2943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
2963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void copyFile(String fromFile, String toFile) throws Exception {
2973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    FileInputStream fis = new FileInputStream(fromFile);
2983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    FileOutputStream fos = new FileOutputStream(toFile);
2993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    byte[] buf = new byte[1024];
3003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    int i = 0;
3013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    while ( (i = fis.read(buf)) != -1) {
3023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      fos.write(buf, 0, i);
3033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (fis != null) {
3053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      fis.close();
3063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (fos != null) {
3083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      fos.close();
3093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
3113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void deleteDir(String path) throws Exception {
3133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    File f = new File(path);
3143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (f.exists() && f.isDirectory()) {
3153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      File[] files = f.listFiles();
3163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      for (int i = 0; i < files.length; i++) {
3173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        files[i].delete();
3183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
3193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      f.delete();
3203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
3223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static String str(String s) {
3243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return (s != null) ? s : "";
3253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
3263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static boolean strToBool(String s) {
3283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    s = (str(s)).toUpperCase();
3293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (s.equals("YES") || s.equals("TRUE") || s.equals("1")) {
3303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return true;
3313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return false;
3333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
3343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static boolean isFileExists(String path) {
3363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return (path == null) ? false : ( (new File(path)).exists());
3373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
3383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  // validate input files and set Encoding
3403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static String validateAndSetInputParms() {
3413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String mms = Generator.pathMMSFile;
3423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String browser = Generator.pathBrowserFile;
3433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String java = Generator.pathJavaAppFile;
3443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String im = Generator.pathIMFile;
3453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String fileExtention = "";
3463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String tmp;
3473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //check that at least one file is presenting
3483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (!isFileExists(mms) && !isFileExists(browser) && !isFileExists(java) &&
3493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        !isFileExists(im)) {
3503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      return "Error: At least one correct file (mms or browser or java or IM) must be provided !!!";
3513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3523d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //set files type
3533d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (mms != null) {
3543d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      tmp = mms.substring(mms.length() - 4);
3553d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (fileExtention.length() > 0 && !fileExtention.equals(tmp)) {
3563d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return
3573d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            "Error: All input files should have the same type: txt or csv !!!";
3583d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
3593d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      fileExtention = tmp;
3603d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3613d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (browser != null) {
3623d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      tmp = browser.substring(browser.length() - 4);
3633d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (fileExtention.length() > 0 && !fileExtention.equals(tmp)) {
3643d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return
3653d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            "Error: All input files should have the same type: txt or csv !!!";
3663d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
3673d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      fileExtention = tmp;
3683d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3693d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (java != null) {
3703d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      tmp = java.substring(java.length() - 4);
3713d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (fileExtention.length() > 0 && !fileExtention.equals(tmp)) {
3723d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return
3733d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            "Error: All input files should have the same type: txt or csv !!!";
3743d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
3753d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      fileExtention = tmp;
3763d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3773d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3783d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (im != null) {
3793d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      tmp = im.substring(im.length() - 4);
3803d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (fileExtention.length() > 0 && !fileExtention.equals(tmp)) {
3813d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        return
3823d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby            "Error: All input files should have the same type: txt or csv !!!";
3833d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
3843d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      fileExtention = tmp;
3853d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3863d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    if (fileExtention.equals(".txt")) {
3873d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Generator.IS_INPUT_TXT_FILE = true;
3883d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Generator.ENCODING = "UTF-16";
3893d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3903d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    else {
3913d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Generator.ENCODING = "UTF-8";
3923d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      Generator.IS_INPUT_TXT_FILE = false;
3933d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
3943d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return null;
3953d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
3963d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
3973d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static String generateFileNameFromKey(String key) throws Exception{
3983d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //byte[] bb = key.getBytes("UTF-8");
3993d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //for (int i = 0; i < bb.length; i++) {
4003d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //  System.out.print(Integer.toHexString(bb[i]) + " ");
4013d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //}
4023d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    StringTokenizer st = new StringTokenizer(key, ":");
4033d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    StringBuffer fileName = new StringBuffer();
4043d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String tmp;
4053d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken(); //mnc
4063d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fileName.append(tmp).append("_");
4073d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4083d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken(); //mcc
4093d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fileName.append(tmp).append("_");
4103d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4113d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    //carrier name... replace unicode to hex if required.
4123d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken();
4133d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    byte b;
4143d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String  hex = "";
4153d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    String tmpHex;
4163d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    boolean hexRequired = false;
4173d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    byte[] bytes = tmp.getBytes();
4183d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (int i = 0; i < bytes.length; i++) {
4193d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      b = bytes[i];
4203d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      if (! ( (b >= 48 && b <= 57) || (b >= 65 && b <= 90) ||
4213d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby             (b >= 97 && b <= 122))) {
4223d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby        hexRequired = true;
4233d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      }
4243d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      tmpHex = Integer.toHexString(((int)b) & 0xff ).toUpperCase();
4253d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      hex += tmpHex;
4263d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
4273d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4283d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = (hexRequired) ? hex.replaceAll(" ", "_") : tmp.replaceAll(" ", "_"); //carrier name...
4293d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fileName.append(tmp).append("_");
4303d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    tmp = st.nextToken(); //payment type
4313d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    fileName.append(tmp);
4323d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby//System.out.println(">" + fileName.toString() + "<");
4333d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    return fileName.toString();
4343d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
4353d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4363d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  ///// ================== for test only..... ===========================
4373d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  public static void printRecords() {
4383d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    for (int i = 0; i < Generator.arraySortedRecords.length; i++) {
4393d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby      System.out.println(
4403d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          "  mcc=" + Generator.arraySortedRecords[i].mcc +
4413d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          "  mnc=" + Generator.arraySortedRecords[i].mnc +
4423d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          "  mncLen=" + Generator.arraySortedRecords[i].mncLen +
4433d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          "  offset=" +
4443d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          Generator.arraySortedRecords[i].operator_name_offset +
4453d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          "  payment=" +
4463d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby          Generator.arraySortedRecords[i].account_type);
4473d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby    }
4483d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4493d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby  }
4503d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby
4513d91e7ce47853dc4e6ec7e1fc675c3d1585e3c51Jake Hamby}
452