Example usage for java.util ArrayList remove

List of usage examples for java.util ArrayList remove

Introduction

In this page you can find the example usage for java.util ArrayList remove.

Prototype

public boolean remove(Object o) 

Source Link

Document

Removes the first occurrence of the specified element from this list, if it is present.

Usage

From source file:com.krawler.spring.hrms.rec.job.hrmsRecJobController.java

public JSONObject getJobApplicationsJson(HttpServletRequest request, HttpServletResponse response) {
    KwlReturnObject result = null, recruitresult = null;
    JSONObject jobj = new JSONObject();
    JSONArray jarr = new JSONArray();
    String hql = "";
    int count = 0;
    boolean isadmin = false;
    HashMap<String, Object> requestParams = new HashMap<String, Object>();
    int type = 0;
    try {// w w w. j  ava 2  s.  c o  m
        DateFormat df = sessionHandlerImplObj.getDateFormatter(request);
        String Searchjson = request.getParameter("searchJson");
        List lst = null;
        List lst1 = null;
        String cmpid = sessionHandlerImplObj.getCompanyid(request);
        String userid = sessionHandlerImplObj.getUserid(request);
        requestParams.clear();
        requestParams.put("userid", userid);
        if (hrmsCommonDAOObj.isAdmin(userid)) {
            isadmin = true;
        }
        ArrayList params = new ArrayList();
        ArrayList filter_name = new ArrayList();
        ArrayList order_by = new ArrayList();
        ArrayList order_type = new ArrayList();
        String ss = request.getParameter("ss");
        int statusid = StringUtil.isNullOrEmpty(request.getParameter("statusid")) ? -1
                : Integer.parseInt(request.getParameter("statusid"));
        String tempstatus = statusid == 1 ? "Pending"
                : (statusid == 2 ? "Shortlisted"
                        : (statusid == 3 ? "In Process" : (statusid == 4 ? "On Hold" : "")));
        if (StringUtil.isNullOrEmpty(request.getParameter("userid"))) {
            int emptype = Integer.parseInt(request.getParameter("employeetype"));
            type = emptype;
            int gridst = Integer.parseInt(request.getParameter("gridst"));

            String[] searchArray = null;
            String[] searchArray1 = null;
            if (emptype == 1) {//Internal
                searchArray = new String[] { "employee.firstName", "employee.lastName", "position.jobid",
                        "position.departmentid.value" };
                params.add(0);
                filter_name.add("employee.deleteflag");
            } else if (emptype == 2) { // else added to execute only one condition
                emptype = 1;
                searchArray = new String[] { "employee.firstName", "employee.lastName", "position.jobid",
                        "position.departmentid.value" };
                searchArray1 = new String[] { "configjobapplicant.col1", "configjobapplicant.col2",
                        "position.jobid", "position.departmentid.value" };
                params.add(0);
                filter_name.add("employee.deleteflag");
                params.add(false);
                filter_name.add("configjobapplicant.deleted");
            } else {//External
                searchArray = new String[] { "configjobapplicant.col1", "configjobapplicant.col2",
                        "position.jobid", "position.departmentid.value" };
                params.add(false);
                filter_name.add("configjobapplicant.deleted");
            }
            if (emptype == 0) {
                emptype = 4; //configjobapplicant=4 reset to 0
            }
            if (StringUtil.isNullOrEmpty(request.getParameter("status"))) {
                params.add(gridst);
                params.add(cmpid);
                params.add(0);
                params.add(emptype);
                //params.add(false);
                filter_name.add("applicationflag");
                filter_name.add("company.companyID");
                filter_name.add("delflag");
                filter_name.add("employeetype");
                //filter_name.add("configjobapplicant.deleted");
            } else {
                if (!tempstatus.equals("")) {
                    params.add(gridst);
                    params.add(cmpid);
                    params.add(0);
                    params.add(tempstatus);
                    params.add(emptype);
                    filter_name.add("applicationflag");
                    filter_name.add("company.companyID");
                    filter_name.add("delflag");
                    filter_name.add("status");
                    filter_name.add("employeetype");
                } else {
                    params.add(gridst);
                    params.add(cmpid);
                    params.add(0);
                    params.add(emptype);
                    filter_name.add("applicationflag");
                    filter_name.add("company.companyID");
                    filter_name.add("delflag");
                    filter_name.add("employeetype");
                }
            }
            if (!isadmin) {
                params.add(userid);
                filter_name.add("position.manager.userID");
            }
            order_by.add("position.positionid");
            order_type.add("asc");
            requestParams.put("filter_names", filter_name);
            requestParams.put("filter_values", params);

            ArrayList params1 = new ArrayList(params);
            ArrayList filter_name1 = new ArrayList(filter_name);
            if (filter_name1.contains("employee.deleteflag")) {
                params1.remove(filter_name1.indexOf("employee.deleteflag"));
                filter_name1.remove("employee.deleteflag");
            }
            if (filter_name.contains("configjobapplicant.deleted") && !(emptype == 4)) {
                params.remove(filter_name.indexOf("configjobapplicant.deleted"));
                filter_name.remove("configjobapplicant.deleted");
            }
            requestParams.put("filter_names1", filter_name1);
            requestParams.put("filter_values1", params1);

            requestParams.put("order_by", order_by);
            requestParams.put("order_type", order_type);
            requestParams.put("ss", request.getParameter("ss"));
            requestParams.put("searchcol", searchArray);
            requestParams.put("searchcol1", searchArray1);
            requestParams.put("allflag", true);
            if (!StringUtil.isNullOrEmpty(Searchjson)) {
                getMyAdvanceSearchparams1(Searchjson, filter_name, (type != 2 ? type : 1));
                insertParamAdvanceSearchString1(params, Searchjson, type);
                getMyAdvanceSearchparams1(Searchjson, filter_name1, (type != 2 ? type : 0));
                insertParamAdvanceSearchString1(params1, Searchjson, type);
            }
            StringUtil.checkpaging(requestParams, request);
            result = hrmsRecJobDAOObj.getPositionstatus(requestParams);
        } else {
            params.add(request.getParameter("userid"));
            params.add(cmpid);
            params.add(0);
            params.add(false);
            filter_name.add("configjobapplicant.id");
            filter_name.add("company.companyID");
            filter_name.add("delflag");
            filter_name.add("configjobapplicant.deleted");
            order_by.add("position.positionid");
            order_type.add("asc");
            requestParams.put("filter_names", filter_name);
            requestParams.put("filter_values", params);
            requestParams.put("order_by", order_by);
            requestParams.put("order_type", order_type);
            requestParams.put("ss", request.getParameter("ss"));
            requestParams.put("searchcol", new String[] { "position.jobid", "position.position.value" });
            requestParams.put("allflag", true);
            if (!StringUtil.isNullOrEmpty(Searchjson)) {
                getMyAdvanceSearchparams1(Searchjson, filter_name, type);
                insertParamAdvanceSearchString1(params, Searchjson, type);
            }
            StringUtil.checkpaging(requestParams, request);
            result = hrmsRecJobDAOObj.getPositionstatus(requestParams);

        }
        Allapplications allapps = null;
        count = result.getRecordTotalCount();
        lst = result.getEntityList();
        for (int ctr = 0; ctr < lst.size(); ctr++) {
            //                if(isadmin){
            allapps = (Allapplications) lst.get(ctr);
            //                }else{
            //                    Recruiter rec=(Recruiter) lst.get(ctr);
            //                    allapps = rec.getAllapplication();
            //                }

            JSONObject tmpObj = new JSONObject();
            tmpObj.put("rejectedbefore", (allapps.getRejectedbefore() == 0) ? "No" : "Yes");
            tmpObj.put("id", "");
            tmpObj.put("posid", allapps.getPosition().getPositionid());
            tmpObj.put("designationid", allapps.getPosition().getPosition().getId());
            tmpObj.put("departmentid", allapps.getPosition().getDepartmentid().getId());
            tmpObj.put("department", allapps.getPosition().getDepartmentid().getValue());
            tmpObj.put("Department", allapps.getPosition().getDepartmentid().getValue());
            tmpObj.put("designation", allapps.getPosition().getPosition().getValue());
            tmpObj.put("jobpositionid", allapps.getPosition().getJobid());
            tmpObj.put("jobid", allapps.getPosition().getJobid());
            tmpObj.put("JobId", allapps.getPosition().getJobid());
            tmpObj.put("vacancy", allapps.getPosition().getNoofpos());
            tmpObj.put("filled", allapps.getPosition().getPositionsfilled());
            tmpObj.put("jname", allapps.getPosition().getPosition().getValue());
            tmpObj.put("applydt", df.format(allapps.getApplydate()));
            tmpObj.put("interviewdt",
                    (allapps.getInterviewdate() == null ? "" : df.format(allapps.getInterviewdate())));
            tmpObj.put("joiningdate",
                    (allapps.getJoiningdate() == null ? "" : df.format(allapps.getJoiningdate())));
            tmpObj.put("status", allapps.getStatus());
            tmpObj.put("jobDetails", allapps.getPosition().getDetails());
            if (allapps.getConfigjobapplicant() != null) {
                tmpObj.put("apcntid", allapps.getConfigjobapplicant().getId());
                tmpObj.put("cname", allapps.getConfigjobapplicant().getCol1() + " "
                        + allapps.getConfigjobapplicant().getCol2());
                tmpObj.put("email", allapps.getConfigjobapplicant().getCol3());
                tmpObj.put("fname", allapps.getConfigjobapplicant().getCol1());
                tmpObj.put("lname", allapps.getConfigjobapplicant().getCol2());
                tmpObj.put("contact",
                        allapps.getConfigjobapplicant().getCol4() != null
                                ? allapps.getConfigjobapplicant().getCol4()
                                : "");
                tmpObj.put("addr",
                        allapps.getConfigjobapplicant().getCol6() != null
                                ? allapps.getConfigjobapplicant().getCol6()
                                : "");
                tmpObj.put("employeetype", 0);
                if (!StringUtil.isNullOrEmpty(allapps.getConfigjobapplicant().getCol5())) {
                    tmpObj.put("docid", allapps.getConfigjobapplicant().getCol5());
                }
                //                    getdocsbyuser(request,allapps.getConfigjobapplicant().getId(),tmpObj);
            } else {
                tmpObj.put("apcntid", allapps.getEmployee().getUserID());
                tmpObj.put("cname",
                        allapps.getEmployee().getFirstName() + " " + allapps.getEmployee().getLastName());
                tmpObj.put("email", allapps.getEmployee().getEmailID());
                tmpObj.put("fname", allapps.getEmployee().getFirstName());
                tmpObj.put("lname",
                        allapps.getEmployee().getLastName() != null ? allapps.getEmployee().getLastName() : "");
                tmpObj.put("contact",
                        allapps.getEmployee().getContactNumber() != null
                                ? allapps.getEmployee().getContactNumber()
                                : "");
                tmpObj.put("addr",
                        allapps.getEmployee().getAddress() != null ? allapps.getEmployee().getAddress() : "");
                tmpObj.put("employeetype", 1);
            }

            ArrayList recruiterparams = new ArrayList();
            recruiterparams.add(allapps.getId());
            ArrayList filter_names = new ArrayList();
            filter_names.add("allapplication.id");
            requestParams.clear();
            requestParams.put("filter_names", filter_names);
            requestParams.put("filter_values", recruiterparams);
            recruitresult = hrmsRecJobDAOObj.getRecruiters(requestParams);
            String recruiter = "";
            if (StringUtil.checkResultobjList(recruitresult)) {
                List recruiterlist = recruitresult.getEntityList();
                for (int k = 0; k < recruiterlist.size(); k++) {
                    Recruiter r = (Recruiter) recruiterlist.get(k);
                    recruiter += (r.getRecruit().getFirstName() + " " + r.getRecruit().getLastName());
                    if (recruiterlist.size() > k + 1)
                        recruiter += ", ";
                }
            }
            tmpObj.put("recruiter", recruiter);
            tmpObj.put("callback", (allapps.getCallback() == null ? "" : allapps.getCallback().getValue()));
            tmpObj.put("interviewplace", allapps.getInterviewplace());
            tmpObj.put("interviewcomment", allapps.getInterviewcomment());
            tmpObj.put("rank", (allapps.getRank() == null ? "" : allapps.getRank().getValue()));
            jarr.put(tmpObj);
        }
        jobj.put("data", jarr);
        jobj.put("count", count);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        return jobj;
    }
}

From source file:com.krawler.spring.hrms.rec.job.hrmsRecJobController.java

public ModelAndView getJobApplications(HttpServletRequest request, HttpServletResponse response) {
    KwlReturnObject result = null, recruitresult = null;
    JSONObject jobj = new JSONObject();
    JSONObject jobj1 = new JSONObject();
    JSONArray jarr = new JSONArray();
    String hql = "";
    int count = 0;
    boolean isadmin = false;
    HashMap<String, Object> requestParams = new HashMap<String, Object>();
    int type = 0;
    try {// ww w.  j a v  a 2 s  . c om
        String Searchjson = request.getParameter("searchJson");
        List lst = null;
        List lst1 = null;
        String cmpid = sessionHandlerImplObj.getCompanyid(request);
        String userid = sessionHandlerImplObj.getUserid(request);
        requestParams.clear();
        requestParams.put("userid", userid);
        if (hrmsCommonDAOObj.isAdmin(userid)) {
            isadmin = true;
        }
        ArrayList params = new ArrayList();
        ArrayList filter_name = new ArrayList();
        ArrayList order_by = new ArrayList();
        ArrayList order_type = new ArrayList();
        String ss = request.getParameter("ss");
        int statusid = StringUtil.isNullOrEmpty(request.getParameter("statusid")) ? -1
                : Integer.parseInt(request.getParameter("statusid"));
        String tempstatus = statusid == 1 ? "Pending"
                : (statusid == 2 ? "Shortlisted"
                        : (statusid == 3 ? "In Process" : (statusid == 4 ? "On Hold" : "")));
        if (StringUtil.isNullOrEmpty(request.getParameter("userid"))) {
            int emptype = Integer.parseInt(request.getParameter("employeetype"));
            type = emptype;
            int gridst = Integer.parseInt(request.getParameter("gridst"));

            String[] searchArray = null;
            String[] searchArray1 = null;
            if (emptype == 1) {//Internal
                searchArray = new String[] { "employee.firstName", "employee.lastName", "position.jobid",
                        "position.departmentid.value" };
                params.add(0);
                filter_name.add("employee.deleteflag");
            } else if (emptype == 2) { // else added to execute only one condition
                emptype = 1;
                searchArray = new String[] { "employee.firstName", "employee.lastName", "position.jobid",
                        "position.departmentid.value" };
                searchArray1 = new String[] { "configjobapplicant.col1", "configjobapplicant.col2",
                        "position.jobid", "position.departmentid.value" };
                params.add(0);
                filter_name.add("employee.deleteflag");
                params.add(false);
                filter_name.add("configjobapplicant.deleted");
            } else {//External
                searchArray = new String[] { "configjobapplicant.col1", "configjobapplicant.col2",
                        "position.jobid", "position.departmentid.value" };
                params.add(false);
                filter_name.add("configjobapplicant.deleted");
            }
            if (emptype == 0) {
                emptype = 4; //configjobapplicant=4 reset to 0
            }
            if (StringUtil.isNullOrEmpty(request.getParameter("status"))) {
                params.add(gridst);
                params.add(cmpid);
                params.add(0);
                params.add(emptype);
                //params.add(false);
                filter_name.add("applicationflag");
                filter_name.add("company.companyID");
                filter_name.add("delflag");
                filter_name.add("employeetype");
                //filter_name.add("configjobapplicant.deleted");
            } else {
                if (!tempstatus.equals("")) {
                    params.add(gridst);
                    params.add(cmpid);
                    params.add(0);
                    params.add(tempstatus);
                    params.add(emptype);
                    filter_name.add("applicationflag");
                    filter_name.add("company.companyID");
                    filter_name.add("delflag");
                    filter_name.add("status");
                    filter_name.add("employeetype");
                } else {
                    params.add(gridst);
                    params.add(cmpid);
                    params.add(0);
                    params.add(emptype);
                    filter_name.add("applicationflag");
                    filter_name.add("company.companyID");
                    filter_name.add("delflag");
                    filter_name.add("employeetype");
                }
            }
            if (!isadmin) {
                params.add(userid);
                filter_name.add("position.manager.userID");
            }
            order_by.add("position.departmentid.value");
            order_by.add("position.jobid");
            order_type.add("");
            order_type.add("asc");
            requestParams.put("filter_names", filter_name);
            requestParams.put("filter_values", params);

            ArrayList params1 = new ArrayList(params);
            ArrayList filter_name1 = new ArrayList(filter_name);
            if (filter_name1.contains("employee.deleteflag")) {
                params1.remove(filter_name1.indexOf("employee.deleteflag"));
                filter_name1.remove("employee.deleteflag");
            }
            if (filter_name.contains("configjobapplicant.deleted") && !(emptype == 4)) {
                params.remove(filter_name.indexOf("configjobapplicant.deleted"));
                filter_name.remove("configjobapplicant.deleted");
            }
            requestParams.put("filter_names1", filter_name1);
            requestParams.put("filter_values1", params1);

            requestParams.put("order_by", order_by);
            requestParams.put("order_type", order_type);
            requestParams.put("ss", request.getParameter("ss"));
            requestParams.put("searchcol", searchArray);
            requestParams.put("searchcol1", searchArray1);
            requestParams.put("allflag", false);
            if (!StringUtil.isNullOrEmpty(Searchjson)) {
                getMyAdvanceSearchparams1(Searchjson, filter_name, (type != 2 ? type : 1));
                insertParamAdvanceSearchString1(params, Searchjson, type);
                getMyAdvanceSearchparams1(Searchjson, filter_name1, (type != 2 ? type : 0));
                insertParamAdvanceSearchString1(params1, Searchjson, type);
            }
            StringUtil.checkpaging(requestParams, request);
            result = hrmsRecJobDAOObj.getPositionstatus(requestParams);
        } else {
            params.add(request.getParameter("userid"));
            params.add(cmpid);
            params.add(0);
            params.add(false);
            filter_name.add("configjobapplicant.id");
            filter_name.add("company.companyID");
            filter_name.add("delflag");
            filter_name.add("configjobapplicant.deleted");
            order_by.add("position.departmentid.value");
            order_by.add("position.jobid");
            order_type.add("");
            order_type.add("asc");
            requestParams.put("filter_names", filter_name);
            requestParams.put("filter_values", params);
            requestParams.put("order_by", order_by);
            requestParams.put("order_type", order_type);
            requestParams.put("ss", request.getParameter("ss"));
            requestParams.put("searchcol", new String[] { "position.jobid", "position.position.value" });
            requestParams.put("allflag", false);
            if (!StringUtil.isNullOrEmpty(Searchjson)) {
                getMyAdvanceSearchparams1(Searchjson, filter_name, type);
                insertParamAdvanceSearchString1(params, Searchjson, type);
            }
            StringUtil.checkpaging(requestParams, request);
            result = hrmsRecJobDAOObj.getPositionstatus(requestParams);

        }
        Allapplications allapps = null;
        count = result.getRecordTotalCount();
        lst = result.getEntityList();
        for (int ctr = 0; ctr < lst.size(); ctr++) {
            //                if(isadmin){
            allapps = (Allapplications) lst.get(ctr);
            //                }else{
            //                    Recruiter rec=(Recruiter) lst.get(ctr);
            //                    allapps = rec.getAllapplication();
            //                }

            JSONObject tmpObj = new JSONObject();
            tmpObj.put("id", allapps.getId());
            tmpObj.put("posid", allapps.getPosition().getPositionid());
            tmpObj.put("rejectedbefore", allapps.getRejectedbefore());
            tmpObj.put("designationid", allapps.getPosition().getPosition().getId());
            tmpObj.put("departmentid", allapps.getPosition().getDepartmentid().getId());
            tmpObj.put("department", allapps.getPosition().getDepartmentid().getValue());
            tmpObj.put("Department", allapps.getPosition().getDepartmentid().getValue());
            tmpObj.put("designation", allapps.getPosition().getPosition().getValue());
            tmpObj.put("jobpositionid", allapps.getPosition().getJobid());
            tmpObj.put("jobid", allapps.getPosition().getPositionid());
            tmpObj.put("JobId", allapps.getPosition().getPosition().getValue());
            tmpObj.put("vacancy", allapps.getPosition().getNoofpos());
            tmpObj.put("filled", allapps.getPosition().getPositionsfilled());
            tmpObj.put("jname", allapps.getPosition().getPosition().getValue());
            tmpObj.put("applydt",
                    sessionHandlerImplObj.getDateFormatter(request).format(allapps.getApplydate()));
            tmpObj.put("interviewdt", (allapps.getInterviewdate() == null ? ""
                    : sessionHandlerImplObj.getDateFormatter(request).format(allapps.getInterviewdate())));
            tmpObj.put("joiningdate", (allapps.getJoiningdate() == null ? ""
                    : sessionHandlerImplObj.getDateFormatter(request).format(allapps.getJoiningdate())));
            tmpObj.put("status", allapps.getStatus());
            tmpObj.put("jobDetails", allapps.getPosition().getDetails());
            if (allapps.getConfigjobapplicant() != null) {
                tmpObj.put("apcntid", allapps.getConfigjobapplicant().getId());
                tmpObj.put("cname", allapps.getConfigjobapplicant().getCol1() + " "
                        + allapps.getConfigjobapplicant().getCol2());
                tmpObj.put("email", allapps.getConfigjobapplicant().getCol3());
                tmpObj.put("fname", allapps.getConfigjobapplicant().getCol1());
                tmpObj.put("lname", allapps.getConfigjobapplicant().getCol2());
                tmpObj.put("contact",
                        allapps.getConfigjobapplicant().getCol4() != null
                                ? allapps.getConfigjobapplicant().getCol4()
                                : "");
                tmpObj.put("addr",
                        allapps.getConfigjobapplicant().getCol6() != null
                                ? allapps.getConfigjobapplicant().getCol6()
                                : "");
                tmpObj.put("employeetype", 0);
                if (!StringUtil.isNullOrEmpty(allapps.getConfigjobapplicant().getCol5())) {
                    tmpObj.put("docid", allapps.getConfigjobapplicant().getCol5());
                }
                //                    getdocsbyuser(request,allapps.getConfigjobapplicant().getId(),tmpObj);
            } else {
                tmpObj.put("apcntid", allapps.getEmployee().getUserID());
                tmpObj.put("cname",
                        allapps.getEmployee().getFirstName() + " " + allapps.getEmployee().getLastName());
                tmpObj.put("email", allapps.getEmployee().getEmailID());
                tmpObj.put("fname", allapps.getEmployee().getFirstName());
                tmpObj.put("lname", allapps.getEmployee().getLastName());
                tmpObj.put("contact", allapps.getEmployee().getContactNumber());
                tmpObj.put("addr", allapps.getEmployee().getAddress());
                tmpObj.put("employeetype", 1);
            }

            ArrayList recruiterparams = new ArrayList();
            recruiterparams.add(allapps.getId());
            ArrayList filter_names = new ArrayList();
            filter_names.add("allapplication.id");
            requestParams.clear();
            requestParams.put("filter_names", filter_names);
            requestParams.put("filter_values", recruiterparams);
            recruitresult = hrmsRecJobDAOObj.getRecruiters(requestParams);
            if (StringUtil.checkResultobjList(recruitresult)) {
                List recruiterlist = recruitresult.getEntityList();
                for (int k = 0; k < recruiterlist.size(); k++) {
                    Recruiter r = (Recruiter) recruiterlist.get(k);
                    tmpObj.append("recruiter",
                            r.getRecruit().getFirstName() + " " + r.getRecruit().getLastName());
                }
            }

            tmpObj.put("callback", (allapps.getCallback() == null ? "" : allapps.getCallback().getValue()));
            tmpObj.put("interviewplace", allapps.getInterviewplace());
            tmpObj.put("interviewcomment", allapps.getInterviewcomment());
            tmpObj.put("rank", (allapps.getRank() == null ? "" : allapps.getRank().getValue()));
            jarr.put(tmpObj);
        }
        jobj.put("data", jarr);
        jobj.put("count", count);
        jobj1.put("valid", true);
        jobj1.put("data", jobj.toString());

    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }
}

From source file:net.droidsolutions.droidcharts.core.plot.CategoryPlot.java

/**
 * Removes a marker for a specific dataset/renderer and, if requested, sends
 * a {@link PlotChangeEvent} to all registered listeners.
 * //from w ww .j a va 2  s .  c om
 * @param index
 *            the dataset/renderer index.
 * @param marker
 *            the marker.
 * @param layer
 *            the layer (foreground or background).
 * @param notify
 *            notify listeners?
 * 
 * @return A boolean indicating whether or not the marker was actually
 *         removed.
 * 
 * @since 1.0.10
 */
public boolean removeDomainMarker(int index, Marker marker, Layer layer, boolean notify) {
    ArrayList markers;
    if (layer == Layer.FOREGROUND) {
        markers = (ArrayList) this.foregroundDomainMarkers.get(new Integer(index));
    } else {
        markers = (ArrayList) this.backgroundDomainMarkers.get(new Integer(index));
    }
    if (markers == null) {
        return false;
    }
    boolean removed = markers.remove(marker);

    return removed;
}

From source file:net.droidsolutions.droidcharts.core.plot.CategoryPlot.java

/**
 * Removes a marker for a specific dataset/renderer and sends a
 * {@link PlotChangeEvent} to all registered listeners.
 * /*from  w  w w .ja va2  s  .co m*/
 * @param index
 *            the dataset/renderer index.
 * @param marker
 *            the marker.
 * @param layer
 *            the layer (foreground or background).
 * @param notify
 *            notify listeners.
 * 
 * @return A boolean indicating whether or not the marker was actually
 *         removed.
 * 
 * @since 1.0.10
 * 
 * @see #addRangeMarker(int, Marker, Layer, boolean)
 */
public boolean removeRangeMarker(int index, Marker marker, Layer layer, boolean notify) {
    if (marker == null) {
        throw new IllegalArgumentException("Null 'marker' argument.");
    }
    ArrayList markers;
    if (layer == Layer.FOREGROUND) {
        markers = (ArrayList) this.foregroundRangeMarkers.get(new Integer(index));
    } else {
        markers = (ArrayList) this.backgroundRangeMarkers.get(new Integer(index));
    }
    if (markers == null) {
        return false;
    }
    boolean removed = markers.remove(marker);

    return removed;
}

From source file:gdsc.core.clustering.ClusteringEngine.java

/**
 * Join valid links between clusters. Resets the link candidates. Use the neighbour count property to flag if the
 * candidate was joined to another cluster.
 * /*from   w w  w .  j a  va 2s .co m*/
 * @param grid
 * @param nXBins
 * @param nYBins
 * @param r2
 * @param candidates
 *            Re-populate will all the remaining clusters
 * @param singles
 *            Add any clusters with no neighbours
 * @return The number of joins that were made
 */
private int joinLinks(Cluster[][] grid, int nXBins, int nYBins, double r2, ArrayList<Cluster> candidates,
        ArrayList<Cluster> joined, ArrayList<Cluster> singles) {
    candidates.clear();
    joined.clear();

    double min = r2;
    Cluster cluster1 = null, cluster2 = null;
    for (int yBin = 0; yBin < nYBins; yBin++) {
        for (int xBin = 0; xBin < nXBins; xBin++) {
            Cluster previous = null;
            for (Cluster c1 = grid[xBin][yBin]; c1 != null; c1 = c1.next) {
                int joinFlag = 0;
                if (c1.validLink()) {
                    // Check if each cluster only has 1 neighbour
                    if (c1.neighbour == 1 && c1.closest.neighbour == 1) {
                        //System.out.printf("Joining pairs with no neighbours @ %f\n", Math.sqrt(c1.d2));
                        c1.add(c1.closest);
                        joined.add(c1.closest);
                        joinFlag = 1;
                    } else if (c1.d2 < min) {
                        // Otherwise find the closest pair in case no joins are made
                        min = c1.d2;
                        cluster1 = c1;
                        cluster2 = c1.closest;
                    }
                }
                // Reset the link candidates
                c1.closest = null;

                // Check for singles
                if (c1.neighbour == 0) {
                    // Add singles to the singles list and remove from the grid
                    singles.add(c1);
                    if (previous == null)
                        grid[xBin][yBin] = c1.next;
                    else
                        previous.next = c1.next;
                } else {
                    previous = c1;

                    // Store all remaining clusters
                    if (c1.n != 0) {
                        candidates.add(c1);
                        c1.neighbour = joinFlag;
                    }
                }
            }
        }
    }

    //// If no joins were made then join the closest pair
    //if (joined.isEmpty() && cluster1 != null)

    // Always join the closest pair if it has not been already
    if (cluster1 != null && cluster1.neighbour == 0) {
        //System.out.printf("Joining closest pair @ %f\n", Math.sqrt(cluster1.d2));
        cluster1.add(cluster2);
        // Remove cluster 2 from the candidates
        candidates.remove(cluster2);
        joined.add(cluster2);
        cluster1.neighbour = 1;
    }

    return joined.size();
}

From source file:com.clustercontrol.monitor.run.factory.RunMonitor.java

/**
 * ????//from   w w w .  j  a  va2s .c  o m
 * <p>
 * <ol>
 * <li>????????{@link #setMonitorInfo(String, String)}</li>
 * <li>?????????{@link #setJudgementInfo()}</li>
 * <li>??????????{@link #setCheckInfo()}</li>
 * <li>???????? {@link #collect(String)}</li>
 * <li>???????? {@link #getCheckResult(boolean)}</li>
 * <li>?????????{@link #getPriority(int)}</li>
 * <li>????{@link #notify(boolean, String, int, Date)}</li>
 * </ol>
 *
 * @return ??????</code> true </code>
 * @throws FacilityNotFound
 * @throws MonitorNotFound
 * @throws InvalidRole
 * @throws EntityExistsException
 * @throws HinemosUnknown
 *
 * @see #setMonitorInfo(String, String)
 * @see #setJudgementInfo()
 * @see #setCheckInfo()
 * @see #collect(String)
 * @see #getCheckResult(boolean)
 * @see #getPriority(int)
 * @see #notify(boolean, String, int, Date)
 */
protected boolean runMonitorInfo()
        throws FacilityNotFound, MonitorNotFound, InvalidRole, EntityExistsException, HinemosUnknown {

    m_now = HinemosTime.getDateInstance();

    m_priorityMap = new HashMap<Integer, ArrayList<String>>();
    m_priorityMap.put(Integer.valueOf(PriorityConstant.TYPE_INFO), new ArrayList<String>());
    m_priorityMap.put(Integer.valueOf(PriorityConstant.TYPE_WARNING), new ArrayList<String>());
    m_priorityMap.put(Integer.valueOf(PriorityConstant.TYPE_CRITICAL), new ArrayList<String>());
    m_priorityMap.put(Integer.valueOf(PriorityConstant.TYPE_UNKNOWN), new ArrayList<String>());
    List<Sample> sampleList = new ArrayList<Sample>();
    List<StringSample> collectedSamples = new ArrayList<>();

    try {
        // 
        boolean run = this.setMonitorInfo(m_monitorTypeId, m_monitorId);
        if (!run) {
            // ?
            return true;
        }

        // 
        setJudgementInfo();

        // ??
        setCheckInfo();

        ArrayList<String> facilityList = null;
        ExecutorCompletionService<MonitorRunResultInfo> ecs = new ExecutorCompletionService<MonitorRunResultInfo>(
                ParallelExecution.instance().getExecutorService());
        int taskCount = 0;

        if (!m_isMonitorJob) {
            // ??
            // ID?????
            // /?true?????ID??
            facilityList = new RepositoryControllerBean().getExecTargetFacilityIdList(m_facilityId,
                    m_monitor.getOwnerRoleId());
            if (facilityList.size() == 0) {
                return true;
            }

            m_isNode = new RepositoryControllerBean().isNode(m_facilityId);

            // ???????
            nodeInfo = new HashMap<String, NodeInfo>();
            for (String facilityId : facilityList) {
                try {
                    synchronized (this) {
                        nodeInfo.put(facilityId, new RepositoryControllerBean().getNode(facilityId));
                    }
                } catch (FacilityNotFound e) {
                    // ???
                }
            }

            m_log.debug("monitor start : monitorTypeId : " + m_monitorTypeId + ", monitorId : " + m_monitorId);

            /**
             * ?
             */
            // ID???????
            Iterator<String> itr = facilityList.iterator();
            while (itr.hasNext()) {
                String facilityId = itr.next();
                if (facilityId != null && !"".equals(facilityId)) {

                    // ???RunMonitor????
                    // ?????????????
                    RunMonitor runMonitor = this.createMonitorInstance();

                    // ?????
                    runMonitor.m_monitorTypeId = this.m_monitorTypeId;
                    runMonitor.m_monitorId = this.m_monitorId;
                    runMonitor.m_now = this.m_now;
                    runMonitor.m_priorityMap = this.m_priorityMap;
                    runMonitor.setMonitorInfo(runMonitor.m_monitorTypeId, runMonitor.m_monitorId);
                    runMonitor.setJudgementInfo();
                    runMonitor.setCheckInfo();
                    runMonitor.nodeInfo = this.nodeInfo;

                    ecs.submit(new MonitorExecuteTask(runMonitor, facilityId));
                    taskCount++;

                    if (m_log.isDebugEnabled()) {
                        m_log.debug("starting monitor result : monitorId = " + m_monitorId + ", facilityId = "
                                + facilityId);
                    }
                } else {
                    facilityList.remove(facilityId);
                }
            }

        } else {
            // ??
            // ID?????
            // /?true?????ID??
            facilityList = new RepositoryControllerBean().getExecTargetFacilityIdList(m_facilityId,
                    m_monitor.getOwnerRoleId());
            if (facilityList.size() != 1 || !facilityList.get(0).equals(m_facilityId)) {
                return true;
            }

            m_isNode = true;

            // ???????
            nodeInfo = new HashMap<String, NodeInfo>();
            try {
                synchronized (this) {
                    nodeInfo.put(m_facilityId, new RepositoryControllerBean().getNode(m_facilityId));
                }
            } catch (FacilityNotFound e) {
                // ???
            }
            m_log.debug("monitor start : monitorTypeId : " + m_monitorTypeId + ", monitorId : " + m_monitorId);

            /**
             * ?
             */
            // ???RunMonitor????
            // ?????????????
            RunMonitor runMonitor = this.createMonitorInstance();

            // ?????
            runMonitor.m_isMonitorJob = this.m_isMonitorJob;
            runMonitor.m_monitorTypeId = this.m_monitorTypeId;
            runMonitor.m_monitorId = this.m_monitorId;
            runMonitor.m_now = this.m_now;
            runMonitor.m_priorityMap = this.m_priorityMap;
            runMonitor.setMonitorInfo(runMonitor.m_monitorTypeId, runMonitor.m_monitorId);
            runMonitor.setJudgementInfo();
            runMonitor.setCheckInfo();
            runMonitor.nodeInfo = this.nodeInfo;
            runMonitor.m_prvData = this.m_prvData;

            ecs.submit(new MonitorExecuteTask(runMonitor, m_facilityId));
            taskCount++;

            if (m_log.isDebugEnabled()) {
                m_log.debug("starting monitor result : monitorId = " + m_monitorId + ", facilityId = "
                        + m_facilityId);
            }
        }

        /**
         * ??
         */
        MonitorRunResultInfo result = new MonitorRunResultInfo(); // ??

        m_log.debug("total start : monitorTypeId : " + m_monitorTypeId + ", monitorId : " + m_monitorId);

        // ???
        StringSample strSample = null;
        Sample sample = null;
        if (m_monitor.getCollectorFlg()) {
            //? - 
            if (m_monitor.getMonitorType() == MonitorTypeConstant.TYPE_STRING
                    || m_monitor.getMonitorType() == MonitorTypeConstant.TYPE_TRAP) {
                strSample = new StringSample(HinemosTime.getDateInstance(), m_monitor.getMonitorId());
            }
            //? - 
            else {
                sample = new Sample(HinemosTime.getDateInstance(), m_monitor.getMonitorId());
            }
        }

        for (int i = 0; i < taskCount; i++) {
            Future<MonitorRunResultInfo> future = ecs.take();
            result = future.get(); // ??

            String facilityId = result.getFacilityId();
            m_nodeDate = result.getNodeDate();

            if (m_log.isDebugEnabled()) {
                m_log.debug("finished monitor : monitorId = " + m_monitorId + ", facilityId = " + facilityId);
            }

            //??????????
            if (m_monitor.getMonitorType() == MonitorTypeConstant.TYPE_STRING
                    || m_monitor.getMonitorType() == MonitorTypeConstant.TYPE_TRAP) {
                if (strSample != null) {
                    strSample.set(facilityId, m_monitor.getMonitorTypeId(), result.getMessageOrg());
                }
            }

            if (!m_isMonitorJob) {
                // ???
                if (result.getProcessType().booleanValue()) {
                    // ?
                    notify(true, facilityId, result.getCheckResult(), new Date(m_nodeDate), result);
                    // ???
                    if (sample != null) {
                        int errorType = -1;
                        if (result.isCollectorResult()) {
                            errorType = CollectedDataErrorTypeConstant.NOT_ERROR;
                        } else {
                            errorType = CollectedDataErrorTypeConstant.UNKNOWN;
                        }
                        sample.set(facilityId, m_monitor.getItemName(), result.getValue(), errorType);
                    }
                }
            } else {
                m_monitorRunResultInfo = new MonitorRunResultInfo();
                m_monitorRunResultInfo.setPriority(result.getPriority());
                m_monitorRunResultInfo.setCheckResult(result.getCheckResult());
                m_monitorRunResultInfo.setNodeDate(m_nodeDate);
                m_monitorRunResultInfo
                        .setMessageOrg(makeJobOrgMessage(result.getMessageOrg(), result.getMessage()));
                m_monitorRunResultInfo.setCurData(result.getCurData());
            }
        }

        // ?????
        if (m_monitor.getMonitorType() == MonitorTypeConstant.TYPE_STRING
                || m_monitor.getMonitorType() == MonitorTypeConstant.TYPE_TRAP) {
            //? - ?????
            if (strSample != null) {
                collectedSamples.add(strSample);
            }
            if (!collectedSamples.isEmpty()) {
                CollectStringDataUtil.store(collectedSamples);
            }
        } else {
            if (sample != null) {
                sampleList.add(sample);
            }
            if (!sampleList.isEmpty()) {
                CollectDataUtil.put(sampleList);
            }
        }

        m_log.debug("monitor end : monitorTypeId : " + m_monitorTypeId + ", monitorId : " + m_monitorId);

        return true;

    } catch (FacilityNotFound e) {
        throw e;
    } catch (InterruptedException e) {
        m_log.info("runMonitorInfo() monitorTypeId = " + m_monitorTypeId + ", monitorId  = " + m_monitorId
                + " : " + e.getClass().getSimpleName() + ", " + e.getMessage());
        return false;
    } catch (ExecutionException e) {
        m_log.info("runMonitorInfo() monitorTypeId = " + m_monitorTypeId + ", monitorId  = " + m_monitorId
                + " : " + e.getClass().getSimpleName() + ", " + e.getMessage());
        return false;
    }
}

From source file:com.sonicle.webtop.calendar.CalendarManager.java

@Override
public void updateEventObject(int calendarId, String href, net.fortuna.ical4j.model.Calendar iCalendar)
        throws WTException {
    final UserProfile.Data udata = WT.getUserData(getTargetProfileId());
    int eventId = getEventIdByCategoryHref(calendarId, href, true);

    ICalendarInput in = new ICalendarInput(udata.getTimeZone()).withDefaultAttendeeNotify(true)
            .withIncludeVEventSourceInOutput(true);
    ArrayList<EventInput> eis = in.fromICalendarFile(iCalendar, null);
    if (eis.isEmpty())
        throw new WTException("iCalendar object does not contain any events");

    EventInput refInput = eis.remove(0);
    if (refInput.exRefersToPublicUid != null)
        throw new WTException("First iCalendar event should not have a RECURRENCE-ID set");

    // Collect dates exceptions and prepare broken event to be inserted
    ArrayList<EventInput> eiExs = new ArrayList<>();
    LinkedHashSet<LocalDate> exDates = new LinkedHashSet<>();
    for (EventInput ei : eis) {
        if (!StringUtils.equals(ei.exRefersToPublicUid, refInput.event.getPublicUid()))
            continue;
        if (exDates.contains(ei.addsExOnMaster))
            continue;

        exDates.add(ei.addsExOnMaster);/* w  ww  . j  a  va 2s. c  om*/
        if (!ei.isSourceEventCancelled())
            eiExs.add(ei);
    }

    // Adds new collected exceptions and then updates master event
    if (!exDates.isEmpty()) {
        if (refInput.event.hasExcludedDates()) {
            refInput.event.getExcludedDates().addAll(exDates);
        } else {
            refInput.event.setExcludedDates(exDates);
        }
    }
    refInput.event.setEventId(eventId);
    refInput.event.setCalendarId(calendarId);
    refInput.event.setExcludedDates(exDates);
    updateEvent(refInput.event, true);

    // Here we do not support creating broken events related to the
    // main event series (re-attach unavailable). Instance exceptions 
    // should have been created above as date exception into the main
    // event; so simply create exceptions as new events.

    if (!eiExs.isEmpty()) {
        for (EventInput eiEx : eiExs) {
            eiEx.event.setCalendarId(calendarId);
            eiEx.event.setPublicUid(null); // reset uid
            //TODO: handle raw value to persist custom properties
            try {
                addEvent(eiEx.event, null, true);
            } catch (Throwable t) {
                logger.error("Unable to insert exception on {} as new event", eiEx.addsExOnMaster, t);
            }
        }
    }
}

From source file:com.qmetry.qaf.automation.step.client.gherkin.GherkinFileParser.java

@SuppressWarnings("unchecked")
@Override/*from www. ja  v  a  2 s . c  o  m*/
protected Collection<Object[]> parseFile(String strFile) {
    ArrayList<Object[]> rows = new ArrayList<Object[]>();
    ArrayList<Object[]> background = new ArrayList<Object[]>();

    File textFile;
    int lineNo = 0;
    boolean bglobalTags = true;
    boolean outline = false;
    boolean isBackground = false;
    ArrayList<String> globalTags = new ArrayList<String>();
    ArrayList<String> scenarioTags = new ArrayList<String>();
    ArrayList<List<Object>> examplesTable = new ArrayList<List<Object>>();

    BufferedReader br = null;
    try {

        logger.info("loading feature file: " + strFile);
        textFile = new File(strFile);
        br = new BufferedReader(new FileReader(textFile));
        String strLine = "";
        int lastScenarioIndex = 0;

        // file line by line
        // exclude blank lines and comments
        StringBuffer currLineBuffer = new StringBuffer();
        while ((strLine = br.readLine()) != null) {
            // record line number
            lineNo++;
            /**
             * ignore if line is empty or comment line
             */
            if (!("".equalsIgnoreCase(strLine.trim())
                    || COMMENT_CHARS.contains("" + strLine.trim().charAt(0)))) {
                currLineBuffer.append((strLine.trim()));

                // process single statement
                Object[] cols = new Object[] { "", "", "", lineNo };
                String currLine = currLineBuffer.toString();
                String type = getType(currLine);
                if (type == "") {
                    // this is a statement
                    cols[0] = outline ? convertParam(currLine) : currLine;
                } else {
                    isBackground = false;
                    if (type.equalsIgnoreCase(TAG)) {
                        String[] tags = currLine.split(" ");
                        if (bglobalTags) {
                            globalTags.addAll(Arrays.asList(tags));
                        } else {
                            scenarioTags.addAll(Arrays.asList(tags));
                        }
                        currLineBuffer = new StringBuffer();
                        continue;
                    }
                    if (type.equalsIgnoreCase(BACKGROUND)) {
                        isBackground = true;
                        currLineBuffer = new StringBuffer();
                        continue;
                    }
                    System.arraycopy(currLine.split(":", 2), 0, cols, 0, 2);
                    if (type.equalsIgnoreCase(EXAMPLES)) {
                        Object[] scenario = rows.get(lastScenarioIndex);
                        scenario[0] = SCENARIO;

                        Map<Object, Object> metadata = new Gson().fromJson((String) scenario[2], Map.class);
                        //scenario[2] = new Gson().toJson(metadata);

                        String exampleMetadata = (String) cols[1];

                        if (StringUtil.isNotBlank(exampleMetadata) && exampleMetadata.trim().startsWith("{")) {
                            metadata.putAll(new Gson().fromJson(exampleMetadata, Map.class));
                            scenario[2] = new Gson().toJson(metadata);
                            currLineBuffer = new StringBuffer();
                            continue;
                        }

                    } else {
                        scenarioTags.addAll(globalTags);
                        String metadata = String.format("{\"groups\":%s}", new Gson().toJson(scenarioTags));
                        cols[2] = metadata;
                        scenarioTags.clear();
                        if (type.equalsIgnoreCase(FEATURE)) {
                            bglobalTags = false;
                            outline = false;
                        } else {
                            outline = type.equalsIgnoreCase(SCENARIO_OUTELINE);
                        }

                    }
                }

                if (!examplesTable.isEmpty()) {
                    String lastStamtent = (String) rows.get(rows.size() - 1)[0];
                    int lastStatementIndex = lastStamtent.equalsIgnoreCase(EXAMPLES) ? lastScenarioIndex
                            : (rows.size() - 1);
                    setExamples(rows.get(lastStatementIndex), examplesTable);
                    examplesTable.clear();
                    if (lastStamtent.equalsIgnoreCase(EXAMPLES)) {
                        rows.remove(rows.size() - 1);
                    }
                }

                if (isBackground)
                    background.add(cols);
                else {
                    rows.add(cols);
                    boolean scenarioStarted = StringUtil.indexOfIgnoreCase(type, SCENARIO) == 0;

                    if (scenarioStarted) {
                        lastScenarioIndex = rows.size() - 1;
                        rows.addAll(background);
                    }
                }
                currLineBuffer = new StringBuffer();

            } else if (StringUtil.isNotBlank(strLine) && strLine.trim().charAt(0) == '|') {
                addExample(strLine.trim(), examplesTable);
            }
        }

        int lastStatementIndex = rows.size() - 1;
        String lastStamtent = (String) rows.get(lastStatementIndex)[0];
        if (lastStamtent.equalsIgnoreCase(EXAMPLES)) {
            rows.remove(lastStatementIndex);
            lastStatementIndex = lastScenarioIndex;
        }

        if (!examplesTable.isEmpty()) {
            setExamples(rows.get(lastStatementIndex), examplesTable);
            examplesTable.clear();
        }

    } catch (Exception e) {
        String strMsg = "Exception while reading BDD file: " + strFile + "#" + lineNo;
        logger.error(strMsg + e);
        throw new AutomationError(strMsg, e);

    } finally {
        if (br != null) {
            try {
                br.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

    rows.add(new Object[] { "END", "", "", lineNo + 1 });//indicate end of BDD
    return rows;
}

From source file:com.stratelia.webactiv.kmelia.control.ejb.KmeliaBmEJB.java

private NodeTree findNode(NodeDetail node, NodeTree tree) {
    SilverTrace.debug("kmelia", "KmeliaBmEJB.findNode", "root.MSG_GEN_ENTER_METHOD",
            "looking for node " + node.getNodePK().getId());
    String path = node.getFullPath();
    if (path.length() > 1) {
        path = path.substring(1, path.length() - 1); // remove starting and ending slash
        SilverTrace.debug("kmelia", "KmeliaBmEJB.findNode", "root.MSG_GEN_PARAM_VALUE", " path = " + path);
        ArrayList<String> pathItems = new ArrayList<String>(Arrays.asList(path.split("/")));
        pathItems.remove(0); // remove root
        NodeTree current = tree;/*from  w  ww  .  j  a  v  a2 s . com*/
        for (String pathItem : pathItems) {
            if (current != null) {
                current = findNodeTree(pathItem, current.getChildren());
            }
        }
        if (current != null) {
            SilverTrace.debug("kmelia", "KmeliaBmEJB.findNode", "root.MSG_GEN_EXIT_METHOD",
                    "node " + current.getKey().getId() + " found");
            return current;
        }
    }
    SilverTrace.error("kmelia", "KmeliaBmEJB.findNode", "root.MSG_GEN_EXIT_METHOD",
            "node " + node.getNodePK().getId() + " not found");
    return null;
}

From source file:edu.harvard.i2b2.analysis.ui.ExplorerC.java

/**
 * @param args//w  ww.j a v a 2s  .  co m
 */
@SuppressWarnings("serial")
protected Control createContents(Composite parent) {
    log.info("Explorer plugin version 1.6.0");
    GridLayout topGridLayout = new GridLayout(1, false);
    topGridLayout.numColumns = 1;
    topGridLayout.marginWidth = 2;
    topGridLayout.marginHeight = 2;
    setLayout(topGridLayout);

    Composite oTreeComposite = new Composite(this, SWT.NONE);
    oTreeComposite.setLayout(new FillLayout(SWT.VERTICAL));
    GridData gridData2 = new GridData();
    gridData2.horizontalAlignment = GridData.FILL;
    gridData2.verticalAlignment = GridData.FILL;
    gridData2.grabExcessHorizontalSpace = true;
    gridData2.grabExcessVerticalSpace = true;
    oTreeComposite.setLayoutData(gridData2);

    // the horizontal sash form
    SashForm horizontalForm = new SashForm(oTreeComposite, SWT.HORIZONTAL);
    horizontalForm.setOrientation(SWT.HORIZONTAL);
    horizontalForm.setLayout(new GridLayout());

    if (drawLeft) {
        // left sash form
        SashForm leftVerticalForm = new SashForm(horizontalForm, SWT.VERTICAL);
        leftVerticalForm.setOrientation(SWT.VERTICAL);
        leftVerticalForm.setLayout(new GridLayout());

        if (bWantStatusLine) {
            slm.createControl(this, SWT.NULL);
        }
        slm.setMessage("i2b2 Explorer Version 2.0");
        slm.update(true);

        // Create the tab folder
        final TabFolder oTabFolder = new TabFolder(leftVerticalForm, SWT.NONE);

        // Create each tab and set its text, tool tip text,
        // image, and control
        TabItem oTreeTab = new TabItem(oTabFolder, SWT.NONE);
        oTreeTab.setText("Concept trees");
        oTreeTab.setToolTipText("Hierarchically organized patient characteristics");
        oTreeTab.setControl(getConceptTreeTabControl(oTabFolder));

        // Select the first tab (index is zero-based)
        oTabFolder.setSelection(0);

        // Create the tab folder
        final TabFolder queryRunFolder = new TabFolder(leftVerticalForm, SWT.NONE);

        TabItem previousRunTab = new TabItem(queryRunFolder, SWT.NONE);
        previousRunTab.setText("Patient Sets and Previous Queries");
        previousRunTab.setToolTipText("Patient Sets & Previous Queries");
        final Composite runComposite = new Composite(queryRunFolder, SWT.EMBEDDED);
        previousRunTab.setControl(runComposite);

        /* Create and setting up frame */
        ////for mac fix
        //if ( System.getProperty("os.name").toLowerCase().startsWith("mac"))
        //SWT_AWT.embeddedFrameClass = "sun.lwawt.macosx.CViewEmbeddedFrame";
        Frame runFrame = SWT_AWT.new_Frame(runComposite);
        Panel runPanel = new Panel(new BorderLayout());
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            log.debug("Error setting native LAF: " + e);
        }

        runFrame.add(runPanel);
        JRootPane runRoot = new JRootPane();
        runPanel.add(runRoot);

        // Select the first tab (index is zero-based)
        queryRunFolder.setSelection(0);
    }

    SashForm verticalForm = new SashForm(horizontalForm, SWT.VERTICAL);
    verticalForm.setOrientation(SWT.VERTICAL);
    verticalForm.setLayout(new GridLayout());

    // put a tab folder in it...
    tabFolder = new TabFolder(verticalForm, SWT.NONE);

    Composite patientNumsComposite = new Composite(verticalForm, SWT.NONE);
    GridData patientNumData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
    patientNumData.grabExcessHorizontalSpace = true;
    patientNumsComposite.setLayoutData(patientNumData);
    patientNumsComposite.setLayout(null);

    Label patientset = new Label(patientNumsComposite, SWT.NONE);
    patientset.setText("Patient Set: ");
    patientset.setBounds(5, 9, 60, 22);

    patientSetText = new Text(patientNumsComposite, SWT.SINGLE | SWT.BORDER);
    patientSetText.setText("");
    // patientSetText.setEditable(false);
    patientSetText.setBounds(70, 5, 300, 35);

    leftArrowButton = new Button(patientNumsComposite, SWT.PUSH);
    leftArrowButton.setText("<<<");
    leftArrowButton.setEnabled(false);
    leftArrowButton.setBounds(380, 5, 38, 22);
    leftArrowButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            ConceptTableModel i2b2Model = (ConceptTableModel) table.getModel();
            i2b2Model.fillDataFromTable(rowData);
            if (rowData.size() == 0) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(0);
                    }
                });
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("The set up table is empty.");
                mBox.open();
                return;
            }

            String patientSetStr = patientSetText.getText();
            if (patientSetStr.equals("") && !isAll) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(0);
                    }
                });
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("Please set a patient set or choose all datamart option.");
                mBox.open();
                return;
            }

            int start = new Integer(patientMinNumText.getText()).intValue();
            int inc = new Integer(patientMaxNumText.getText()).intValue();
            if (start - inc - inc <= 0) {
                leftArrowButton.setEnabled(false);
            }

            if (start <= patientSetSize) {
                rightArrowButton.setEnabled(true);
            } else {
                rightArrowButton.setEnabled(false);
            }

            if ((start - inc) >= 0) {
                patientMinNumText.setText("" + (start - inc));
            } else {
                patientMinNumText.setText("1");
            }

            if (tabFolder.getSelectionIndex() == 1) {
                DestroyMiniVisualization(oAwtContainer);
            } else if (tabFolder.getSelectionIndex() == 0) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(1);
                    }
                });
            }

            if (patientSetStr.equalsIgnoreCase("All")) {
                int minPatient = 0;
                try {
                    String minText = patientMinNumText.getText();
                    minPatient = Integer.parseInt(minText);
                } catch (Exception e1) {
                    minPatient = -1;
                }

                int maxPatient = 0;
                try {
                    maxPatient = Integer.parseInt(patientMaxNumText.getText());
                } catch (Exception e2) {
                    maxPatient = -1;
                }

                PerformVisualizationQuery(oAwtContainer, "All", minPatient, maxPatient, bDisplayAllData);
            } else {
                int min = Integer.parseInt(patientMinNumText.getText());
                int max = Integer.parseInt(patientMaxNumText.getText());
                PerformVisualizationQuery(oAwtContainer, patientRefId, min, max, bDisplayAllData);
            }
        }
    });

    final Label patNum1 = new Label(patientNumsComposite, SWT.NONE);
    patNum1.setText(" start: ");
    patNum1.setBounds(425, 9, 31, 20);

    patientMinNumText = new Text(patientNumsComposite, SWT.SINGLE | SWT.BORDER);
    patientMinNumText.setText("1");
    patientMinNumText.setBounds(460, 5, 45, 22);

    final Label patNum2 = new Label(patientNumsComposite, SWT.NONE);
    patNum2.setText("increment:");
    patNum2.setBounds(515, 9, 57, 20);

    patientMaxNumText = new Text(patientNumsComposite, SWT.SINGLE | SWT.BORDER);
    patientMaxNumText.setText("10");
    patientMaxNumText.setBounds(572, 5, 45, 22);

    rightArrowButton = new Button(patientNumsComposite, SWT.PUSH);
    rightArrowButton.setText(">>>");
    rightArrowButton.setEnabled(false);
    rightArrowButton.setBounds(626, 5, 38, 20);
    rightArrowButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            ConceptTableModel i2b2Model = (ConceptTableModel) table.getModel();
            i2b2Model.fillDataFromTable(rowData);
            if (rowData.size() == 0) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(0);
                    }
                });
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("The set up table is empty.");
                mBox.open();
                return;
            }

            String patientSetStr = patientSetText.getText();
            if (patientSetStr.equals("") && !isAll) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(0);
                    }
                });
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("Please set a patient set or choose all datamart option.");
                mBox.open();
                return;
            }

            int start = new Integer(patientMinNumText.getText()).intValue();
            int inc = new Integer(patientMaxNumText.getText()).intValue();
            if (start + inc + inc > patientSetSize) {
                rightArrowButton.setEnabled(false);
            }
            patientMinNumText.setText("" + (start + inc));
            leftArrowButton.setEnabled(true);

            if (tabFolder.getSelectionIndex() == 1) {
                DestroyMiniVisualization(oAwtContainer);
            } else if (tabFolder.getSelectionIndex() == 0) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(1);
                    }
                });
            }

            if (patientSetStr.equalsIgnoreCase("All")) {
                int minPatient = 0;
                try {
                    String minText = patientMinNumText.getText();
                    minPatient = Integer.parseInt(minText);
                } catch (Exception e1) {
                    minPatient = -1;
                }

                int maxPatient = 0;
                try {
                    maxPatient = Integer.parseInt(patientMaxNumText.getText());
                } catch (Exception e2) {
                    maxPatient = -1;
                }

                PerformVisualizationQuery(oAwtContainer, "All", minPatient, maxPatient, bDisplayAllData);
            } else {
                int min = Integer.parseInt(patientMinNumText.getText());
                int max = Integer.parseInt(patientMaxNumText.getText());
                PerformVisualizationQuery(oAwtContainer, patientRefId, min, max, bDisplayAllData);
            }
        }
    });

    addListener(SWT.Resize, new Listener() {
        public void handleEvent(Event event) {
            int w = getBounds().width;
            patientSetText.setBounds(70, 5, w - 357, 24);
            leftArrowButton.setBounds(w - 281, 5, 38, 24);
            patNum1.setBounds(w - 239, 9, 31, 24);
            patientMinNumText.setBounds(w - 204, 5, 45, 24);
            patNum2.setBounds(w - 149, 9, 57, 24);
            patientMaxNumText.setBounds(w - 92, 5, 45, 24);
            rightArrowButton.setBounds(w - 42, 5, 37, 24);
        }
    });

    verticalForm.setWeights(new int[] { 25, 3 });

    // Item 1: a Text Table
    TabItem item1 = new TabItem(tabFolder, SWT.NONE);
    item1.setText("Create model for Timeline");

    Composite oModelComposite = new Composite(tabFolder, SWT.NONE);
    item1.setControl(oModelComposite);

    GridLayout gridLayout = new GridLayout(2, false);

    // gridLayout.marginHeight = 0;
    // gridLayout.marginWidth = 0;
    // gridLayout.verticalSpacing = 0;
    // gridLayout.horizontalSpacing = 0;

    gridLayout.marginTop = 2;
    gridLayout.marginLeft = 0;
    gridLayout.marginBottom = 2;
    gridLayout.verticalSpacing = 1;
    gridLayout.horizontalSpacing = 1;
    oModelComposite.setLayout(gridLayout);

    oModelQueryComposite = new FramedComposite(oModelComposite, SWT.SHADOW_NONE);
    // GridLayout gLq = new GridLayout(25, false);
    oModelQueryComposite.setLayout(new GridLayout(25, false));
    oModelQueryComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_BLACK));
    GridData oModelQueryButtonGridData = new GridData(GridData.FILL_HORIZONTAL);
    oModelQueryButtonGridData.grabExcessHorizontalSpace = false;
    oModelQueryButtonGridData.horizontalSpan = 2;
    oModelQueryButtonGridData.verticalAlignment = SWT.CENTER;
    oModelQueryButtonGridData.verticalIndent = 5;
    oModelQueryComposite.setLayoutData(oModelQueryButtonGridData);

    queryNamemrnlistText = new Label(oModelQueryComposite, SWT.NONE);
    queryNamemrnlistText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
    queryNamemrnlistText.setText("Query Name: ");
    // queryNamemrnlistText.setBounds(5, 4, 600, 20);

    queryNamemrnlistText.addMouseTrackListener(new MouseTrackListener() {

        public void mouseEnter(MouseEvent arg0) {
            oModelQueryComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
        }

        public void mouseExit(MouseEvent arg0) {
            oModelQueryComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        }

        public void mouseHover(MouseEvent arg0) {
            oModelQueryComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
        }

    });

    oModelQueryComposite.addMouseMoveListener(new MouseMoveListener() {

        public void mouseMove(MouseEvent arg0) {
            // System.out.println("mouse moved");

        }

    });

    oModelQueryComposite.addDragDetectListener(new DragDetectListener() {

        public void dragDetected(DragDetectEvent arg0) {
            // System.out.println("drag moved");

        }

    });

    Composite oGroupComposite = new Composite(oModelComposite, SWT.NONE);
    // GridLayout gLq = new GridLayout(25, false);
    oGroupComposite.setLayout(gridLayout);
    GridData oGroupGridData = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
    oGroupGridData.grabExcessHorizontalSpace = true;
    oGroupGridData.grabExcessVerticalSpace = true;
    oGroupGridData.verticalIndent = 1;
    oGroupGridData.verticalSpan = GridData.VERTICAL_ALIGN_FILL;
    // oGroupGridData.verticalAlignment = GridData.VERTICAL_ALIGN_FILL;
    oGroupComposite.setLayoutData(oGroupGridData);

    oModelGroupComposite = new FramedComposite(oGroupComposite, SWT.SHADOW_NONE);
    // GridLayout gLq = new GridLayout(25, false);
    oModelGroupComposite.setLayout(new GridLayout(25, false));
    GridData oModelGroupButtonGridData = new GridData(GridData.FILL_HORIZONTAL);
    oModelGroupButtonGridData.grabExcessHorizontalSpace = false;
    oModelGroupButtonGridData.horizontalSpan = 2;
    oModelGroupButtonGridData.verticalAlignment = SWT.CENTER;
    oModelGroupButtonGridData.verticalIndent = 5;
    oModelGroupComposite.setLayoutData(oModelGroupButtonGridData);

    // GridData gdAdd = new GridData(GridData.FILL_HORIZONTAL);
    GridData gdDel1 = new GridData(GridData.FILL_HORIZONTAL);

    groupNameText = new Label(oModelGroupComposite, SWT.NONE);
    gdDel1.horizontalSpan = 4;
    groupNameText.setLayoutData(gdDel1);
    groupNameText.setText("Panel Name: ");
    // groupNameText.setBounds(80, 8, 400, 24);
    // groupNameText.setAlignment(SWT.CENTER);
    // createDragSource(queryNamemrnlistText);
    // createDropTarget(queryNamemrnlistText);

    groupNameText.addMouseTrackListener(new MouseTrackListener() {

        public void mouseEnter(MouseEvent arg0) {
            oModelGroupComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
        }

        public void mouseExit(MouseEvent arg0) {
            oModelGroupComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        }

        public void mouseHover(MouseEvent arg0) {
            oModelGroupComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
        }

    });

    // put a table in tabItem1...
    table = new KTable(oGroupComposite, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER);
    table.setFocus();
    table.setBackground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_WHITE));
    GridData tableGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
    tableGridData.verticalIndent = 5;
    table.setLayoutData(tableGridData);
    table.setRowSelectionMode(true);
    // table.setMultiSelectionMode(true);
    // table.setModel(new KTableForModel());
    table.setModel(new ConceptTableModel());
    // table.getModel().setColumnWidth(0, oModelComposite.getBounds().width
    // - 35);
    table.addCellSelectionListener(new KTableCellSelectionListener() {
        public void cellSelected(int col, int row, int statemask) {
            log.debug("Cell [" + col + ";" + row + "] selected.");
            System.out.println("Cell [" + col + ";" + row + "] selected.");
            table.selectedRow = row;
            table.selectedColumn = col;
        }

        public void fixedCellSelected(int col, int row, int statemask) {
            log.debug("Header [" + col + ";" + row + "] selected.");
            System.out.println("Header [" + col + ";" + row + "] selected.");
        }

    });

    Transfer[] types = new Transfer[] { TextTransfer.getInstance() };

    // create drag source
    /*
     * DragSource source = new DragSource(queryNamemrnlistText,
     * DND.DROP_COPY); source.setTransfer(types); source.addDragListener(new
     * DragSourceAdapter() {
     * 
     * @Override public void dragSetData(DragSourceEvent event) {
     * //DragSource ds = (DragSource) event.widget; StringWriter strWriter =
     * new StringWriter(); DndType dndType = new DndType();
     * edu.harvard.i2b2.crcxmljaxb.datavo.psm.query.ObjectFactory pdoFactory
     * = new edu.harvard.i2b2.crcxmljaxb.datavo.psm.query.ObjectFactory();
     * PanelType panelType = new PanelType();
     * 
     * //get table rows and fill the panel object for(int i=0; i<3; i++) {
     * ItemType itemType = new ItemType();
     * panelType.getItem().add(itemType);
     * 
     * dndType.getAny().add(pdoFactory.createPanel(panelType));
     * edu.harvard.i2b2.crcxmljaxb.datavo.dnd.ObjectFactory dndFactory = new
     * edu.harvard.i2b2.crcxmljaxb.datavo.dnd.ObjectFactory(); try {
     * ExplorerJAXBUtil
     * .getJAXBUtil().marshaller(dndFactory.createPluginDragDrop(dndType),
     * strWriter); } catch(JAXBUtilException e) { e.printStackTrace(); }
     * 
     * //put the data into the event event.data = strWriter.toString(); }
     * 
     * 
     * });
     */

    Composite oModelAddDelButtonComposite = new Composite(oModelComposite, SWT.NONE);
    GridLayout gL = new GridLayout(25, false);
    oModelAddDelButtonComposite.setLayout(gL);
    GridData oModelAddDelButtonGridData = new GridData(GridData.FILL_HORIZONTAL);// HORIZONTAL_ALIGN_FILL);// |
    // GridData.VERTICAL_ALIGN_FILL);
    oModelAddDelButtonGridData.grabExcessHorizontalSpace = false;
    oModelAddDelButtonGridData.horizontalSpan = 2;
    oModelAddDelButtonComposite.setLayoutData(oModelAddDelButtonGridData);

    // GridData gdAdd = new GridData(GridData.FILL_HORIZONTAL);
    GridData gdDel = new GridData(GridData.FILL_HORIZONTAL);

    Button deleteArrowButton = new Button(oModelAddDelButtonComposite, SWT.PUSH);
    gdDel.horizontalSpan = 4;
    deleteArrowButton.setLayoutData(gdDel);
    deleteArrowButton.setText("Delete From List");
    deleteArrowButton.addSelectionListener(new SelectionAdapter() {

        @SuppressWarnings("unchecked")
        public void widgetSelected(SelectionEvent event) {
            curRowNumber = 0;
            ConceptTableModel m_Model = (ConceptTableModel) table.getModel();
            int[] selectedRow = table.getRowSelection();
            m_Model.fillDataFromTable(rowData);

            if ((selectedRow != null) && (selectedRow.length > 0)) {
                String conceptName = (String) m_Model.getContentAt(1, selectedRow[0]);
                if (conceptName.equals("Encounter Range Line")) {
                } else if (conceptName.equals("Vital Status Line")) {
                }

                int rowNumber = new Integer((String) (m_Model.getContentAt(0, selectedRow[0]))).intValue();
                int rid = selectedRow[0];
                ArrayList list = (ArrayList) rowData.get(rowNumber - 1);
                for (int i = 0; i < list.size(); i++) {
                    ConceptTableRow tr = (ConceptTableRow) list.get(i);
                    if (tr.rowId == rid) {
                        list.remove(i);
                        break;
                    }
                }
                if (list.size() == 0) {
                    rowData.remove(rowNumber - 1);
                }
                curRowNumber = rowData.size();
                resetRowNumber();
                // m_Model.deleteRow(selectedRow[0]);
                ((ConceptTableModel) table.getModel()).deleteAllRows();
                ((ConceptTableModel) table.getModel()).populateTable(rowData);
                /*
                 * int newRow = 0; for(int i=0; i<rowData.size(); i++) {
                 * ArrayList alist = (ArrayList) rowData.get(i); for(int
                 * j=0; j<alist.size(); j++) { TableRow r = (TableRow)
                 * alist.get(j); newRow++; r.rowId = newRow;
                 * table.getModel().setContentAt(0, newRow, new
                 * Integer(r.rowNumber).toString());
                 * table.getModel().setContentAt(1, newRow, r.conceptName);
                 * table.getModel().setContentAt(2, newRow, r.valueType);
                 * table.getModel().setContentAt(3, newRow, r.valueText);
                 * table.getModel().setContentAt(4, newRow, r.height);
                 * table.getModel().setContentAt(5, newRow, r.color);
                 * table.getModel().setContentAt(6, newRow, r.conceptXml); }
                 * }
                 */
                table.redraw();
            }
        }
    });

    Button deleteAllButton = new Button(oModelAddDelButtonComposite, SWT.PUSH);
    gdDel = new GridData(GridData.FILL_HORIZONTAL);
    gdDel.horizontalSpan = 4;
    deleteAllButton.setLayoutData(gdDel);
    deleteAllButton.setText("Delete All ");
    deleteAllButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            ConceptTableModel m_Model = (ConceptTableModel) table.getModel();
            m_Model.deleteAllRows();
            curRowNumber = 0;
            rowData.clear();
            table.redraw();
        }
    });

    Button putInOrderButton = new Button(oModelAddDelButtonComposite, SWT.PUSH);
    gdDel = new GridData(GridData.FILL_HORIZONTAL);
    gdDel.horizontalSpan = 4;
    putInOrderButton.setLayoutData(gdDel);
    putInOrderButton.setText("Put In Order ");
    putInOrderButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {

            ConceptTableModel m_Model = (ConceptTableModel) table.getModel();
            curRowNumber = 0;
            m_Model.fillDataFromTable(rowData);

            Collections.sort(rowData, new Comparator<Object>() {
                @SuppressWarnings("unchecked")
                public int compare(Object o1, Object o2) {
                    int i1 = ((ConceptTableRow) ((ArrayList) o1).get(0)).rowNumber;
                    int i2 = ((ConceptTableRow) ((ArrayList) o2).get(0)).rowNumber;
                    if (i1 > i2) {
                        return 1;
                    } else if (i1 < i2) {
                        return -1;
                    } else {
                        return 0;
                    }
                }
            });
            m_Model.deleteAllRows();
            m_Model.populateTable(rowData);
            table.redraw();
        }
    });

    Button upArrowButton = new Button(oModelAddDelButtonComposite, SWT.PUSH);
    upArrowButton.setText("Move Up");
    upArrowButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {

            ConceptTableModel m_Model = (ConceptTableModel) table.getModel();
            int[] selectedRow = table.getRowSelection();
            curRowNumber = 0;
            // KTableI2B2Model m_Model = (KTableI2B2Model) table.getModel();
            // int[] selectedRow = table.getRowSelection();
            m_Model.fillDataFromTable(rowData);
            int index = new Integer((String) (m_Model.getContentAt(0, selectedRow[0]))).intValue() - 1;
            if (index < 1) {
                return;
            }
            if ((selectedRow != null) && (selectedRow.length > 0)) {
                // m_Model.moveRow(selectedRow[0], selectedRow[0] -1);
                ArrayList<ConceptTableRow> list = rowData.get(index);
                rowData.remove(index);
                rowData.add(index - 1, list);
                resetRowNumber();
                m_Model.populateTable(rowData);
            }
            table.setSelection(0, selectedRow[0] - 1, true);
            table.redraw();
        }
    });

    Button downArrowButton = new Button(oModelAddDelButtonComposite, SWT.PUSH);
    downArrowButton.setText("Move Down");
    downArrowButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {

            ConceptTableModel m_Model = (ConceptTableModel) table.getModel();
            int[] selectedRow = table.getRowSelection();
            curRowNumber = 0;
            // KTableI2B2Model m_Model = (KTableI2B2Model) table.getModel();
            // int[] selectedRow = table.getRowSelection();
            m_Model.fillDataFromTable(rowData);
            int index = new Integer((String) (m_Model.getContentAt(0, selectedRow[0]))).intValue() - 1;
            if (index == (rowData.size() - 1)) {
                return;
            }
            if ((selectedRow != null) && (selectedRow.length > 0)) {
                // m_Model.moveRow(selectedRow[0], selectedRow[0] -1);
                ArrayList<ConceptTableRow> list = rowData.get(index);
                rowData.remove(index);
                rowData.add(index + 1, list);
                resetRowNumber();
                m_Model.populateTable(rowData);
            }
            table.setSelection(0, selectedRow[0] + 1, true);
            table.redraw();
        }
    });

    Composite oModelCheckButtonComposite = new Composite(oModelComposite, SWT.NONE);
    GridLayout gL1 = new GridLayout(20, true);
    oModelCheckButtonComposite.setLayout(gL1);
    GridData oModelCheckButtonGridData = new GridData(
            GridData.HORIZONTAL_ALIGN_FILL | GridData.VERTICAL_ALIGN_FILL);
    oModelCheckButtonGridData.grabExcessHorizontalSpace = true;
    oModelCheckButtonGridData.horizontalSpan = 2;
    oModelCheckButtonComposite.setLayoutData(oModelCheckButtonGridData);

    Button displayOrNotButton = new Button(oModelCheckButtonComposite, SWT.CHECK);
    displayOrNotButton.setText("Display concepts with no data");
    displayOrNotButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            // do something here- return null
            bDisplayAllData = !bDisplayAllData;
        }
    });

    Button displayDemographicsOrNotButton = new Button(oModelCheckButtonComposite, SWT.CHECK);
    displayDemographicsOrNotButton.setText("Display patient demographics");
    if ((System.getProperty("applicationName") != null)
            && System.getProperty("applicationName").equals("BIRN")) {
        displayDemographicsOrNotButton.setSelection(false);
        displayDemographicsOrNotButton.setEnabled(false);
        bDisplayDemographics = false;
    } else if ((System.getProperty("applicationName") == null)
            || System.getProperty("applicationName").equals("i2b2")) {
        displayDemographicsOrNotButton.setSelection(true);
    }
    displayDemographicsOrNotButton.addSelectionListener(new SelectionAdapter() {
        public void widgetSelected(SelectionEvent event) {
            bDisplayDemographics = !bDisplayDemographics;
        }
    });

    if (UserInfoBean.getInstance().getCellDataUrl("identity") != null) {
        Composite oPatientSetComposite = new Composite(oModelComposite, SWT.NONE);
        GridData patientSetData = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
        patientSetData.grabExcessHorizontalSpace = true;
        oPatientSetComposite.setLayoutData(patientSetData);
        oPatientSetComposite.setLayout(null);

        Label mrnlabel = new Label(oPatientSetComposite, SWT.NONE);
        mrnlabel.setText("MRN site:");
        mrnlabel.setBounds(5, 9, 50, 20);

        final Combo siteCombo = new Combo(oPatientSetComposite, SWT.NULL);
        siteCombo.add("BWH");
        siteCombo.add("MGH");
        siteCombo.setBounds(57, 5, 60, 20);
        siteCombo.select(1);

        Label mrnNumber = new Label(oPatientSetComposite, SWT.NONE);
        mrnNumber.setText("number:");
        mrnNumber.setBounds(121, 9, 40, 20);

        mrnlistText = new Text(oPatientSetComposite, SWT.SINGLE | SWT.BORDER);
        mrnlistText.setBounds(164, 5, 150, 20);
        mrnlistText.setText("");

        Button runButton = new Button(oPatientSetComposite, SWT.PUSH);
        runButton.setText("Search By MRN");
        runButton.setBounds(315, 5, 85, 23);
        runButton.addSelectionListener(new SelectionAdapter() {
            @SuppressWarnings("unchecked")
            public void widgetSelected(SelectionEvent event) {
                String mrns = mrnlistText.getText();
                if (mrns.equals("")) {
                    return;
                }

                String[] mrnArray = mrns.split(",");
                int[] idlist = new int[mrnArray.length];
                String username = UserInfoBean.getInstance().getUserName();
                String password = UserInfoBean.getInstance().getUserPassword();
                // log.debug("User name: "+username+" password: "+password);
                String site = siteCombo.getText();
                for (int i = 0; i < mrnArray.length; i++) {
                    // String[] tmps = new String[2];
                    String tmp = mrnArray[i].replaceAll(" ", "");
                    // tmps = tmp.split(":");

                    String queryStr = "<?xml version=\"1.0\" standalone=\"yes\"?>\n" + "<search_by_local>"
                            + "<match_id site=\"" + site.toUpperCase()/* EMPI */
                            + "\">" + tmp/* 100016900 */
                            + "</match_id>\n" + "</search_by_local>";

                    String resultStr = QueryClient.query(queryStr, username, password);
                    log.debug(queryStr);
                    log.debug(resultStr);

                    SAXBuilder parser = new SAXBuilder();
                    String masterID = null;
                    java.io.StringReader xmlStringReader = new java.io.StringReader(resultStr);
                    try {
                        org.jdom.Document tableDoc = parser.build(xmlStringReader);
                        org.jdom.Element tableXml = tableDoc.getRootElement();
                        Element responseXml = (Element) tableXml.getChild("person_list");
                        // Element mrnXml = (Element)
                        // responseXml.getChild("MRN");
                        java.util.List listChildren = responseXml.getChildren();
                        if (listChildren.isEmpty()) {
                            MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                            mBox.setText("Please Note ...");
                            mBox.setMessage("No master id found");
                            mBox.open();
                            return;
                        }

                        Element masterXml = (Element) responseXml.getChild("master_record");
                        masterID = masterXml.getAttributeValue("id");
                        log.debug("Patient id: " + masterID);
                        idlist[i] = new Integer(masterID).intValue();
                        log.debug("MRN: " + site + "-" + tmp);
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }
                }

                if (tabFolder.getSelectionIndex() == 1) {
                    DestroyMiniVisualization(oAwtContainer);
                } else if (tabFolder.getSelectionIndex() == 0) {
                    oTheParent.getDisplay().syncExec(new Runnable() {
                        public void run() {
                            tabFolder.setSelection(1);
                        }
                    });
                }

                PerformVisualizationQuery(oAwtContainer, idlist, bDisplayAllData);
            }
        });
    }

    DropTarget targetLable = new DropTarget(oModelQueryComposite, DND.DROP_COPY);
    targetLable.setTransfer(types);
    targetLable.addDropListener(new DropTargetAdapter() {
        @Override
        public void dragLeave(DropTargetEvent event) {
            super.dragLeave(event);
            oModelQueryComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        }

        public void dragEnter(DropTargetEvent event) {
            event.detail = DND.DROP_COPY;
            oModelQueryComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
        }

        @SuppressWarnings("unchecked")
        public void drop(DropTargetEvent event) {
            if (event.data == null) {
                event.detail = DND.DROP_NONE;
                return;
            }

            try {
                SAXBuilder parser = new SAXBuilder();
                String xmlContent = (String) event.data;
                java.io.StringReader xmlStringReader = new java.io.StringReader(xmlContent);
                org.jdom.Document tableDoc = parser.build(xmlStringReader);
                org.jdom.Element tableXml = tableDoc.getRootElement().getChild("concepts",
                        Namespace.getNamespace("http://www.i2b2.org/xsd/cell/ont/1.1/"));

                if (tableXml != null) {
                    MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                    mBox.setText("Please Note ...");
                    mBox.setMessage("You can not drop this item here.");
                    mBox.open();
                    event.detail = DND.DROP_NONE;
                    return;
                }

                boolean isQuery = false;
                if (tableXml == null) {
                    tableXml = tableDoc.getRootElement().getChild("query_master",
                            Namespace.getNamespace("http://www.i2b2.org/xsd/cell/crc/psm/1.1/"));
                }

                if (tableXml != null) {
                    isQuery = true;
                } else {

                    MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                    mBox.setText("Please Note ...");
                    mBox.setMessage("You can not drop this item here.");
                    mBox.open();
                    event.detail = DND.DROP_NONE;
                    return;
                }

                if (isQuery) {
                    ArrayList<QueryModel> nodeXmls = new ArrayList<QueryModel>();
                    try {
                        JAXBUtil jaxbUtil = AnalysisJAXBUtil.getJAXBUtil();
                        QueryMasterData ndata = new QueryMasterData();
                        ndata.name(tableXml.getChildText("name"));
                        queryNamemrnlistText.setText("Query Name: " + ndata.name());
                        ndata.xmlContent(null);
                        ndata.id(tableXml.getChildTextTrim("query_master_id"));
                        ndata.userId(tableXml.getChildTextTrim("user_id"));

                        String xmlcontent = null;
                        String xmlrequest = null;

                        xmlrequest = ndata.writeDefinitionQueryXML();
                        lastRequestMessage(xmlrequest);

                        if (System.getProperty("webServiceMethod").equals("SOAP")) {
                            xmlcontent = CRCQueryClient.sendPDQQueryRequestSOAP(xmlrequest);
                        } else {
                            xmlcontent = CRCQueryClient.sendPDQQueryRequestREST(xmlrequest);
                        }
                        lastResponseMessage(xmlcontent);

                        if (xmlcontent == null) {

                            return;
                        } else {
                            log.debug("Query content response: " + xmlcontent);
                            ndata.xmlContent(xmlcontent);
                        }

                        JAXBElement jaxbElement = jaxbUtil.unMashallFromString(ndata.xmlContent());
                        ResponseMessageType messageType = (ResponseMessageType) jaxbElement.getValue();

                        BodyType bt = messageType.getMessageBody();
                        MasterResponseType masterResponseType = (MasterResponseType) new JAXBUnWrapHelper()
                                .getObjectByClass(bt.getAny(), MasterResponseType.class);
                        RequestXmlType requestXmlType = masterResponseType.getQueryMaster().get(0)
                                .getRequestXml();

                        org.w3c.dom.Element element = (org.w3c.dom.Element) requestXmlType.getContent().get(0);
                        if (element != null) {
                            log.debug("query definition not null");
                        } else {
                            log.error("query definition is null");
                        }

                        String domString = edu.harvard.i2b2.common.util.xml.XMLUtil
                                .convertDOMElementToString(element);
                        log.debug("string output" + domString);

                        JAXBContext jc1 = JAXBContext
                                .newInstance(edu.harvard.i2b2.crcxmljaxb.datavo.psm.query.ObjectFactory.class);
                        Unmarshaller unMarshaller = jc1.createUnmarshaller();
                        JAXBElement queryDefinitionJaxbElement = (JAXBElement) unMarshaller
                                .unmarshal(new StringReader(domString));

                        QueryDefinitionType queryDefinitionType = (QueryDefinitionType) queryDefinitionJaxbElement
                                .getValue();
                        int numOfPanels = queryDefinitionType.getPanel().size();
                        for (int i = 0; i < numOfPanels; i++) {
                            PanelType panelType = queryDefinitionType.getPanel().get(i);

                            for (int j = 0; j < panelType.getItem().size(); j++) {
                                ItemType itemType = panelType.getItem().get(j);
                                QueryModel nodedata = new QueryModel();

                                nodedata.name(itemType.getItemName());
                                nodedata.visualAttribute("FA");
                                nodedata.tooltip(itemType.getTooltip());
                                nodedata.fullname(itemType.getItemKey());
                                nodedata.hlevel(new Integer(itemType.getHlevel()).toString());

                                if (itemType.getItemShape() != null) {
                                    nodedata.tableRow().height = new String(itemType.getItemShape());
                                    nodedata.tableRow().color = ((ConceptTableModel) table.getModel())
                                            .getColor(itemType.getItemColor());
                                    nodedata.tableRow().rowNumber = Integer
                                            .parseInt(itemType.getItemRowNumber());
                                } else {
                                    nodedata.tableRow().height = "Medium";
                                    nodedata.tableRow().color = new RGB(0, 0, 128);
                                    nodedata.tableRow().rowNumber = j + 1;
                                }

                                nodedata.constrainByValue(itemType.getConstrainByValue());
                                if (itemType.getConstrainByValue().size() > 0) {
                                    nodedata.setValueConstrains(itemType.getConstrainByValue());

                                    if (itemType.getConstrainByValue().size() > 0) {
                                        nodedata.setValueConstrains(itemType.getConstrainByValue());
                                        if (nodedata.valueModel().hasEnumValue()) {
                                            if (nodedata.valueModel().useTextValue()) {
                                                ArrayList<String> results = new ArrayList<String>();
                                                results.toArray(nodedata.valueModel().value().split(","));
                                                nodedata.valueModel().selectedValues = results;
                                            }
                                        }
                                    }
                                }

                                // Handle Constrain By Dates
                                for (int u = 0; u < itemType.getConstrainByDate().size(); u++) {
                                    nodedata.setTimeConstrain(
                                            itemType.getConstrainByDate().get(u).getDateFrom(),
                                            itemType.getConstrainByDate().get(u).getDateTo());
                                }

                                String status = nodedata.setXmlContent();
                                if (status.equalsIgnoreCase("error")) {
                                    MessageBox mBox = new MessageBox(table.getShell(),
                                            SWT.ICON_INFORMATION | SWT.OK);
                                    mBox.setText("Please Note ...");
                                    mBox.setMessage(
                                            "Response delivered from the remote server could not be understood,\n"
                                                    + "you may wish to retry your last action.");
                                    mBox.open();
                                    event.detail = DND.DROP_NONE;

                                    return;
                                }
                                nodeXmls.add(nodedata);
                            }
                        }
                        populateTable(nodeXmls);

                        // get query instance
                        String xmlRequest = ndata.writeContentQueryXML();
                        lastRequestMessage(xmlRequest);
                        String xmlResponse = CRCQueryClient.sendPDQQueryRequestREST(xmlRequest);
                        lastResponseMessage(xmlResponse);

                        jaxbElement = jaxbUtil.unMashallFromString(xmlResponse);
                        messageType = (ResponseMessageType) jaxbElement.getValue();
                        bt = messageType.getMessageBody();
                        InstanceResponseType instanceResponseType = (InstanceResponseType) new JAXBUnWrapHelper()
                                .getObjectByClass(bt.getAny(), InstanceResponseType.class);

                        QueryInstanceData instanceData = null;
                        XMLGregorianCalendar startDate = null;
                        for (QueryInstanceType queryInstanceType : instanceResponseType.getQueryInstance()) {
                            QueryInstanceData runData = new QueryInstanceData();

                            runData.visualAttribute("FA");
                            runData.tooltip("The results of the query run");
                            runData.id(new Integer(queryInstanceType.getQueryInstanceId()).toString());
                            XMLGregorianCalendar cldr = queryInstanceType.getStartDate();
                            runData.name("Results of " + "[" + cldr.getMonth() + "-" + cldr.getDay() + "-"
                                    + cldr.getYear() + " " + cldr.getHour() + ":" + cldr.getMinute() + ":"
                                    + cldr.getSecond() + "]");

                            if (instanceData == null) {
                                startDate = cldr;
                                instanceData = runData;
                            } else {
                                if (cldr.toGregorianCalendar().compareTo(startDate.toGregorianCalendar()) > 0) {
                                    startDate = cldr;
                                    instanceData = runData;
                                }
                            }
                        }
                        // get patient set
                        if (instanceData == null) {
                            event.detail = DND.DROP_NONE;
                            return;
                        }
                        log.debug("Got query instance: " + instanceData.name());

                        xmlRequest = instanceData.writeContentQueryXML();
                        lastRequestMessage(xmlRequest);

                        xmlResponse = CRCQueryClient.sendPDQQueryRequestREST(xmlRequest);
                        lastResponseMessage(xmlResponse);

                        jaxbElement = jaxbUtil.unMashallFromString(xmlResponse);
                        messageType = (ResponseMessageType) jaxbElement.getValue();
                        bt = messageType.getMessageBody();
                        ResultResponseType resultResponseType = (ResultResponseType) new JAXBUnWrapHelper()
                                .getObjectByClass(bt.getAny(), ResultResponseType.class);

                        for (QueryResultInstanceType queryResultInstanceType : resultResponseType
                                .getQueryResultInstance()) {
                            if (!(queryResultInstanceType.getQueryResultType().getName()
                                    .equalsIgnoreCase("PATIENTSET"))) {
                                continue;
                            }

                            String status = queryResultInstanceType.getQueryStatusType().getName();

                            if (status.equalsIgnoreCase("FINISHED")) {

                                String setId = new Integer(queryResultInstanceType.getResultInstanceId())
                                        .toString();
                                String setSize = new Integer(queryResultInstanceType.getSetSize()).toString();
                                patientSetText.setText("Patient Set: " + setSize + " patients");
                                patientRefId = new String(setId);
                                patientMinNumText.setText("1");
                                leftArrowButton.setEnabled(false);

                                int maxPatientNum = new Integer(patientMaxNumText.getText()).intValue();
                                patientSetSize = queryResultInstanceType.getSetSize();
                                if (patientSetSize > maxPatientNum) {
                                    rightArrowButton.setEnabled(true);
                                    patientMaxNumText.setText("10");
                                } else {
                                    rightArrowButton.setEnabled(false);
                                    if (patientSetSize > 0) {
                                        patientMaxNumText.setText(setSize);
                                    }
                                }

                                log.debug("Dropped set of: " + setSize + " patients"/* strs[0] */
                                        + " with refId: " + setId/*
                                                                 * strs[ 1 ]
                                                                 */);
                            } else {
                                // message
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        return;
                    }
                } /*
                  * else { List conceptChildren = tableXml.getChildren();
                  * parseDropConcepts(conceptChildren, event);
                  * table.redraw(); }
                  */

                event.detail = DND.DROP_NONE;
            } catch (JDOMException e) {
                System.err.println(e.getMessage());
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("You can not drop this item here.");
                mBox.open();
                event.detail = DND.DROP_NONE;
                e.printStackTrace();
                return;
            } catch (Exception e) {
                System.err.println(e.getMessage());
                event.detail = DND.DROP_NONE;
                e.printStackTrace();
                return;
            }
        }
    });

    // create drag source
    DragSource source1 = new DragSource(groupNameText, DND.DROP_COPY);
    source1.setTransfer(types);
    source1.addDragListener(new DragSourceAdapter() {

        @Override
        public void dragSetData(DragSourceEvent event) {

            ConceptTableModel i2b2Model = (ConceptTableModel) table.getModel();
            i2b2Model.fillDataFromTable(rowData);
            if (rowData.size() == 0) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(0);
                    }
                });
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("The set up table is empty.");
                mBox.open();
                return;
            }

            StringWriter strWriter = new StringWriter();
            DndType dndType = new DndType();
            edu.harvard.i2b2.crcxmljaxb.datavo.psm.query.ObjectFactory pdoFactory = new edu.harvard.i2b2.crcxmljaxb.datavo.psm.query.ObjectFactory();
            PanelType panelType = new PanelType();
            panelType.setInvert(0);
            PanelType.TotalItemOccurrences totalOccurrences = new PanelType.TotalItemOccurrences();
            totalOccurrences.setValue(1);
            panelType.setTotalItemOccurrences(totalOccurrences);
            panelType.setPanelNumber(0 + 1);
            // panelType.setName(panelData.getItems().get(0).name() + "_"
            // + generateMessageId().substring(0, 4));
            panelType.setName("Panel-1");

            // TO DO: get table rows and fill the panel object
            for (int i = 1; i < i2b2Model.getRowCount(); i++) {
                QueryModel node = (QueryModel) i2b2Model.getContentAt(7, i);
                ItemType itemType = new ItemType();
                itemType.setItemKey(node.fullname());
                itemType.setItemName(node.name());
                itemType.setTooltip(node.tooltip());
                itemType.setHlevel(Integer.parseInt(node.hlevel()));
                itemType.setClazz("ENC");
                itemType.setItemIcon(node.visualAttribute().trim());
                itemType.setItemColor(i2b2Model.getColorString((RGB) i2b2Model.getContentAt(5, i)));
                itemType.setItemRowNumber((String) i2b2Model.getContentAt(0, i));
                itemType.setItemShape((String) i2b2Model.getContentAt(4, i));

                itemType.getConstrainByValue().add(node.valueModel().writeValueConstrain());
                itemType.getConstrainByDate().add(node.writeTimeConstrain());

                panelType.getItem().add(itemType);
            }

            dndType.getAny().add(pdoFactory.createPanel(panelType));
            edu.harvard.i2b2.crcxmljaxb.datavo.dnd.ObjectFactory dndFactory = new edu.harvard.i2b2.crcxmljaxb.datavo.dnd.ObjectFactory();
            try {
                AnalysisJAXBUtil.getJAXBUtil().marshaller(dndFactory.createPluginDragDrop(dndType), strWriter);
            } catch (JAXBUtilException e) {
                e.printStackTrace();
            }

            // put the data into the event
            event.data = strWriter.toString();
        }

    });

    DropTarget nameTarget = new DropTarget(groupNameText, DND.DROP_COPY);
    nameTarget.setTransfer(types);
    nameTarget.addDropListener(new DropTargetAdapter() {

        @Override
        public void dragLeave(DropTargetEvent event) {
            super.dragLeave(event);
            oModelGroupComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_BLACK));
        }

        @SuppressWarnings("unchecked")
        public void drop(DropTargetEvent event) {
            if (event.data == null) {
                event.detail = DND.DROP_NONE;
                return;
            }
            ArrayList<QueryModel> nodeXmls = new ArrayList<QueryModel>();
            try {
                SAXBuilder parser = new SAXBuilder();
                String xmlContent = (String) event.data;
                java.io.StringReader xmlStringReader = new java.io.StringReader(xmlContent);
                org.jdom.Document panelDoc = parser.build(xmlStringReader);
                org.jdom.Element panelXml = panelDoc.getRootElement().getChild("panel",
                        Namespace.getNamespace("http://www.i2b2.org/xsd/cell/crc/psm/querydefinition/1.1/"));

                if (panelXml == null) {
                    MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                    mBox.setText("Please Note ...");
                    mBox.setMessage("You can not drop this item here.");
                    mBox.open();
                    event.detail = DND.DROP_NONE;
                    return;
                }

                else {

                    String domString = (new XMLOutputter()).outputString(panelXml);
                    JAXBContext jc1 = JAXBContext
                            .newInstance(edu.harvard.i2b2.crcxmljaxb.datavo.psm.query.ObjectFactory.class);
                    Unmarshaller unMarshaller = jc1.createUnmarshaller();
                    JAXBElement panelJaxbElement = (JAXBElement) unMarshaller
                            .unmarshal(new StringReader(domString));

                    PanelType panelType = (PanelType) panelJaxbElement.getValue();
                    String panelname = panelType.getName();
                    groupNameText.setText("Panel Name: " + panelname);
                    for (int j = 0; j < panelType.getItem().size(); j++) {
                        ItemType itemType = panelType.getItem().get(j);
                        QueryModel nodedata = new QueryModel();

                        nodedata.name(itemType.getItemName());
                        nodedata.visualAttribute("FA");
                        nodedata.tooltip(itemType.getTooltip());
                        nodedata.fullname(itemType.getItemKey());
                        nodedata.hlevel(new Integer(itemType.getHlevel()).toString());

                        // / need to handle query tool generated panels
                        if (itemType.getItemShape() != null) {
                            nodedata.tableRow().height = new String(itemType.getItemShape());
                            nodedata.tableRow().color = ((ConceptTableModel) table.getModel())
                                    .getColor(itemType.getItemColor());
                            nodedata.tableRow().rowNumber = Integer.parseInt(itemType.getItemRowNumber());
                        } else {
                            nodedata.tableRow().height = "Medium";
                            nodedata.tableRow().color = new RGB(0, 0, 128);
                            nodedata.tableRow().rowNumber = j + 1;
                        }

                        nodedata.constrainByValue(itemType.getConstrainByValue());
                        if (itemType.getConstrainByValue().size() > 0) {
                            nodedata.setValueConstrains(itemType.getConstrainByValue());

                            if (itemType.getConstrainByValue().size() > 0) {
                                nodedata.setValueConstrains(itemType.getConstrainByValue());
                                if (nodedata.valueModel().hasEnumValue()) {
                                    if (nodedata.valueModel().useTextValue()) {
                                        ArrayList<String> results = new ArrayList<String>();
                                        results.toArray(nodedata.valueModel().value().split(","));
                                        nodedata.valueModel().selectedValues = results;
                                    }
                                }
                            }
                        }

                        // Handle Constrain By Dates
                        for (int u = 0; u < itemType.getConstrainByDate().size(); u++) {
                            nodedata.setTimeConstrain(itemType.getConstrainByDate().get(u).getDateFrom(),
                                    itemType.getConstrainByDate().get(u).getDateTo());
                        }

                        String status = nodedata.setXmlContent();
                        if (status.equalsIgnoreCase("error")) {
                            MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                            mBox.setText("Please Note ...");
                            mBox.setMessage(
                                    "Response delivered from the remote server could not be understood,\n"
                                            + "you may wish to retry your last action.");
                            mBox.open();
                            event.detail = DND.DROP_NONE;

                            return;
                        }
                        nodeXmls.add(nodedata);
                    }
                    // event.detail = DND.DROP_NONE;
                }
                populateTable(nodeXmls);

            }

            catch (JDOMException e) {
                System.err.println(e.getMessage());
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("You can not drop this item here.");
                mBox.open();
                event.detail = DND.DROP_NONE;
                e.printStackTrace();
                return;
            } catch (Exception e) {
                System.err.println(e.getMessage());
                event.detail = DND.DROP_NONE;
                e.printStackTrace();
                return;
            }
        }

        public void dragEnter(DropTargetEvent event) {
            TextTransfer textTransfer = TextTransfer.getInstance();
            if (textTransfer.isSupportedType(event.currentDataType)) {

                event.detail = DND.DROP_COPY;
            }

            oModelGroupComposite.setForeground(oTheParent.getDisplay().getSystemColor(SWT.COLOR_YELLOW));
        }
    });

    DropTarget target = new DropTarget(table, DND.DROP_COPY);
    target.setTransfer(types);
    target.addDropListener(new DropTargetAdapter() {
        @SuppressWarnings("unchecked")
        public void drop(DropTargetEvent event) {
            if (event.data == null) {
                event.detail = DND.DROP_NONE;
                return;
            }

            try {
                SAXBuilder parser = new SAXBuilder();
                String xmlContent = (String) event.data;
                java.io.StringReader xmlStringReader = new java.io.StringReader(xmlContent);
                org.jdom.Document tableDoc = parser.build(xmlStringReader);
                org.jdom.Element tableXml = tableDoc.getRootElement().getChild("concepts",
                        Namespace.getNamespace("http://www.i2b2.org/xsd/cell/ont/1.1/"));

                boolean isQuery = false;
                if (tableXml == null) {
                    MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                    mBox.setText("Please Note ...");
                    mBox.setMessage("You can not drop this item here.");
                    mBox.open();
                    event.detail = DND.DROP_NONE;
                    return;
                }

                if (isQuery) {
                    ArrayList<QueryModel> nodeXmls = new ArrayList<QueryModel>();
                    try {
                        JAXBUtil jaxbUtil = AnalysisJAXBUtil.getJAXBUtil();
                        QueryMasterData ndata = new QueryMasterData();
                        ndata.name(tableXml.getChildText("name"));
                        queryNamemrnlistText.setText(ndata.name());
                        ndata.xmlContent(null);
                        ndata.id(tableXml.getChildTextTrim("query_master_id"));
                        ndata.userId(tableXml.getChildTextTrim("user_id"));

                        String xmlcontent = null;
                        String xmlrequest = null;

                        xmlrequest = ndata.writeDefinitionQueryXML();
                        lastRequestMessage(xmlrequest);

                        if (System.getProperty("webServiceMethod").equals("SOAP")) {
                            xmlcontent = CRCQueryClient.sendPDQQueryRequestSOAP(xmlrequest);
                        } else {
                            xmlcontent = CRCQueryClient.sendPDQQueryRequestREST(xmlrequest);
                        }
                        lastResponseMessage(xmlcontent);

                        if (xmlcontent == null) {

                            return;
                        } else {
                            log.debug("Query content response: " + xmlcontent);
                            ndata.xmlContent(xmlcontent);
                        }

                        JAXBElement jaxbElement = jaxbUtil.unMashallFromString(ndata.xmlContent());
                        ResponseMessageType messageType = (ResponseMessageType) jaxbElement.getValue();

                        BodyType bt = messageType.getMessageBody();
                        MasterResponseType masterResponseType = (MasterResponseType) new JAXBUnWrapHelper()
                                .getObjectByClass(bt.getAny(), MasterResponseType.class);
                        RequestXmlType requestXmlType = masterResponseType.getQueryMaster().get(0)
                                .getRequestXml();

                        org.w3c.dom.Element element = (org.w3c.dom.Element) requestXmlType.getContent().get(0);
                        if (element != null) {
                            log.debug("query definition not null");
                        } else {
                            log.error("query definition is null");
                        }

                        String domString = edu.harvard.i2b2.common.util.xml.XMLUtil
                                .convertDOMElementToString(element);
                        log.debug("string output" + domString);

                        JAXBContext jc1 = JAXBContext
                                .newInstance(edu.harvard.i2b2.crcxmljaxb.datavo.psm.query.ObjectFactory.class);
                        Unmarshaller unMarshaller = jc1.createUnmarshaller();
                        JAXBElement queryDefinitionJaxbElement = (JAXBElement) unMarshaller
                                .unmarshal(new StringReader(domString));

                        QueryDefinitionType queryDefinitionType = (QueryDefinitionType) queryDefinitionJaxbElement
                                .getValue();
                        int numOfPanels = queryDefinitionType.getPanel().size();
                        for (int i = 0; i < numOfPanels; i++) {
                            PanelType panelType = queryDefinitionType.getPanel().get(i);

                            for (int j = 0; j < panelType.getItem().size(); j++) {
                                ItemType itemType = panelType.getItem().get(j);
                                QueryModel nodedata = new QueryModel();

                                nodedata.name(itemType.getItemName());
                                nodedata.visualAttribute("FA");
                                nodedata.tooltip(itemType.getTooltip());
                                nodedata.fullname(itemType.getItemKey());
                                nodedata.hlevel(new Integer(itemType.getHlevel()).toString());

                                String status = nodedata.setXmlContent();
                                if (status.equalsIgnoreCase("error")) {
                                    MessageBox mBox = new MessageBox(table.getShell(),
                                            SWT.ICON_INFORMATION | SWT.OK);
                                    mBox.setText("Please Note ...");
                                    mBox.setMessage(
                                            "Response delivered from the remote server could not be understood,\n"
                                                    + "you may wish to retry your last action.");
                                    mBox.open();
                                    event.detail = DND.DROP_NONE;

                                    return;
                                }
                                nodeXmls.add(nodedata);
                            }
                        }
                        populateTable(nodeXmls);

                        // get query instance
                        String xmlRequest = ndata.writeContentQueryXML();
                        lastRequestMessage(xmlRequest);
                        // log.debug(xmlRequest);
                        String xmlResponse = CRCQueryClient.sendPDQQueryRequestREST(xmlRequest);
                        lastResponseMessage(xmlResponse);

                        jaxbElement = jaxbUtil.unMashallFromString(xmlResponse);
                        messageType = (ResponseMessageType) jaxbElement.getValue();
                        bt = messageType.getMessageBody();
                        InstanceResponseType instanceResponseType = (InstanceResponseType) new JAXBUnWrapHelper()
                                .getObjectByClass(bt.getAny(), InstanceResponseType.class);

                        QueryInstanceData instanceData = null;
                        XMLGregorianCalendar startDate = null;
                        for (QueryInstanceType queryInstanceType : instanceResponseType.getQueryInstance()) {
                            QueryInstanceData runData = new QueryInstanceData();

                            runData.visualAttribute("FA");
                            runData.tooltip("The results of the query run");
                            runData.id(new Integer(queryInstanceType.getQueryInstanceId()).toString());
                            XMLGregorianCalendar cldr = queryInstanceType.getStartDate();
                            runData.name("Results of " + "[" + cldr.getMonth() + "-" + cldr.getDay() + "-"
                                    + cldr.getYear() + " " + cldr.getHour() + ":" + cldr.getMinute() + ":"
                                    + cldr.getSecond() + "]");

                            if (instanceData == null) {
                                startDate = cldr;
                                instanceData = runData;
                            } else {
                                if (cldr.toGregorianCalendar().compareTo(startDate.toGregorianCalendar()) > 0) {
                                    startDate = cldr;
                                    instanceData = runData;
                                }
                            }
                        }
                        // get patient set
                        if (instanceData == null) {
                            event.detail = DND.DROP_NONE;
                            return;
                        }
                        log.debug("Got query instance: " + instanceData.name());

                        xmlRequest = instanceData.writeContentQueryXML();
                        lastRequestMessage(xmlRequest);

                        xmlResponse = CRCQueryClient.sendPDQQueryRequestREST(xmlRequest);
                        lastResponseMessage(xmlResponse);

                        jaxbElement = jaxbUtil.unMashallFromString(xmlResponse);
                        messageType = (ResponseMessageType) jaxbElement.getValue();
                        bt = messageType.getMessageBody();
                        ResultResponseType resultResponseType = (ResultResponseType) new JAXBUnWrapHelper()
                                .getObjectByClass(bt.getAny(), ResultResponseType.class);

                        for (QueryResultInstanceType queryResultInstanceType : resultResponseType
                                .getQueryResultInstance()) {
                            if (!(queryResultInstanceType.getQueryResultType().getName()
                                    .equalsIgnoreCase("PATIENTSET"))) {
                                continue;
                            }

                            String status = queryResultInstanceType.getQueryStatusType().getName();

                            if (status.equalsIgnoreCase("FINISHED")) {
                                // resultData.name("Patient Set - "+resultData
                                // .patientCount()+" Patients");
                                // QueryResultData resultData = new
                                // QueryResultData();
                                String setId = new Integer(queryResultInstanceType.getResultInstanceId())
                                        .toString();
                                String setSize = new Integer(queryResultInstanceType.getSetSize()).toString();
                                patientSetText.setText("Patient Set: " + setSize + " patients");// strs[0]);
                                patientRefId = new String(setId);// strs[1]);
                                patientMinNumText.setText("1");
                                leftArrowButton.setEnabled(false);

                                int maxPatientNum = new Integer(patientMaxNumText.getText()).intValue();
                                patientSetSize = queryResultInstanceType.getSetSize();
                                if (patientSetSize > maxPatientNum) {
                                    rightArrowButton.setEnabled(true);
                                    patientMaxNumText.setText("10");
                                } else {
                                    rightArrowButton.setEnabled(false);
                                    if (patientSetSize > 0) {
                                        patientMaxNumText.setText(setSize);
                                    }
                                }

                                log.debug("Dropped set of: " + setSize + " patients"/* strs[0] */
                                        + " with refId: " + setId/*
                                                                 * strs[ 1 ]
                                                                 */);
                            } else {
                                // message
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                        return;
                    }
                } else {
                    List conceptChildren = tableXml.getChildren();
                    parseDropConcepts(conceptChildren, event);
                    // System.setProperty("XMLfrommodel",(String)
                    // event.data);
                    table.redraw();
                }

                event.detail = DND.DROP_NONE;
            } catch (JDOMException e) {
                System.err.println(e.getMessage());
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("You can not drop this item here.");
                mBox.open();
                event.detail = DND.DROP_NONE;
                e.printStackTrace();
                return;
            } catch (Exception e) {
                System.err.println(e.getMessage());
                event.detail = DND.DROP_NONE;
                e.printStackTrace();
                return;
            }
        }

        public void dragEnter(DropTargetEvent event) {
            event.detail = DND.DROP_COPY;
        }
    });

    DropTarget target1 = new DropTarget(patientSetText, DND.DROP_COPY);
    target1.setTransfer(types);
    target1.addDropListener(new DropTargetAdapter() {
        @SuppressWarnings("unchecked")
        public void drop(DropTargetEvent event) {
            if (event.data == null) {
                event.detail = DND.DROP_NONE;
                return;
            }

            String tmp = patientSetText.getText();
            String dragStr = (String) event.data;
            String[] strs = dragStr.split(":");
            if (strs[0].equalsIgnoreCase("logicquery")) {
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("You can not drop this item here. It accepts a patient set only.");
                mBox.open();
                event.detail = DND.DROP_NONE;
                patientSetText.setText(tmp);
                return;
            }

            JAXBUtil jaxbUtil = AnalysisJAXBUtil.getJAXBUtil();

            try {
                JAXBElement jaxbElement = jaxbUtil.unMashallFromString(dragStr);
                DndType dndType = (DndType) jaxbElement.getValue();
                QueryResultInstanceType queryResultInstanceType = (QueryResultInstanceType) new JAXBUnWrapHelper()
                        .getObjectByClass(dndType.getAny(), QueryResultInstanceType.class);

                if (queryResultInstanceType == null) {
                    MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                    mBox.setText("Please Note ...");
                    mBox.setMessage("You can not drop this item here. It accepts a patient set only.");
                    mBox.open();
                    event.detail = DND.DROP_NONE;
                    patientSetText.setText(tmp);
                    return;
                }

                String resultTypeName = queryResultInstanceType.getQueryResultType().getName();
                if (resultTypeName == null || !resultTypeName.equalsIgnoreCase("PATIENTSET")) {
                    MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                    mBox.setText("Please Note ...");
                    mBox.setMessage("You can not drop this item here. It accepts a patient set only.");
                    mBox.open();
                    event.detail = DND.DROP_NONE;
                    patientSetText.setText(tmp);
                    return;
                }

                String setId = queryResultInstanceType.getResultInstanceId();
                String setSize = new Integer(queryResultInstanceType.getSetSize()).toString();
                patientSetText.setText("Patient Set: " + setSize + " patients");// strs[0]);
                patientRefId = new String(setId);// strs[1]);
                patientMinNumText.setText("1");
                leftArrowButton.setEnabled(false);

                int maxPatientNum = new Integer(patientMaxNumText.getText()).intValue();
                patientSetSize = queryResultInstanceType.getSetSize();
                if (patientSetSize > maxPatientNum) {
                    rightArrowButton.setEnabled(true);
                    patientMaxNumText.setText("10");
                } else {
                    rightArrowButton.setEnabled(false);
                    // if(patientSetSize>0) {
                    // patientMaxNumText.setText(setSize);
                    // }
                }

                log.debug("Dropped set of: " + setSize + " patients"/*
                                                                    * strs[0
                                                                    * ]
                                                                    */
                        + " with refId: " + setId/* strs[1] */);
            } catch (Exception e) {
                e.printStackTrace();
                event.detail = DND.DROP_NONE;
                return;
            }
        }

        public void dragEnter(DropTargetEvent event) {
            event.detail = DND.DROP_COPY;
        }
    });

    table.addCellResizeListener(new KTableCellResizeListener() {
        public void columnResized(int col, int newWidth) {
            log.debug("Column " + col + " resized to " + newWidth);
        }

        public void rowResized(int newHeight) {
            log.debug("Rows resized to " + newHeight);
        }

    });

    table.addListener(SWT.Resize, new Listener() {
        public void handleEvent(Event event) {
            int tableWidth = table.getBounds().width;
            table.getModel().setColumnWidth(1, tableWidth - 425);
        }
    });

    table.addMouseTrackListener(new MouseTrackListener() {

        public void mouseEnter(MouseEvent arg0) {

        }

        public void mouseExit(MouseEvent arg0) {

        }

        public void mouseHover(MouseEvent arg0) {
            MouseEvent evt = arg0;

            Rectangle rect = table.getCellRect(3, getRowNumber());
            Rectangle rect1 = table.getCellRect(5, 1);

            // System.out.println("rect X and width: "+rect.x+","+rect.width)
            // ;
            // System.out.println("mouse X and Y: "+evt.x+","+evt.y);
            if (evt.y < rect.y && evt.x > rect1.x && evt.x < rect1.x + rect1.width) {
                table.setToolTipText("Double click the cell to change color.");
            } else {
                table.setToolTipText("");
            }
        }

    });

    // Item 2: a Color Palette
    TabItem item2 = new TabItem(tabFolder, SWT.NONE);
    item2.setText("Render a Timeline");
    final Composite comp2 = new Composite(tabFolder, SWT.NONE);
    item2.setControl(comp2);

    GridLayout oGridLayout0 = new GridLayout();
    oGridLayout0.marginWidth = 1;
    oGridLayout0.marginHeight = 5;
    comp2.setLayout(oGridLayout0);

    if (false) {
        Composite composite = new Composite(comp2, SWT.NO_BACKGROUND | SWT.EMBEDDED);

        /*
         * Set a Windows specific AWT property that prevents heavyweight
         * components from erasing their background. Note that this is a
         * global property and cannot be scoped. It might not be suitable
         * for your application.
         */
        try {
            // System.setProperty("sun.awt.noerasebackground", "true");
        } catch (NoSuchMethodError error) {
        }

        /* Create and setting up frame */
        ////for mac fix
        //if ( System.getProperty("os.name").toLowerCase().startsWith("mac"))
        //SWT_AWT.embeddedFrameClass = "sun.lwawt.macosx.CViewEmbeddedFrame";
        Frame frame = SWT_AWT.new_Frame(composite);
        Panel panel = new Panel(new BorderLayout()) {
            public void update(java.awt.Graphics g) {
                /* Do not erase the background */
                paint(g);
            }
        };
        frame.add(panel);
        JRootPane root = new JRootPane();
        panel.add(root);
        java.awt.Container contentPane = root.getContentPane();
        log.debug("got to here");

        record record1 = new record();
        record1.start();
        record1.init();

        JScrollPane scrollPane = new JScrollPane(record1);
        contentPane.setLayout(new BorderLayout());
        contentPane.add(scrollPane);
    }

    if (true) {
        Composite composite = new Composite(comp2, SWT.NO_BACKGROUND | SWT.EMBEDDED);
        GridData gridData3 = new GridData();
        gridData3.horizontalIndent = 0;
        gridData3.verticalIndent = 0;
        gridData3.horizontalAlignment = GridData.FILL;
        gridData3.verticalAlignment = GridData.FILL;
        gridData3.grabExcessHorizontalSpace = true;
        gridData3.grabExcessVerticalSpace = true;
        composite.setLayoutData(gridData3);
        /* Create and setting up frame */
        ////for mac fix
        //if ( System.getProperty("os.name").toLowerCase().startsWith("mac"))
        //SWT_AWT.embeddedFrameClass = "sun.lwawt.macosx.CViewEmbeddedFrame";
        Frame frame = SWT_AWT.new_Frame(composite);
        Panel panel = new Panel(new BorderLayout());// {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
            log.debug("Error setting native LAF: " + e);
        }

        frame.add(panel);
        JRootPane root = new JRootPane();
        panel.add(root);
        oAwtContainer = root.getContentPane();
        log.debug("got to here");
    }

    tabFolder.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {

            ConceptTableModel i2b2Model = (ConceptTableModel) table.getModel();
            i2b2Model.fillDataFromTable(rowData);
            if (rowData.size() == 0) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(0);
                    }
                });
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("The set up table is empty.");
                mBox.open();
                return;
            }

            String patientSetStr = patientSetText.getText();
            if (patientSetStr.equals("") && !isAll) {
                oTheParent.getDisplay().syncExec(new Runnable() {
                    public void run() {
                        tabFolder.setSelection(0);
                    }
                });
                MessageBox mBox = new MessageBox(table.getShell(), SWT.ICON_INFORMATION | SWT.OK);
                mBox.setText("Please Note ...");
                mBox.setMessage("Please set a patient set or choose all datamart option.");
                mBox.open();
                return;
            }

            if (tabFolder.getSelectionIndex() == 1) {
                if (patientSetStr.equalsIgnoreCase("All")) {
                    int minPatient = 0;
                    try {
                        String minText = patientMinNumText.getText();
                        minPatient = Integer.parseInt(minText);
                    } catch (Exception e1) {
                        minPatient = -1;
                    }

                    int maxPatient = 0;
                    try {
                        maxPatient = Integer.parseInt(patientMaxNumText.getText());
                    } catch (Exception e2) {
                        maxPatient = -1;
                    }
                    PerformVisualizationQuery(oAwtContainer, "All", minPatient, maxPatient, bDisplayAllData);
                } else {
                    int min = Integer.parseInt(patientMinNumText.getText());
                    int max = Integer.parseInt(patientMaxNumText.getText());
                    PerformVisualizationQuery(oAwtContainer, patientRefId, min, max, bDisplayAllData);
                }
            } else {
                DestroyMiniVisualization(oAwtContainer);
            }
        }

        public void widgetDefaultSelected(SelectionEvent e) {
            widgetSelected(e);
        }
    });

    if (drawLeft) {
        horizontalForm.setWeights(new int[] { 30, 70 });
    }

    return parent;
}