public static int getDB(String sql) {
   try {
     ASA db = new ASA();
     db.setProperty("host", "localhost");
     db.setProperty("login", "dba");
     db.setProperty("password", "sql");
     db.setProperty("port", "5500");
     db.setProperty("driverClass", "com.sybase.jdbc3.jdbc.SybDriver");
     List result = DBUtil.runSQLForResult((IDBResource) db, sql);
     System.out.println(result.size());
     return result.size();
   } catch (Exception e) {
     e.printStackTrace();
     throw new RuntimeException("Failed to get record data from DB");
   }
 }
  /**
   * Script Name : <b>EMailTriggering_E2E_05</b> Generated : <b>Oct 19, 2011 9:03:19 PM</b>
   * Description : Functional Test Script Original Host : WinNT Version 5.1 Build 2600 (S)
   *
   * @since 2011/10/19
   * @author ffan
   */
  public void testMain(Object[] args) {
    // TODO Insert code here
    // restore the initial table record
    String sqldelete = "delete from Mbo1 where C1=1";
    try {
      DBUtil.runSQL((IDBResource) RC.getResource(ASA.class), sqldelete);
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    String sqlcreate = "insert into Mbo1 values (1,'one')";
    try {
      DBUtil.runSQL((IDBResource) RC.getResource(ASA.class), sqlcreate);
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    WN.useProject(Cfg.projectName);
    EE.dnd("Database Connections->My Sample Database->sampledb->Tables->mbo1 (dba)");
    WN.deployProject(
        new DeployOption()
            .startParameter(Cfg.projectName)
            .server("My Unwired Server")
            .mode(DeployOption.MODE_REPLACE)
            .serverConnectionMapping("My Sample Database,sampledb"));

    WN.createWorkFlow(
        new WorkFlow()
            .startParameter(Cfg.projectName)
            .name(Cfg.wfName)
            .option(WorkFlow.SP_SERVER_INIT));

    PropertiesView.jumpStart(
        new WorkFlow()
            .mbo("Mbo1")
            .objectQuery("findByPrimaryKey")
            .from("imo@localhost")
            .subject("<id>2</id>")
            .fromMatchingRule("imo")
            .setParameterValue("C1,Subject,<id>,</id>"));

    WorkFlowEditor.dragMbo(Cfg.projectName, "Mbo1");
    WorkFlowEditor.removeScreen("Mbo1");
    WorkFlowEditor.removeScreen("Mbo1updateinstance");
    WorkFlowEditor.removeScreen("Mbo1create");
    WorkFlowEditor.removeScreen("Mbo1deleteinstance");
    sleep(1);
    MainMenu.saveAll();
    WorkFlowEditor.addScreen("MyUpdate");
    WorkFlowEditor.link(WorkFlow.SP_SERVER_INIT, "Mbo1Detail");
    WorkFlowEditor.addMenuItem(
        "Mbo1Detail", new WFScreenMenuItem().name("Open MyUpdate").type("Open").screen("MyUpdate"));
    sleep(1);
    MainMenu.saveAll();

    WorkFlowEditor.removeMenuItem("Mbo1Detail", "Back");
    WorkFlowEditor.addMenuItem(
        "Mbo1Detail",
        new WFScreenMenuItem()
            .name("submit")
            .type("Submit Workflow")
            .project(Cfg.projectName)
            .mbo("Mbo1"));
    sleep(1);
    MainMenu.saveAll();

    WorkFlowEditor.addWidget(
        "MyUpdate", new WFEditBox().label("C1:").key("Mbo1_C1_attribKey").ifReadonly(true));
    sleep(1);
    MainMenu.saveAll();
    WorkFlowEditor.addWidget("MyUpdate", new WFEditBox().label("C2:").key("Mbo1_C2_attribKey"));
    sleep(1);
    MainMenu.saveAll();
    WorkFlowEditor.addMenuItem(
        "MyUpdate",
        new WFScreenMenuItem()
            .name("update")
            .type("Online Request")
            .project(Cfg.projectName)
            .mbo("Mbo1")
            .operation("update")
            .submitErrMsg("this is my submit error message")
            .defaultSuccessScreen("Mbo1Detail")
            .parametermapping("C1,Mbo1_C1_attribKey")
            .parametermapping("C2,Mbo1_C2_attribKey"));

    MainMenu.saveAll();
    vpManual("hasError", 0, Problems.getErrors().size()).performTest();

    WFCustomizer.runTest(
        new WorkFlowPackage()
            .startParameter(WN.filePath(Cfg.projectName, Cfg.wfName))
            .assignToUser(Cfg.deviceUser)
            .unwiredServer("My Unwired Server")
            .deployToServer("true"),
        customTestScript(),
        //			"tplan.Workflow.iconcommon.BB.server_dt_icon.Script",
        new CallBackMethod()
            .receiver(WorkFlowEditor.class)
            .methodName("sendNotification")
            .parameter(new Email().from("imo@localhost").subject("<id>1</id>")));

    WFCustomizer.verifyResult(
        new WFClientResult()
            .data("id=Mbo1_C1_attribKey,value=1|" + "id=Mbo1_C2_attribKey,value=one"));

    // vp: the new record is added in the datebase:
    java.util.List<String> clause = new ArrayList<String>();
    clause.add("C1=1");
    clause.add("C2='newone'");
    vpManual("dbresult", 1, CDBUtil.getRecordCount("localhost", "wf", "Mbo1", clause))
        .performTest();
  }
  /**
   * Script Name : <b>CdtnScr_Request_CRUD_01_Create_E2E</b> Generated : <b>Feb 29, 2012 9:11:46
   * PM</b> Description : Functional Test Script Original Host : WinNT Version 5.1 Build 2600 (S)
   *
   * @since 2012/02/29
   * @author ffan
   */
  public void testMain(Object[] args) {
    // TODO Insert code here
    //		create:
    // delete the date which will be created in the following code
    try {
      DBUtil.runSQL(
          (IDBResource) RC.getResource(ASA.class), "delete from States where state_id='CH'");
    } catch (SQLException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (ClassNotFoundException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    WN.useProject(Cfg.projectName);
    EE.dnd("Database Connections->My Sample Database->sampledb->Tables->states (dba)");
    WN.deployProject(
        new DeployOption()
            .startParameter(Cfg.projectName)
            .server("My Unwired Server")
            .mode(DeployOption.MODE_REPLACE)
            .serverConnectionMapping("My Sample Database,sampledb"));

    WN.createWorkFlow(
        new WorkFlow()
            .startParameter(Cfg.projectName)
            .name("myWF")
            .option(WorkFlow.SP_CLIENT_INIT));
    WorkFlowEditor.dragMbo(Cfg.projectName, "States");
    WorkFlowEditor.link("StatesDetail", "Statescreate");

    WorkFlowEditor.addWidget("Start", new WFEditBox().label("id:").newKey("id,string"));
    WorkFlowEditor.addMenuItem(
        "Start",
        new WFScreenMenuItem()
            .name("findByPK")
            .type("Online Request")
            .mbo("States")
            .objectQuery("findByPrimaryKey")
            .project(Cfg.projectName)
            .defaultSuccessScreen("StatesDetail")
            .parametermapping("state_id,id"));

    PropertiesView.set(
        new WFScreen().name("Statescreate"),
        new Modifications()
            .mod(
                "create",
                new WFScreenMenuItem()
                    .name("Create")
                    .type("Online Request")
                    .defaultSuccessScreen("StatesDetail")));

    PropertiesView.addConditionTableOfMenuItem("c1", "Start");
    MainMenu.saveAll();
    WFCustomizer.runTest(
        new WorkFlowPackage()
            .startParameter(WN.filePath(Cfg.projectName, Cfg.wfName))
            .assignToUser(testscript.Workflow.cfg.Cfg.deviceUser)
            .deployToServer("true")
            .unwiredServer("My Unwired Server"),
        script()
        //			,
        //			testscript.Workflow.cfg.Cfg.tplanScript_client_1
        );

    // vp:data in device
    WFCustomizer.verifyResult(
        new WFClientResult().data("id=States_state_id_attribKey,value=AB|" + "id=id,value=AB"));

    // vp2:verify the update record  has added into backend db in state
    vpManual(
            "db",
            1,
            DBUtil.getDB("select * from states where state_id='CH' and state_name='China'"))
        .performTest();
  }