Thursday, August 12, 2010

legal acts midlet

public class LegalActs extends MIDlet implements CommandListener, ItemStateListener, Runnable
{
static boolean flag = true;

static int selectedAboutus, selectedActivation, selectedHome, selectedSubmenu, selectedChildmenu, resultSize = 0;

static String txtEnterCode = "", activatedEnterCode = "", selectedSearch = "", searchRule = "", titleSubmenu = "", searchTitle, searchdKey = "", resultStr = "",enStr="";

public static String[] searchedSorting;

public Display dispMainMidlet;
private Form formDemo , formEnterCode , formSearch, formResult , formListAll, formGauge;
private Command cmdAbout , cmdActivate , cmdHome , cmdSearch , cmdCancel , cmdExit, cmdBack;
public List listAboutus , listActivation, listHome , listSubmenu, listChildmenu;
private TextField tfEnterCode , tfSearch , tfListAll;
private Alert alertConform, alertInfo;

private Gauge searchedGauge;
private Ticker tickerActivate;
public Hashtable searchedResult = null;
private Enumeration searchedEnum = null;
private Vector searchedVector = null, veListAll;
private SMSMessenger smsActivate;
private ListFilter lfListAll;

public LegalActs()
{
tfEnterCode = new TextField("Please enter activation code", null,50, TextField.ANY);
tfSearch = new TextField("", "", 10, TextField.ANY);
this.tfListAll = new TextField("Search :", "", 10, TextField.ANY);

cmdAbout = new Command("About", Command.OK, 1);
cmdActivate = new Command("Activate", Command.OK, 1);
cmdHome = new Command("Home", Command.OK, 1);
cmdSearch = new Command("Search", Command.OK, 1);
cmdCancel = new Command("Cancel", Command.CANCEL, 2);
cmdExit = new Command("Exit", Command.EXIT, 1);
cmdBack = new Command("Back", Command.BACK, 1);

formDemo = new Form("Demo");
formDemo.addCommand(cmdBack);
formDemo.addCommand(cmdExit);
formDemo.setCommandListener(this);

formEnterCode = new Form("Activate Code");
formEnterCode.append(tfEnterCode);
formEnterCode.addCommand(cmdActivate);
formEnterCode.addCommand(cmdCancel);
formEnterCode.setCommandListener(this);

formSearch = new Form("");
formResult = new Form("");
formGauge = new Form("File Loading");
searchedGauge = new Gauge("",false,Gauge.INDEFINITE, Gauge.CONTINUOUS_RUNNING);
formGauge.append("Please wait...");
formGauge.append(searchedGauge);

this.formListAll = new Form("List All");

tickerActivate = new Ticker("Please activate application");

listAboutus = new List("", List.IMPLICIT, CommonConstants.itemsAboutus, null);
listAboutus.addCommand(cmdAbout);
listAboutus.addCommand(cmdExit);
listAboutus.setCommandListener(this);
listAboutus.setTicker(tickerActivate);

listActivation = new List("Activate", List.IMPLICIT, CommonConstants.itemsActivation, null);
listActivation.addCommand(cmdBack);
listActivation.addCommand(cmdExit);
listActivation.setCommandListener(this);

listHome = new List("Home Menu", List.IMPLICIT, CommonConstants.itemsHome, null);
listHome.addCommand(cmdExit);
listHome.setCommandListener(this);

listChildmenu = new List("Child Menu", List.IMPLICIT, CommonConstants.itemsChildmenu, null);
listChildmenu.addCommand(cmdExit);
listChildmenu.addCommand(cmdBack);
listChildmenu.setCommandListener(this);
}

public void startApp()
{
dispMainMidlet = Display.getDisplay(this);
dispMainMidlet.setCurrent(new SplashScreen(this));
}

public void pauseApp()
{
}

public void destroyApp(boolean unconditional)
{
notifyDestroyed();
}

public void commandAction(Command c, Displayable d)
{
if (c == cmdExit)
{
destroyApp(true);
notifyDestroyed();
}

else if (c == cmdAbout)
{
String propStr = " Vendor : "+this.getAppProperty("MIDlet-Vendor")+"\n Version : "+this.getAppProperty("MIDlet-Version")+"\n Contact Info : "+this.getAppProperty("contact-info")+"\n";
alertInfo = new Alert("About",propStr, null, AlertType.INFO);
alertInfo.setTimeout(Alert.FOREVER);
dispMainMidlet.setCurrent(alertInfo);
}

else if (c == cmdHome)
{
tfSearch.setString("");
listSubmenu.deleteAll();
formSearch.deleteAll();
formResult.deleteAll();
dispMainMidlet.setCurrent(listHome);
}
else if(c == cmdBack)
{
if(d == listActivation)
{
dispMainMidlet.setCurrent(listAboutus);
}
else if(d == listSubmenu)
{
listSubmenu.deleteAll();
dispMainMidlet.setCurrent(listHome);
}
else if(d == listChildmenu)
{
tfSearch.setString("");
formSearch.deleteAll();
formResult.deleteAll();
dispMainMidlet.setCurrent(listSubmenu);
}
else if(d == formDemo)
{
formDemo.deleteAll();
dispMainMidlet.setCurrent(listAboutus);
}
else if(d == formSearch)
{
tfSearch.setString("");
formSearch.deleteAll();
formResult.deleteAll();
dispMainMidlet.setCurrent(listChildmenu);
}
else if(d == formResult)
{
tfSearch.setString("");
formResult.deleteAll();
dispMainMidlet.setCurrent(formSearch);
}

else if(d == formListAll)
{
tfListAll.setString("");
formListAll.deleteAll();
flag = true;
dispMainMidlet.setCurrent(listChildmenu);
}
}
else if (c == cmdCancel)
{
tfEnterCode.setString("");
dispMainMidlet.setCurrent(listActivation);
}
else if (d == listAboutus)
{
selectedAboutus = listAboutus.getSelectedIndex();

switch (selectedAboutus)
{
case 0:
dispMainMidlet.setCurrent(listActivation);
break;

case 1:
dispMainMidlet.setCurrent(formDemo);
break;
}
}
else if (d == listActivation)
{
selectedActivation = listActivation.getSelectedIndex();

switch (selectedActivation)
{
case 0:
try
{
enStr = new Decryptor().encrypt(AppUtil.getDeviceIMEIOrModel());
smsActivate = new SMSMessenger("");
smsActivate.send(enStr,this.getAppProperty("customer-phone"));

alertInfo = new Alert("Information", CommonConstants.APP_SMS_STATUS, null, AlertType.INFO);
alertInfo.setTimeout(Alert.FOREVER);
dispMainMidlet.setCurrent(alertInfo);
}
catch (Exception ex)
{
ex.printStackTrace();
}
break;

case 1:
dispMainMidlet.setCurrent(formEnterCode);
break;
}
}
else if (c == cmdActivate)
{
txtEnterCode = tfEnterCode.getString();

if (txtEnterCode.equals(""))
{
alertInfo = new Alert("Alert Message", CommonConstants.APP_ACTIVATE_LABEL, null, AlertType.ERROR);
alertInfo.setTimeout(Alert.FOREVER);
dispMainMidlet.setCurrent(alertInfo);
}
else
{
try
{
// server secure code start

int fullLength, subLength;
String subContent1 = "", subContent2 = "", fullContent ="";

fullLength = txtEnterCode.length();
subLength = fullLength / 2;

if((fullLength % 2) != 0)
++subLength;

subContent1 = txtEnterCode.substring(0,subLength);
subContent2 = txtEnterCode.substring(subLength,fullLength);
fullContent = subContent2 + subContent1;

// server secure code stop

activatedEnterCode = new Decryptor().decrypt(fullContent).trim();
//activatedEnterCode = new Decryptor().decrypt(txtEnterCode).trim();
System.out.println("Decry Text :" + activatedEnterCode);

if (activatedEnterCode.equals(AppUtil.getDeviceIMEIOrModel()))
{
new RMSManager().setActivationStatus(CommonConstants.APP_ACTIVATION_STATUS);
alertConform = new Alert("Confirmation", CommonConstants.APP_ACTIVATE_STATUS, null, AlertType.CONFIRMATION);
alertConform.setTimeout(Alert.FOREVER);
tfEnterCode.setString("");
dispMainMidlet.setCurrent(alertConform, listHome);
}
else
{
alertInfo = new Alert("Error", CommonConstants.APP_ACTIVATE_ERROR, null, AlertType.ERROR);
alertInfo.setTimeout(Alert.FOREVER);
dispMainMidlet.setCurrent(alertInfo);
tfEnterCode.setString("");
}
}
catch (Exception ex)
{
alertInfo = new Alert("Error", CommonConstants.APP_ACTIVATE_ERROR, null, AlertType.ERROR);
alertInfo.setTimeout(Alert.FOREVER);
dispMainMidlet.setCurrent(alertInfo);
tfEnterCode.setString("");
}
}
}
else if (d == listHome)
{
selectedHome = listHome.getSelectedIndex();

switch (selectedHome)
{
case 0:
listSubmenu = new List(CommonConstants.itemsHome[0], List.IMPLICIT, CommonConstants.itemsSubmenu1, null);
break;

case 1:
listSubmenu = new List(CommonConstants.itemsHome[1], List.IMPLICIT, CommonConstants.itemsSubmenu2, null);
break;

case 2:
listSubmenu = new List(CommonConstants.itemsHome[2], List.IMPLICIT, CommonConstants.itemsSubmenu3, null);
break;

case 3:
listSubmenu = new List(CommonConstants.itemsHome[3], List.IMPLICIT, CommonConstants.itemsSubmenu4, null);
break;

case 4:
listSubmenu = new List(CommonConstants.itemsHome[4], List.IMPLICIT, CommonConstants.itemsSubmenu5, null);
break;

case 5:
listSubmenu = new List(CommonConstants.itemsHome[5], List.IMPLICIT, CommonConstants.itemsSubmenu6, null);
break;

case 6:
listSubmenu = new List(CommonConstants.itemsHome[6], List.IMPLICIT, CommonConstants.itemsSubmenu7, null);
break;

case 7:
listSubmenu = new List(CommonConstants.itemsHome[7], List.IMPLICIT, CommonConstants.itemsSubmenu8, null);
break;

case 8:
listSubmenu = new List(CommonConstants.itemsHome[8], List.IMPLICIT, CommonConstants.itemsSubmenu9, null);
break;

case 9:
listSubmenu = new List(CommonConstants.itemsHome[9], List.IMPLICIT, CommonConstants.itemsSubmenu10, null);
break;
}

titleSubmenu = listSubmenu.getTitle();
titleSubmenu = titleSubmenu.substring(titleSubmenu.indexOf('.') + 1, titleSubmenu.length());
listSubmenu.setTitle(titleSubmenu);
listSubmenu.addCommand(cmdBack);
listSubmenu.addCommand(cmdExit);
listSubmenu.setCommandListener(this);
dispMainMidlet.setCurrent(listSubmenu);
}
else if (d == listSubmenu)
{
selectedSubmenu = listSubmenu.getSelectedIndex();

switch (selectedHome)
{
case 0:
selectedSearch = CommonConstants.itemsSubmenu1[selectedSubmenu];
break;

case 1:
selectedSearch = CommonConstants.itemsSubmenu2[selectedSubmenu];
break;

case 2:
selectedSearch = CommonConstants.itemsSubmenu3[selectedSubmenu];
break;

case 3:
selectedSearch = CommonConstants.itemsSubmenu4[selectedSubmenu];
break;

case 4:
selectedSearch = CommonConstants.itemsSubmenu5[selectedSubmenu];
break;

case 5:
selectedSearch = CommonConstants.itemsSubmenu6[selectedSubmenu];
break;

case 6:
selectedSearch = CommonConstants.itemsSubmenu7[selectedSubmenu];
break;

case 7:
selectedSearch = CommonConstants.itemsSubmenu8[selectedSubmenu];
break;

case 8:
selectedSearch = CommonConstants.itemsSubmenu9[selectedSubmenu];
break;

case 9:
selectedSearch = CommonConstants.itemsSubmenu10[selectedSubmenu];
break;
}

selectedSearch = selectedSearch.substring(selectedSearch.indexOf('.') + 1, selectedSearch.length());
listChildmenu.setTitle(selectedSearch);
dispMainMidlet.setCurrent(listChildmenu);
}
else if (d == listChildmenu)
{
selectedChildmenu = listChildmenu.getSelectedIndex();

switch (selectedChildmenu)
{
case 0:
tfSearch.setLabel("Enter the Section");
formSearch.setTitle("Search by Section");

formSearch.append(tfSearch);
formSearch.addCommand(cmdSearch);
formSearch.addCommand(cmdHome);
formSearch.addCommand(cmdBack);
formSearch.addCommand(cmdExit);
formSearch.setCommandListener(this);
dispMainMidlet.setCurrent(formSearch);
break;

case 1:
tfSearch.setLabel("Enter the Keyword");
formSearch.setTitle("Search by Keyword");

formSearch.append(tfSearch);
formSearch.addCommand(cmdSearch);
formSearch.addCommand(cmdHome);
formSearch.addCommand(cmdBack);
formSearch.addCommand(cmdExit);
formSearch.setCommandListener(this);
dispMainMidlet.setCurrent(formSearch);
break;

case 2:
new Thread(this).start();
break;
}

}
else if (c == cmdSearch)
{
searchRule = tfSearch.getString();

if (searchRule.equals(""))
{
alertInfo = new Alert("Alert Message");
alertInfo.setString(CommonConstants.APP_SEARCH_NULL_STATUS);
alertInfo.setType(AlertType.ERROR);
alertInfo.setTimeout(Alert.FOREVER);
dispMainMidlet.setCurrent(alertInfo);
}

else
{
new Thread(this).start();
}
}
}

public void itemStateChanged(Item itemListAll)
{
if (itemListAll instanceof TextField)
{
if (flag)
{
this.formListAll.deleteAll();
this.formListAll.append(this.tfListAll);
this.formListAll.append(this.lfListAll);
this.formListAll.addCommand(cmdBack);

flag = false;

String text = ((TextField) itemListAll).getString();
this.lfListAll.filter(text);
}
else
{
String text = ((TextField) itemListAll).getString();
this.lfListAll.filter(text);
}
}
}

public void run()
{
try
{
dispMainMidlet.setCurrent(formGauge);
if(selectedChildmenu == 2)
{
searchedResult = new LawDictionary().getLawByListAll(selectedSearch);
resultSize = searchedResult.size();

if (resultSize == 0)
{
formSearch.append(CommonConstants.APP_RESULT_NULL_STATUS);
dispMainMidlet.setCurrent(formSearch);
}

else
{
searchedVector = new Vector();
searchedEnum = searchedResult.keys();

while (searchedEnum.hasMoreElements())
{
searchedVector.addElement((String) searchedEnum.nextElement());
}

searchedSorting = new String[searchedVector.size()];
searchedVector.copyInto(searchedSorting);
searchedSorting = new LawDictionary().quickSort(searchedSorting, 0, searchedSorting.length - 1);

this.veListAll = new Vector();
this.formListAll.append(this.tfListAll);

for (int i = 0; i < searchedSorting.length; i++)
{
resultStr = searchedSorting[i] + " : " + searchedResult.get(searchedSorting[i]).toString();
veListAll.addElement(resultStr);
this.formListAll.append(resultStr+"\n\n");
}

this.lfListAll = new ListFilter(this.veListAll);
this.formListAll.addCommand(cmdBack);
this.formListAll.setCommandListener(this);
this.formListAll.setItemStateListener(this);
this.dispMainMidlet.setCurrent(this.formListAll);
}
}

else
{
searchTitle = formSearch.getTitle();

if (searchTitle.equals("Search by Section"))
{
formResult.setTitle("Result by Section");
searchedResult = new LawDictionary().getLawBySectionId(searchRule, selectedSearch);
resultSize = searchedResult.size();
}
else if (searchTitle.equals("Search by Keyword"))
{
formResult.setTitle("Result by Keyword");
searchedResult = new LawDictionary().getLawsByKeyword(searchRule, selectedSearch);
resultSize = searchedResult.size();
}

if (resultSize == 0)
{
formResult.append(CommonConstants.APP_RESULT_NULL_STATUS);
}
else
{
if (searchTitle.equals("Search by Keyword"))
{
searchedVector = new Vector();
searchedEnum = searchedResult.keys();

while (searchedEnum.hasMoreElements())
{
searchedVector.addElement((String) searchedEnum.nextElement());
}

searchedSorting = new String[searchedVector.size()];
searchedVector.copyInto(searchedSorting);
searchedSorting = new LawDictionary().quickSort(searchedSorting, 0, searchedSorting.length - 1);

for (int i = 0; i < searchedSorting.length; i++)
{
resultStr = searchedSorting[i] + " : " + searchedResult.get(searchedSorting[i]).toString();
formResult.append(resultStr + "\n\n");
}
}

else
{
searchedEnum = searchedResult.keys();

while (searchedEnum.hasMoreElements())
{
searchdKey = (String) searchedEnum.nextElement();
resultStr = searchdKey + " : " + searchedResult.get(searchdKey).toString();
formResult.append(resultStr + "\n\n");
}
}
}

formResult.addCommand(cmdBack);
formResult.setCommandListener(this);
dispMainMidlet.setCurrent(formResult);
}
}

catch (Exception ex)
{
ex.printStackTrace();
}
}
}