Example usage for org.springframework.transaction.support DefaultTransactionDefinition setIsolationLevel

List of usage examples for org.springframework.transaction.support DefaultTransactionDefinition setIsolationLevel

Introduction

In this page you can find the example usage for org.springframework.transaction.support DefaultTransactionDefinition setIsolationLevel.

Prototype

public final void setIsolationLevel(int isolationLevel) 

Source Link

Document

Set the isolation level.

Usage

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

public ModelAndView editProspect(HttpServletRequest request, HttpServletResponse response) {
    Date joiningdate = null;//from   w  ww.ja  va 2 s . c om
    DateFormat formatter;
    formatter = new SimpleDateFormat("MM/dd/yyyy");
    KwlReturnObject result = null;
    JSONObject jobj1 = new JSONObject();
    String appnames = "";
    //Create transaction
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setName("JE_Tx");
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
    TransactionStatus status = txnManager.getTransaction(def);

    try {
        String[] ids = request.getParameterValues("ids");
        String[] cnames = request.getParameterValues("cnames");
        String[] positionids = request.getParameterValues("positionids");
        String applicantStatus = request.getParameter("selected");
        HashMap<String, Object> requestParams = new HashMap<String, Object>();
        HashMap<String, Object> appParams = new HashMap<String, Object>();
        for (int i = 0; i < ids.length; i++) {
            requestParams.clear();
            requestParams.put("positionid", positionids[i]);
            requestParams.put("primary", true);
            result = hrmsRecJobDAOObj.getPositionmain(requestParams);
            Positionmain position = null;
            if (StringUtil.checkResultobjList(result)) {
                position = (Positionmain) result.getEntityList().get(0);
            }

            requestParams.clear();
            requestParams.put("id", ids[i]);
            requestParams.put("primary", true);
            result = hrmsRecJobDAOObj.getPositionstatus(requestParams);
            appParams.put("id", ids[i]);
            Allapplications appl = null;
            if (StringUtil.checkResultobjList(result)) {
                appl = (Allapplications) result.getEntityList().get(0);
            }
            //                Allapplications appl = (Allapplications) session.load(Allapplications.class, ids[i]);
            //                Positionmain position = (Positionmain) session.load(Positionmain.class, positionids[i]);

            if (StringUtil.isNullOrEmpty(request.getParameter("callback")) == false) {
                appParams.put("callback", request.getParameter("callback"));
                //                    appl.setCallback((MasterData) session.load(MasterData.class, request.getParameter("callback")));
            }
            if (StringUtil.isNullOrEmpty(applicantStatus)) {
            } else {
                //                    appl.setStatus(request.getParameter("status"));
                appParams.put("status", applicantStatus);
                if (applicantStatus.equalsIgnoreCase("Rejected")) {
                    if (appl.getApplicationflag() == 1 && position.getPositionsfilled() > 0) {
                        requestParams.clear();
                        requestParams.put("positionid", positionids[i]);
                        requestParams.put("positionsfilled", position.getPositionsfilled() - 1);
                        requestParams.put("delflag", 0);
                        hrmsRecJobDAOObj.updatePositionmain(requestParams);
                        //                            position.setPositionsfilled(position.getPositionsfilled()-1);
                        //                            position.setDelflag(0);
                        //                            session.update(position);
                    }
                    appParams.put("applicationflag", 2);
                    appParams.put("rejectedbefore", 1);
                    //                        appl.setApplicationflag(2);
                    //                        appl.setRejectedbefore(1);
                } else if (applicantStatus.equalsIgnoreCase("Selected")) {
                    joiningdate = (Date) formatter.parse(request.getParameter("joiningdate"));
                    if (appl.getApplydate() != null && joiningdate != null
                            && appl.getApplydate().compareTo(joiningdate) < 0) {
                        //                        appl.setApplicationflag(1);
                        appParams.put("applicationflag", 1);
                        if (Boolean.parseBoolean(request.getParameter("changeselected"))) {
                            requestParams.clear();
                            requestParams.put("positionid", positionids[i]);
                            if (position.getNoofpos() >= position.getPositionsfilled() + 1) {
                                if (position.getNoofpos() == position.getPositionsfilled() + 1) {
                                    requestParams.put("delflag", 3);
                                    //                                    position.setDelflag(3);
                                }
                                //                                position.setPositionsfilled(position.getPositionsfilled() + 1);
                                requestParams.put("positionsfilled", position.getPositionsfilled() + 1);
                            }
                            //                            session.update(position);
                            hrmsRecJobDAOObj.updatePositionmain(requestParams);
                        }
                        if (!StringUtil.isNullOrEmpty(request.getParameter("joiningdate"))) {
                            joiningdate = (Date) formatter.parse(request.getParameter("joiningdate"));
                            //                            appl.setJoiningdate(joiningdate);
                            appParams.put("joiningdate", joiningdate);
                        }
                    }
                } else {
                    if (appl.getApplicationflag() == 1 && position.getPositionsfilled() >= 0) {
                        requestParams.clear();
                        //                            position.setPositionsfilled(position.getPositionsfilled()-1);
                        //                            position.setDelflag(0);
                        //                            session.update(position);
                        requestParams.put("positionid", positionids[i]);
                        requestParams.put("positionsfilled", position.getPositionsfilled() - 1);
                        requestParams.put("delflag", 0);
                        hrmsRecJobDAOObj.updatePositionmain(requestParams);

                    }
                    //                        appl.setApplicationflag(0);
                    appParams.put("applicationflag", 0);

                }
            }
            if (StringUtil.isNullOrEmpty(request.getParameter("rank")) == false) {
                //                    appl.setRank((MasterData) session.load(MasterData.class, request.getParameter("rank")));
                appParams.put("rank", request.getParameter("rank"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("statuscomment"))) {
                //                    appl.setStatuscomment(request.getParameter("statuscomment"));
                appParams.put("statuscomment", request.getParameter("statuscomment"));
            }
            String usrnm;
            if (appl.getEmployee() != null) {
                usrnm = StringUtil.getFullName(appl.getEmployee());
            } else {
                usrnm = appl.getConfigjobapplicant().getCol1() + " " + appl.getConfigjobapplicant().getCol2();
            }
            //                session.update(appl);

            if (request.getParameter("selected").equals("Selected")) {
                if (appl.getApplydate() != null && joiningdate != null
                        && appl.getApplydate().compareTo(joiningdate) < 0) {
                    hrmsRecJobDAOObj.addAllapplications(appParams);
                } else {
                    appnames += (cnames[i] + " ,");
                }
            } else {
                hrmsRecJobDAOObj.addAllapplications(appParams);
            }
            //@@ProfileHandler.insertAuditLog(session, AuditAction.PROSPECT_EDITED, "User  " + AuthHandler.getFullName(session, AuthHandler.getUserid(request)) + " has edited prospect of " + usrnm,request);
        }
        txnManager.commit(status);
        if (!appnames.equals("")) {
            appnames = appnames.substring(0, appnames.length() - 1);
        }
        jobj1.put("msg", appnames);
        jobj1.put("success", true);
        jobj1.put("valid", true);
    } catch (Exception ex) {
        ex.printStackTrace();
        txnManager.rollback(status);
    } finally {
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }
}

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

public ModelAndView InternalJobpositions(HttpServletRequest request, HttpServletResponse response) {
    Date date = null;//from  ww  w.j a v a  2s.com
    SimpleDateFormat fmt = new SimpleDateFormat("MM/dd/yyyy");
    boolean checkflag = true;
    JSONObject jobj = new JSONObject();
    JSONObject jobj1 = new JSONObject();
    KwlReturnObject result = null;
    //Create transaction
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setName("JE_Tx");
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
    TransactionStatus status = txnManager.getTransaction(def);

    try {
        HashMap<String, Object> requestParams = new HashMap<String, Object>();
        String companyid = sessionHandlerImplObj.getCompanyid(request);
        Company company = (Company) kwlCommonTablesDAOObj.getObject("com.krawler.common.admin.Company",
                companyid);
        if (StringUtil.isNullOrEmpty(request.getParameter("posid"))) {
            ArrayList<String> name = new ArrayList<String>();
            ArrayList<Object> value = new ArrayList<Object>();
            name.add("position.id");
            value.add(request.getParameter("position"));

            name.add("department.id");
            value.add(request.getParameter("department"));

            name.add("jobtype");
            value.add(request.getParameter("jobtype"));

            name.add("!delflag");
            value.add(1);
            requestParams.clear();
            requestParams.put("filter_names", name);
            requestParams.put("filter_values", value);
            result = hrmsRecJobDAOObj.getPositionmain(requestParams);
            if (!result.getEntityList().isEmpty())
                checkflag = false;
            if (checkflag) {

                requestParams = new HashMap<String, Object>();
                requestParams.put("masterid", request.getParameter("position"));
                requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
                result = hrmsCommonDAOObj.getMasterData(requestParams);
                MasterData md = null;
                if (result.getEntityList() != null && result.getEntityList().size() > 0)
                    md = (MasterData) result.getEntityList().get(0);

                requestParams = new HashMap<String, Object>();
                requestParams.put("masterid", request.getParameter("department"));
                requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
                result = hrmsCommonDAOObj.getMasterData(requestParams);
                MasterData dept = null;
                if (result.getEntityList() != null && result.getEntityList().size() > 0)
                    dept = (MasterData) result.getEntityList().get(0);
                requestParams = new HashMap<String, Object>();
                requestParams.put("empid", request.getParameter("manager"));
                result = hrmsCommonDAOObj.getUserDetailsbyUserid(requestParams);
                User man = null;
                if (result.getEntityList() != null && result.getEntityList().size() > 0)
                    man = (User) result.getEntityList().get(0);
                date = (Date) fmt.parse(request.getParameter("startdate"));

                requestParams = new HashMap<String, Object>();
                requestParams.put("empid", sessionHandlerImplObj.getUserid(request));
                result = hrmsCommonDAOObj.getUserDetailsbyUserid(requestParams);
                User createdby = null;
                if (result.getEntityList() != null && result.getEntityList().size() > 0)
                    createdby = (User) result.getEntityList().get(0);

                requestParams = new HashMap<String, Object>();
                requestParams.put("startdate", request.getParameter("startdate"));
                requestParams.put("enddate", request.getParameter("enddate"));
                requestParams.put("position", md);
                requestParams.put("details", request.getParameter("details"));
                requestParams.put("jobtype", request.getParameter("jobtype"));
                requestParams.put("jobidwthformat", Integer.parseInt(request.getParameter("jobid")));
                HashMap<String, Object> requestParams1 = new HashMap<String, Object>();
                requestParams1.put("companyid", sessionHandlerImplObj.getCompanyid(request));
                requestParams1.put("jobid", request.getParameter("jobid"));
                requestParams1.put("jobidformat", request.getParameter("jobidformat"));
                requestParams.put("jobid", profileHandlerDAOObj.getJobIdFormatEdit(requestParams1));
                requestParams.put("delflag", 0);
                requestParams.put("company", company);
                requestParams.put("manager", man);
                requestParams.put("departmentid", dept);
                requestParams.put("noofpos", Integer.parseInt(request.getParameter("nopos")));
                requestParams.put("createdby", createdby);
                requestParams.put("positionsfilled", 0);
                hrmsRecJobDAOObj.setPositionmain(requestParams);

                jobj.put("message", messageSource.getMessage("hrms.recruitment.Jobpositionaddedsuccessfully",
                        null, "Job position added successfully.", RequestContextUtils.getLocale(request)));
            } else {
                jobj.put("message", messageSource.getMessage("hrms.recruitment.Jobpositionalreadypresent", null,
                        "Job position already present.", RequestContextUtils.getLocale(request)));
            }
        } else {
            //Positionmain posmain = (Positionmain) session.load(Positionmain.class, request.getParameter("posid"));
            requestParams = new HashMap<String, Object>();
            requestParams.put("empid", request.getParameter("manager"));
            result = hrmsCommonDAOObj.getUserDetailsbyUserid(requestParams);
            User man = null;
            if (result.getEntityList() != null && result.getEntityList().size() > 0)
                man = (User) result.getEntityList().get(0);

            //                requestParams = new HashMap<String, Object>();
            //                requestParams.put("positionid",request.getParameter("posid"));
            ArrayList<String> name = new ArrayList<String>();
            ArrayList<Object> value = new ArrayList<Object>();

            name.add("positionid");
            value.add(request.getParameter("posid"));
            requestParams.clear();
            requestParams.put("filter_names", name);
            requestParams.put("filter_values", value);
            result = hrmsRecJobDAOObj.getPositionmain(requestParams);
            Positionmain posmain = null;
            requestParams = new HashMap<String, Object>();
            requestParams.put("positionid", request.getParameter("posid"));
            if (result.getEntityList() != null && result.getEntityList().size() > 0)
                posmain = (Positionmain) result.getEntityList().get(0);

            if (request.getParameter("details") != null) {
                requestParams.put("details", request.getParameter("details"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("manager"))) {
                requestParams.put("manager", man);
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("department"))) {
                requestParams.put("departmentid", request.getParameter("department"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("startdate"))) {
                //date = (Date) fmt.parse(request.getParameter("startdate"));
                requestParams.put("startdate", request.getParameter("startdate"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("enddate"))) {
                date = (Date) fmt.parse(request.getParameter("enddate"));
                if (new Date(fmt.format(new Date())).after(date)) {
                    requestParams.put("delflag", 2);
                } else {
                    requestParams.put("delflag", 0);
                }
                requestParams.put("enddate", request.getParameter("enddate"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("nopos"))) {
                if (posmain.getPositionsfilled() == Integer.parseInt(request.getParameter("nopos"))) {
                    requestParams.put("delflag", 3);
                }
                requestParams.put("noofpos", Integer.parseInt(request.getParameter("nopos")));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("jobshift"))) {
                requestParams.put("jobshift", request.getParameter("jobshift"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("location"))) {
                requestParams.put("location", request.getParameter("location"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("relocation"))) {
                requestParams.put("relocation", request.getParameter("relocation"));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("expmonth"))) {
                requestParams.put("experiencemonth", Integer.parseInt(request.getParameter("expmonth")));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("expyear"))) {
                requestParams.put("experienceyear", Integer.parseInt(request.getParameter("expyear")));
            }
            if (!StringUtil.isNullOrEmpty(request.getParameter("travel"))) {
                requestParams.put("travel", request.getParameter("travel"));
            }
            result = hrmsRecJobDAOObj.updatePositionmain(requestParams);
            jobj.put("message", messageSource.getMessage("hrms.recruitment.Jobpositionupdatedsuccessfully",
                    null, "Job position updated successfully.", RequestContextUtils.getLocale(request)));
        }
        //            ProfileHandler.insertAuditLog(session,
        //                    ("Internal".equals(request.getParameter("jobtype")) ? AuditAction.INTERNAL_JOB_ADDED : AuditAction.EXTERNAL_JOB_ADDED),
        //                    "User " + AuthHandler.getFullName(session, AuthHandler.getUserid(request)) + " has added " + request.getParameter("jobtype") + " job", request);

        jobj1.put("valid", true);
        jobj1.put("data", jobj.toString());
        txnManager.commit(status);

    } catch (ParseException ex) {
        ex.printStackTrace();
        txnManager.rollback(status);
    } catch (SessionExpiredException ex) {
        ex.printStackTrace();
        txnManager.rollback(status);
    } catch (JSONException ex) {
        ex.printStackTrace();
        txnManager.rollback(status);
    } catch (Exception e) {
        e.printStackTrace();
        txnManager.rollback(status);
    } finally {
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }

}

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

public ModelAndView scheduleinterview(HttpServletRequest request, HttpServletResponse response) {
    Date date1;/*from   w w  w  . j a  v  a 2s.  c o  m*/
    DateFormat formatter;
    JSONObject jobj = new JSONObject();
    String interviewdate = "";
    //boolean reflag=false;
    String htmlmsg = "";
    String pmsg = "";
    String interviewsub = "";
    KwlReturnObject result = null, recruitresult = null;
    //Create transaction
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setName("JE_Tx");
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
    TransactionStatus status = txnManager.getTransaction(def);

    try {
        HashMap<String, Object> requestParams = new HashMap<String, Object>();
        String interviewtime = request.getParameter("interviewtime");
        String location = request.getParameter("interviewplace");
        formatter = new SimpleDateFormat("MM/dd/yyyy");
        //            Company cmp=(Company) session.get(Company.class,AuthHandler.getCompanyid(request));
        requestParams.put("companyid", sessionHandlerImplObj.getCompanyid(request));
        result = profileHandlerDAOObj.getCompanyid(requestParams);
        Company cmp = null;
        if (StringUtil.checkResultobjList(result)) {
            cmp = (Company) result.getEntityList().get(0);
        }

        date1 = (Date) formatter.parse(request.getParameter("interviewdt"));
        //interviewdate=(AuthHandler.getUserDateFormatter(request,session).format(date1));
        requestParams.clear();
        requestParams.put("request", request);
        interviewdate = request.getParameter("interviewdt");

        Allapplications allapl = null;
        String[] ids = request.getParameterValues("ids");
        String[] emailids = new String[ids.length];
        String[] Resumeids = new String[ids.length];
        String[] jobs = new String[ids.length];
        String[] applicant = new String[ids.length];
        Boolean[] reflag = new Boolean[ids.length];
        for (int i = 0; i < ids.length; i++) {
            requestParams.clear();
            requestParams.put("id", ids[i]);
            requestParams.put("primary", true);
            result = hrmsRecJobDAOObj.getPositionstatus(requestParams);
            allapl = (Allapplications) result.getEntityList().get(0);
            if (allapl.getStatus().equalsIgnoreCase("In Process")) {
                reflag[i] = true;
            } else {
                reflag[i] = false;
            }
            requestParams.clear();
            requestParams.put("id", ids[i]);
            requestParams.put("status", "In Process");
            requestParams.put("interviewdate", date1);
            requestParams.put("interviewtime", interviewtime);
            requestParams.put("interviewplace", location);
            requestParams.put("contactperson", request.getParameter("contactperson"));
            requestParams.put("interviewcomment", request.getParameter("interviewcomment"));
            //set rid to recruiter table and remove recruiter column from allapp
            requestParams.put("recruiter", request.getParameter("rid"));
            result = hrmsRecJobDAOObj.addAllapplications(requestParams);
            if (StringUtil.checkResultobjList(result)) {
                allapl = (Allapplications) result.getEntityList().get(0);
                requestParams.clear();
                String[] Recruiterids = request.getParameter("rid").split(",");
                requestParams.put("Allapplication", allapl.getId());
                boolean success = hrmsRecJobDAOObj.deleteRecruiters(requestParams);
                requestParams.put("Delflag", 0);
                for (int j = 0; j < Recruiterids.length && success; j++) {
                    requestParams.put("Recruit", Recruiterids[j]);
                    recruitresult = hrmsRecJobDAOObj.setRecruiters(requestParams);
                }
            }

            jobs[i] = (allapl.getPosition().getPosition().getValue() + " [" + allapl.getPosition().getJobid()
                    + "] ");

            if (Integer.parseInt(request.getParameter("employeetype")) == 1) {
                emailids[i] = allapl.getEmployee().getEmailID();
                applicant[i] = (allapl.getEmployee().getFirstName() + " " + allapl.getEmployee().getLastName());
            } else {
                emailids[i] = allapl.getConfigjobapplicant().getCol3();
                applicant[i] = (allapl.getConfigjobapplicant().getCol1() + " "
                        + allapl.getConfigjobapplicant().getCol2());
                Resumeids[i] = allapl.getConfigjobapplicant().getCol5();
            }
            String usrnm;
            if (allapl.getEmployee() != null) {
                usrnm = StringUtil.getFullName(allapl.getEmployee());
            } else {
                usrnm = allapl.getConfigjobapplicant().getCol1() + " "
                        + allapl.getConfigjobapplicant().getCol2();
            }
            //@@ProfileHandler.insertAuditLog(session, AuditAction.INTERVIEW_SCHEDULED, "User  " + AuthHandler.getFullName(session, AuthHandler.getUserid(request)) + " has scheduled interview for " + usrnm + " on "+ interviewdate + " at " + allapl.getInterviewplace(),request);
        }
        //             User usr=(User) session.get(User.class,AuthHandler.getUserid(request));
        Useraccount ua = (Useraccount) kwlCommonTablesDAOObj.getObject("com.krawler.common.admin.Useraccount",
                sessionHandlerImplObj.getUserid(request));
        User usr = ua.getUser();
        if (!StringUtil.isNullOrEmpty(request.getParameter("mail"))) {
            for (int j = 0; j < emailids.length; j++) {
                if (reflag[j]) {
                    pmsg = String.format(HrmsMsgs.rescheduleinterviewPlnmsg, applicant[j], jobs[j],
                            cmp.getCompanyName(), interviewdate, interviewtime, location,
                            usr.getContactNumber(), usr.getEmailID(),
                            usr.getFirstName() + " " + usr.getLastName(),
                            ua.getDesignationid() != null ? ua.getDesignationid().getValue() : " ",
                            cmp.getCompanyName());
                    htmlmsg = String.format(HrmsMsgs.rescheduleinterviewHTMLmsg, applicant[j], jobs[j],
                            cmp.getCompanyName(), interviewdate, interviewtime, location,
                            usr.getContactNumber(), usr.getEmailID(),
                            usr.getFirstName() + " " + usr.getLastName(),
                            ua.getDesignationid() != null ? ua.getDesignationid().getValue() : " ",
                            cmp.getCompanyName());
                    interviewsub = String.format(HrmsMsgs.rescheduleinterviewSubject,
                            allapl.getPosition().getJobid(), allapl.getPosition().getPosition().getValue(),
                            cmp.getCompanyName());
                    try {
                        SendMailHandler.postMail(new String[] { emailids[j] }, interviewsub, htmlmsg, pmsg,
                                usr.getEmailID());
                    } catch (MessagingException e) {
                        e.printStackTrace();
                    }
                } else {
                    pmsg = String.format(HrmsMsgs.interviewPlnmsg, jobs[j], interviewdate, interviewtime,
                            location);
                    htmlmsg = String.format(HrmsMsgs.interviewHTMLmsg, applicant[j], jobs[j],
                            cmp.getCompanyName(), interviewdate, interviewtime, location,
                            usr.getContactNumber(), usr.getEmailID(),
                            usr.getFirstName() + " " + usr.getLastName(),
                            ua.getDesignationid() != null ? ua.getDesignationid().getValue() : " ",
                            cmp.getCompanyName());
                    interviewsub = String.format(HrmsMsgs.interviewSubject, allapl.getPosition().getJobid(),
                            allapl.getPosition().getPosition().getValue(), cmp.getCompanyName());
                    try {
                        SendMailHandler.postMail(new String[] { emailids[j] }, interviewsub, htmlmsg, pmsg,
                                usr.getEmailID());
                    } catch (MessagingException e) {
                        e.printStackTrace();
                    }
                }

                ArrayList params = new ArrayList();
                params.add(allapl.getId());
                ArrayList filter_names = new ArrayList();
                filter_names.add("allapplication.id");
                requestParams.clear();
                requestParams.put("filter_names", filter_names);
                requestParams.put("filter_values", params);
                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);
                        String interviewer = r.getRecruit().getFirstName() + " " + r.getRecruit().getLastName();
                        String intpmsg = String.format(HrmsMsgs.interviewinvitePlnmsg, interviewer, jobs[j],
                                interviewdate, interviewtime, location);
                        String inthtmlmsg = String.format(HrmsMsgs.interviewinviteHTMLmsg, interviewer, jobs[j],
                                interviewdate, interviewtime, location,
                                usr.getFirstName() + " " + usr.getLastName(),
                                ua.getDesignationid() != null ? ua.getDesignationid().getValue() : " ",
                                cmp.getCompanyName());
                        String interviewinvitesub = String.format(HrmsMsgs.interviewinviteSubject,
                                allapl.getPosition().getJobid(), allapl.getPosition().getPosition().getValue(),
                                cmp.getCompanyName());

                        if (StringUtil.isNullOrEmpty(Resumeids[j])) {
                            try {
                                SendMailHandler.postMail(new String[] { r.getRecruit().getEmailID() },
                                        interviewinvitesub, inthtmlmsg, intpmsg, usr.getEmailID());
                            } catch (MessagingException e) {
                                e.printStackTrace();
                            }

                        } else {
                            hrmsDocumentController hdc = new hrmsDocumentController();
                            KwlReturnObject kmsg = hrmsExtApplDocsDAOObj.downloadDocument(Resumeids[j]);
                            HashMap ht = hdc.getDocInfo(kmsg, storageHandlerImplObj);
                            try {
                                if (ht != null && ht.containsKey("filename")) {
                                    SendMailHandler.postMail(new String[] { r.getRecruit().getEmailID() },
                                            interviewinvitesub, inthtmlmsg, intpmsg, usr.getEmailID(),
                                            new String[] { (String) ht.get("attachment"),
                                                    (String) ht.get("filename") });
                                } else {
                                    SendMailHandler.postMail(new String[] { r.getRecruit().getEmailID() },
                                            interviewinvitesub, inthtmlmsg, intpmsg, usr.getEmailID());
                                }
                            } catch (MessagingException e) {
                                e.printStackTrace();
                            }
                        }

                    }
                }
            }
        }
        if (result.isSuccessFlag()) {
            String interviewersname = "";
            String delimiter = ",";
            String[] temp = request.getParameter("rid").split(delimiter);
            for (int i = 0; i < temp.length; i++) {
                interviewersname += profileHandlerDAOObj.getUserFullName(temp[i]);
                if (temp.length > i + 1)
                    interviewersname += ", ";
            }
            for (int i = 0; i < ids.length; i++)
                auditTrailDAOObj.insertAuditLog(AuditAction.INTERVIEW_SCHEDULED, "User  "
                        + profileHandlerDAOObj.getUserFullName(sessionHandlerImplObj.getUserid(request))
                        + " has scheduled interview for applicant " + request.getParameterValues("cname")[i]
                        + ". Interviewers are " + interviewersname, request, "0");
        }
        jobj.put("success", "true");
        txnManager.commit(status);
    } catch (Exception ex) {
        ex.printStackTrace();
        txnManager.rollback(status);
    } finally {
        return new ModelAndView("jsonView", "model", "");
    }
}

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

public ModelAndView createapplicantFunction(HttpServletRequest request, HttpServletResponse response) {
    JSONObject jobj = new JSONObject();
    JSONObject jobj1 = new JSONObject();
    List list = null;//from   w  w w. jav a 2 s . c o m
    SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
    KwlReturnObject result = null;
    //Create transaction
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setName("JE_Tx");
    def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
    def.setIsolationLevel(TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
    TransactionStatus status = txnManager.getTransaction(def);
    try {

        HashMap<String, Object> requestParams = new HashMap<String, Object>();
        ArrayList filter_names = new ArrayList(), filter_values = new ArrayList();

        String pwd = request.getParameter("p");
        String username = request.getParameter("u");
        String fname = request.getParameter("fname");
        String lname = request.getParameter("lname");
        String cmpid = sessionHandlerImplObj.getCompanyid(request);
        if (StringUtil.isNullOrEmpty(request.getParameter("update"))) {

            filter_names.add("Col3");
            filter_values.add(request.getParameter("e"));
            filter_names.add("deleted");
            filter_values.add(false);
            filter_names.add("company.companyID");
            filter_values.add(cmpid);

            requestParams.put("filter_names", filter_names);
            requestParams.put("filter_values", filter_values);

            result = hrmsRecJobDAOObj.getConfigJobApplicant(requestParams);

            list = result.getEntityList();

            if (list.size() == 0) {
                Company cmp = (Company) kwlCommonTablesDAOObj.getObject("com.krawler.common.admin.Company",
                        cmpid);
                requestParams.clear();
                requestParams.put("Col1", fname);
                requestParams.put("Col2", lname);
                requestParams.put("Col3", request.getParameter("e"));
                //requestParams.put("Address1", request.getParameter("addr"));
                requestParams.put("Col4", request.getParameter("contact"));
                //                    requestParams.put("Username", username);
                //                    requestParams.put("Password", authHandler.getSHA1(pwd));
                //                    requestParams.put("Status", 0);
                requestParams.put("Company", cmpid);
                result = hrmsRecJobDAOObj.addConfigRecruitmentData(requestParams);
                if (result.isSuccessFlag()) {
                    /*String uri = URLUtil.getPageURL(request, Links.loginpagewthFull,cmp.getSubDomain())+"applicantLogin.html";
                    String pmsg = String.format(KWLErrorMsgs.msgMailInvite, fname, "Demo", username, pwd, uri, "Demo");
                    String htmlmsg = String.format(HrmsMsgs.msgMailInviteUsernamePassword, fname, profileHandlerDAOObj.getUserFullName( sessionHandlerImplObj.getUserid(request)), sessionHandlerImplObj.getCompanyName(request), username,
                        pwd, uri, uri, "");
                    try {
                    SendMailHandler.postMail(new String[]{request.getParameter("e")}, "["+messageSource.getMessage("hrms.common.deskera", null, RequestContextUtils.getLocale(request))+"] "+messageSource.getMessage("hrms.common.welcome.deskera.hrms", null, RequestContextUtils.getLocale(request)), htmlmsg, pmsg, "admin.hrms@mailinator.com");
                    } catch (MessagingException e) {
                    e.printStackTrace();
                    }*/
                    jobj.put("msg", messageSource.getMessage("hrms.common.Applicantcreatedsuccessfully", null,
                            RequestContextUtils.getLocale(request)));
                    jobj.put("type", messageSource.getMessage("hrms.common.success", null,
                            RequestContextUtils.getLocale(request)));
                    //@@ProfileHandler.insertAuditLog(session, AuditAction.CREATE_APPLICANT, "User  " + AuthHandler.getFullName(session, AuthHandler.getUserid(request)) + " has created new applicant " + jobapp.getFirstname() + " " + jobapp.getLastname(),request);
                    auditTrailDAOObj.insertAuditLog(AuditAction.CREATE_APPLICANT,
                            "User  " + profileHandlerDAOObj
                                    .getUserFullName(sessionHandlerImplObj.getUserid(request))
                                    + " has created new applicant " + fname + " " + lname,
                            request, "0");
                } else {
                    jobj.put("msg",
                            messageSource.getMessage("hrms.recruitment.error.occurred.creating.applicant", null,
                                    RequestContextUtils.getLocale(request)));
                    jobj.put("type", messageSource.getMessage("hrms.common.error", null,
                            RequestContextUtils.getLocale(request)));
                }
            } else {
                jobj.put("msg", messageSource.getMessage("hrms.common.email.already.exists", null,
                        RequestContextUtils.getLocale(request)));
                jobj.put("type", messageSource.getMessage("hrms.common.warning", null,
                        RequestContextUtils.getLocale(request)));
            }
        } else {
            requestParams.put("primary", true);
            requestParams.put("applicantid", request.getParameter("profileid"));

            result = hrmsRecJobDAOObj.getConfigJobApplicant(requestParams);
            list = result.getEntityList();
            if (!list.isEmpty()) {
                String jsondata1 = request.getParameter("jsondata1");
                String jsondata2 = request.getParameter("jsondata2");
                String jsondata3 = request.getParameter("jsondata3");
                String jsondata4 = request.getParameter("jsondata4");
                String jsondata5 = request.getParameter("jsondata5");

                requestParams.clear();

                requestParams.put("Applicantid", request.getParameter("profileid"));
                if (jsondata1.length() > 0) {
                    jobj = new JSONObject(jsondata1);
                    requestParams.put("Title", jobj.getString("title"));
                    requestParams.put("Firstname", jobj.getString("firstname"));
                    requestParams.put("Lastname", jobj.getString("lastname"));
                    requestParams.put("Email", jobj.getString("email"));
                    requestParams.put("Otheremail", jobj.getString("otheremail"));
                    requestParams.put("Birthdate", (Date) fmt.parse(jobj.getString("birthdate")));
                }
                if (jsondata2.length() > 0) {
                    jobj = new JSONObject(jsondata2);
                    requestParams.put("Contactno", jobj.getString("contactno"));
                    requestParams.put("Mobileno", jobj.getString("mobileno"));
                    requestParams.put("City", jobj.getString("city"));
                    requestParams.put("State", jobj.getString("state"));
                    requestParams.put("Countryid", jobj.getString("country"));
                    requestParams.put("Address1", jobj.getString("address1"));
                    requestParams.put("Address2", jobj.getString("address2"));

                }
                if (jsondata3.length() > 0) {
                    jobj = new JSONObject(jsondata3);
                    if (StringUtil.isNullOrEmpty(jobj.getString("graddegree")) == false) {
                        requestParams.put("Graddegree", jobj.getString("graddegree"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("gradspecilization")) == false) {
                        requestParams.put("Gradspecialization", jobj.getString("gradspecilization"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("gradcollege")) == false) {
                        requestParams.put("Gradcollege", jobj.getString("gradcollege"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("graduniversity")) == false) {
                        requestParams.put("Graduniversity", jobj.getString("graduniversity"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("gradepercent")) == false) {
                        requestParams.put("Gradpercent", jobj.getString("gradepercent"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("gradpassdate")) == false) {
                        requestParams.put("Gradpassdate", (Date) fmt.parse(jobj.getString("gradpassdate")));
                    }

                    if (StringUtil.isNullOrEmpty(jobj.getString("pgqualification")) == false) {
                        requestParams.put("Pgqualification", jobj.getString("pgqualification"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("pgspecialization")) == false) {
                        requestParams.put("Pgspecialization", jobj.getString("pgspecialization"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("pgcollege")) == false) {
                        requestParams.put("Pgcollege", jobj.getString("pgcollege"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("pguniversity")) == false) {
                        requestParams.put("Pguniversity", jobj.getString("pguniversity"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("pgpercent")) == false) {
                        requestParams.put("Pgpercent", jobj.getString("pgpercent"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("pgpassdate")) == false) {
                        requestParams.put("Pgpassdate", (Date) fmt.parse(jobj.getString("pgpassdate")));
                    }

                    if (StringUtil.isNullOrEmpty(jobj.getString("othername")) == false) {
                        requestParams.put("Othername", jobj.getString("othername"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("otherqualification")) == false) {
                        requestParams.put("Otherqualification", jobj.getString("otherqualification"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("otherpercent")) == false) {
                        requestParams.put("Otherpercent", jobj.getString("otherpercent"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("otherdetails")) == false) {
                        requestParams.put("Otherdetails", jobj.getString("otherdetails"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("otherpassdate")) == false) {
                        requestParams.put("Otherpassdate", (Date) fmt.parse(jobj.getString("otherpassdate")));
                    }
                }
                if (jsondata4.length() > 0) {
                    jobj = new JSONObject(jsondata4);
                    if (jobj.getString("experiencemonth").equals("")) {
                        requestParams.put("Experiencemonth", 0);
                    } else {
                        requestParams.put("Experiencemonth",
                                Integer.parseInt(jobj.getString("experiencemonth")));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("experienceyear")) == false) {
                        requestParams.put("Experienceyear", Integer.parseInt(jobj.getString("experienceyear")));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("functionalexpertise")) == false) {
                        requestParams.put("Functionalexpertise", jobj.getString("functionalexpertise"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("currentindustry")) == false) {
                        requestParams.put("Currentindustry", jobj.getString("currentindustry"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("currentorganization")) == false) {
                        requestParams.put("Currentorganization", jobj.getString("currentorganization"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("currentdesignation")) == false) {
                        requestParams.put("Currentdesignation", jobj.getString("currentdesignation"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("grosssalary")) == false) {
                        requestParams.put("Grosssalary", Integer.parseInt(jobj.getString("grosssalary")));
                    }
                    requestParams.put("Expectedsalary", Integer.parseInt(jobj.getString("expectedsalary")));
                }
                if (jsondata5.length() > 0) {
                    jobj = new JSONObject(jsondata5);
                    requestParams.put("Keyskills", jobj.getString("keyskills"));
                    if (StringUtil.isNullOrEmpty(jobj.getString("category")) == false) {
                        requestParams.put("Category", jobj.getString("category"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("filepath")) == false) {
                        requestParams.put("Filepath", jobj.getString("filepath"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("companyrelative")) == false) {
                        requestParams.put("Companyrelative", jobj.getString("companyrelative"));
                    }
                    if (StringUtil.isNullOrEmpty(jobj.getString("appearedbefore")) == false) {
                        requestParams.put("Appearedbefore", jobj.getString("appearedbefore"));
                        if (jobj.getString("appearedbefore").equalsIgnoreCase("yes")) {
                            if (StringUtil.isNullOrEmpty(jobj.getString("interviewplace")) == false) {
                                requestParams.put("Interviewplace", jobj.getString("interviewplace"));
                            }
                            if (StringUtil.isNullOrEmpty(jobj.getString("interviewdate")) == false) {
                                requestParams.put("Interviewdate",
                                        (Date) fmt.parse(jobj.getString("interviewdate")));
                            }
                            if (StringUtil.isNullOrEmpty(jobj.getString("interviewposition")) == false) {
                                requestParams.put("Interviewposition", jobj.getString("interviewposition"));
                            }
                        }
                    }
                    requestParams.put("Interviewlocation", jobj.getString("interviewlocation"));
                    result = hrmsRecJobDAOObj.setJobApplicant(requestParams);
                }
                // insertConfigData(request, "Recruitment", request.getParameter("profileid"),sessionHandlerImplObj.getCompanyid(request));
                hrmsCommonDAOObj.insertConfigData(request, "Recruitment", request.getParameter("profileid"),
                        sessionHandlerImplObj.getCompanyid(request));
            }
            if (result.isSuccessFlag()) {
                jobj.put("msg", messageSource.getMessage("hrms.recruitment.applicant.updated.successfully",
                        null, RequestContextUtils.getLocale(request)));
                jobj.put("type", messageSource.getMessage("hrms.common.success", null,
                        RequestContextUtils.getLocale(request)));
            } else {
                jobj.put("msg", messageSource.getMessage("hrms.recruitment.error.occurred.updating.applicant",
                        null, RequestContextUtils.getLocale(request)));
                jobj.put("type", messageSource.getMessage("hrms.common.error", null,
                        RequestContextUtils.getLocale(request)));
            }
        }
        jobj1.put("data", jobj.toString());
        jobj1.put("valid", true);
        txnManager.commit(status);
    } catch (Exception e) {
        e.printStackTrace();
        txnManager.rollback(status);
    } finally {
        return new ModelAndView("jsonView", "model", jobj1.toString());
    }
}

From source file:org.apache.ctakes.ytex.uima.mapper.DocumentMapperServiceImpl.java

public Integer saveDocument(final JCas jcas, final String analysisBatch, final boolean bStoreDocText,
        final boolean bStoreCAS, final boolean bInsertAnnotationContainmentLinks,
        final Set<String> setTypesToIgnore) {
    if (log.isTraceEnabled())
        log.trace("begin saveDocument");
    // communicate options to mappers using thread local variable
    final DefaultTransactionDefinition txDef = new DefaultTransactionDefinition(
            TransactionDefinition.PROPAGATION_REQUIRES_NEW);
    txDef.setIsolationLevel("orcl".equals(this.dbType) ? TransactionDefinition.ISOLATION_READ_COMMITTED
            : TransactionDefinition.ISOLATION_READ_UNCOMMITTED);
    final TransactionTemplate txTemplate = new TransactionTemplate(this.getTransactionManager(), txDef);
    final int documentId = txTemplate.execute(new TransactionCallback<Integer>() {

        @Override/*  w w w  .j  a v a  2 s  .  c  o  m*/
        public Integer doInTransaction(TransactionStatus arg0) {
            Document doc = createDocument(jcas, analysisBatch, bStoreDocText, bStoreCAS);
            sessionFactory.getCurrentSession().save(doc);
            // make sure the document has been saved
            getSessionFactory().getCurrentSession().flush();
            saveAnnotationsHib(jcas, bInsertAnnotationContainmentLinks, setTypesToIgnore, doc);
            extractAndSaveDocKey(jcas, doc);
            return doc.getDocumentID();
        }
    });
    if (log.isTraceEnabled())
        log.trace("end saveDocument");
    return documentId;
}

From source file:org.broadleafcommerce.common.util.TransactionUtils.java

public static TransactionStatus createTransaction(String name, int propagationBehavior, int isolationLevel,
        PlatformTransactionManager transactionManager, boolean isReadOnly) {
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setName(name);//from   w  ww .j  a  va  2  s .c  o  m
    def.setReadOnly(isReadOnly);
    def.setPropagationBehavior(propagationBehavior);
    def.setIsolationLevel(isolationLevel);
    return transactionManager.getTransaction(def);
}

From source file:org.broadleafcommerce.common.util.TransactionUtils.java

public static TransactionStatus createTransaction(int propagationBehavior, int isolationLevel,
        PlatformTransactionManager transactionManager, boolean isReadOnly) {
    DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    def.setReadOnly(isReadOnly);/* ww w.  j a v  a2 s  . c o  m*/
    def.setPropagationBehavior(propagationBehavior);
    def.setIsolationLevel(isolationLevel);
    return transactionManager.getTransaction(def);
}

From source file:org.opendatakit.common.persistence.engine.pgres.DatastoreImpl.java

/**
 * Relation manipulation APIs/* w w  w  . j  a v a 2s  .  c om*/
 */
@Override
public void assertRelation(CommonFieldsBase relation, User user) throws ODKDatastoreException {
    JdbcTemplate jc = getJdbcConnection();
    TransactionStatus status = null;
    try {
        DefaultTransactionDefinition paramTransactionDefinition = new DefaultTransactionDefinition();

        // do serializable read on the information schema...
        paramTransactionDefinition.setIsolationLevel(DefaultTransactionDefinition.ISOLATION_SERIALIZABLE);
        paramTransactionDefinition.setReadOnly(true);
        status = tm.getTransaction(paramTransactionDefinition);

        // see if relation already is defined and update it with dimensions...
        if (updateRelation(jc, relation, null)) {
            // it exists -- we're done!
            tm.commit(status);
            status = null;
            return;
        } else {
            tm.commit(status);
            // Try a new transaction to create the table
            paramTransactionDefinition.setIsolationLevel(DefaultTransactionDefinition.ISOLATION_SERIALIZABLE);
            paramTransactionDefinition.setReadOnly(false);
            status = tm.getTransaction(paramTransactionDefinition);

            // need to create the table...
            StringBuilder b = new StringBuilder();
            b.append(K_CREATE_TABLE);
            b.append(K_BQ);
            b.append(relation.getSchemaName());
            b.append(K_BQ);
            b.append(".");
            b.append(K_BQ);
            b.append(relation.getTableName());
            b.append(K_BQ);
            b.append(K_OPEN_PAREN);
            boolean firstTime = true;
            for (DataField f : relation.getFieldList()) {
                if (!firstTime) {
                    b.append(K_CS);
                }
                firstTime = false;
                b.append(K_BQ);
                b.append(f.getName());
                b.append(K_BQ);
                DataField.DataType type = f.getDataType();
                switch (type) {
                case BINARY:
                    b.append(" BYTEA");
                    break;
                case LONG_STRING:
                    b.append(" TEXT");// b.append(" CHARACTER SET utf8");
                    break;
                case STRING:
                    b.append(" VARCHAR(");
                    Long len = f.getMaxCharLen();
                    if (len == null) {
                        len = PersistConsts.DEFAULT_MAX_STRING_LENGTH;
                    }
                    b.append(len.toString());
                    b.append(K_CLOSE_PAREN);
                    // b.append(" CHARACTER SET utf8");
                    break;
                case BOOLEAN:
                    b.append(" BOOLEAN");
                    break;
                case INTEGER:
                    Integer int_digits = f.getNumericPrecision();
                    if (int_digits == null) {
                        int_digits = DEFAULT_INT_NUMERIC_PRECISION;
                    }
                    Integer isSerial = f.getNumericScale();
                    // logger.warn("********************");
                    // logger.warn(int_digits + " ---" + isSerial);
                    if (int_digits.compareTo(9) > 0) {
                        if (isSerial != null && isSerial == 1) {
                            b.append(" SERIAL");
                            continue;
                            //    logger.warn("^^^^^^^^^^^^^^^^");
                        } else {
                            b.append(" BIGINT");
                        }
                    } else {
                        b.append(" INTEGER");
                    }
                    break;
                case DECIMAL:
                    Integer dbl_digits = f.getNumericPrecision();
                    Integer dbl_fract = f.getNumericScale();
                    if (dbl_digits == null) {
                        dbl_digits = DEFAULT_DBL_NUMERIC_PRECISION;
                    }
                    if (dbl_fract == null) {
                        dbl_fract = DEFAULT_DBL_NUMERIC_SCALE;
                    }
                    b.append(" DECIMAL(");
                    b.append(dbl_digits.toString());
                    b.append(K_CS);
                    b.append(dbl_fract.toString());
                    b.append(K_CLOSE_PAREN);
                    break;
                case DATETIME:
                    b.append(" TIMESTAMP WITHOUT TIME ZONE");
                    break;
                case URI:
                    b.append(" VARCHAR(");
                    len = f.getMaxCharLen();
                    if (len == null) {
                        len = PersistConsts.URI_STRING_LEN;
                    }
                    b.append(len.toString());
                    b.append(")");// b.append(" CHARACTER SET utf8");
                    break;
                }

                if (f == relation.primaryKey) {
                    b.append(" UNIQUE ");
                }
                if (f.getNullable()) {
                    b.append(" NULL ");
                } else {
                    b.append(" NOT NULL ");
                }
            }
            b.append(K_CLOSE_PAREN);

            String createTableStmt = b.toString();
            LogFactory.getLog(DatastoreImpl.class).info("Attempting: " + createTableStmt);

            jc.execute(createTableStmt);
            LogFactory.getLog(DatastoreImpl.class)
                    .info("create table success (before updateRelation): " + relation.getTableName());

            String idx;
            // create other indicies
            for (DataField f : relation.getFieldList()) {
                if ((f.getIndexable() != IndexType.NONE) && (f != relation.primaryKey)) {
                    idx = relation.getTableName() + "_" + shortPrefix(f.getName());
                    createIndex(jc, relation, idx, f);
                }
            }

            // and update the relation with actual dimensions...
            updateRelation(jc, relation, createTableStmt);
            tm.commit(status);
        }
    } catch (Exception e) {
        if (status != null) {
            tm.rollback(status);
        }
        throw new ODKDatastoreException(e);
    }
}

From source file:org.opendatakit.common.persistence.engine.sqlserver.DatastoreImpl.java

/**
 * Relation manipulation APIs/*  w  w w .j av  a2  s.c o m*/
 */
@Override
public void assertRelation(CommonFieldsBase relation, User user) throws ODKDatastoreException {
    JdbcTemplate jc = getJdbcConnection();
    TransactionStatus status = null;
    try {
        DefaultTransactionDefinition paramTransactionDefinition = new DefaultTransactionDefinition();

        // do serializable read on the information schema...
        paramTransactionDefinition.setIsolationLevel(DefaultTransactionDefinition.ISOLATION_SERIALIZABLE);
        paramTransactionDefinition.setReadOnly(true);
        status = tm.getTransaction(paramTransactionDefinition);

        // see if relation already is defined and update it with dimensions...
        if (updateRelation(jc, relation, null)) {
            // it exists -- we're done!
            tm.commit(status);
            status = null;
            return;
        } else {
            tm.commit(status);
            // Try a new transaction to create the table
            paramTransactionDefinition.setIsolationLevel(DefaultTransactionDefinition.ISOLATION_SERIALIZABLE);
            paramTransactionDefinition.setReadOnly(false);
            status = tm.getTransaction(paramTransactionDefinition);

            // total number of columns must be less than MAX_BIND_PARAMS
            int countColumns = 0;
            // need to create the table...
            StringBuilder b = new StringBuilder();
            b.append(K_CREATE_TABLE);
            b.append(K_BQ);
            b.append(relation.getSchemaName());
            b.append(K_BQ);
            b.append(".");
            b.append(K_BQ);
            b.append(relation.getTableName());
            b.append(K_BQ);
            b.append(K_OPEN_PAREN);
            boolean firstTime = true;
            for (DataField f : relation.getFieldList()) {
                if (!firstTime) {
                    b.append(K_CS);
                }
                ++countColumns;
                firstTime = false;
                String nullClause;
                if (f.getNullable()) {
                    nullClause = K_NULL;
                } else {
                    nullClause = K_NOT_NULL;
                }

                b.append(K_BQ);
                b.append(f.getName());
                b.append(K_BQ);
                DataField.DataType type = f.getDataType();
                switch (type) {
                case BINARY:
                    b.append(" varbinary(max)").append(nullClause);
                    break;
                case LONG_STRING:
                    b.append(" nvarchar(max)").append(nullClause);
                    break;
                case STRING:
                    b.append(" nvarchar(");
                    Long len = f.getMaxCharLen();
                    if (len == null) {
                        len = PersistConsts.DEFAULT_MAX_STRING_LENGTH;
                    }
                    if (len > MAX_IN_ROW_NVARCHAR) {
                        // store value out-of-row
                        b.append("max");
                    } else {
                        b.append(len.toString());
                    }
                    b.append(K_CLOSE_PAREN).append(nullClause);
                    break;
                case BOOLEAN:
                    b.append(" bit").append(nullClause);
                    break;
                case INTEGER:
                    Integer int_digits = f.getNumericPrecision();
                    if (int_digits == null) {
                        int_digits = DEFAULT_INT_NUMERIC_PRECISION;
                    }

                    if (int_digits.compareTo(9) > 0) {
                        b.append(" bigint").append(nullClause);
                    } else {
                        b.append(" integer").append(nullClause);
                    }
                    break;
                case DECIMAL:
                    if (f == relation.primaryKey) {
                        throw new IllegalStateException("cannot use decimal columns as primary keys");
                    }

                    if (f.isDoublePrecision()) {
                        b.append(" float(53) ").append(nullClause);
                    } else {
                        Integer dbl_digits = f.getNumericPrecision();
                        Integer dbl_fract = f.getNumericScale();
                        if (dbl_digits == null) {
                            dbl_digits = DEFAULT_DBL_NUMERIC_PRECISION;
                        }
                        if (dbl_fract == null) {
                            dbl_fract = DEFAULT_DBL_NUMERIC_SCALE;
                        }
                        b.append(" decimal(");
                        b.append(dbl_digits.toString());
                        b.append(K_CS);
                        b.append(dbl_fract.toString());
                        b.append(K_CLOSE_PAREN).append(nullClause);
                    }
                    break;
                case DATETIME:
                    b.append(" datetime2(7)").append(nullClause);
                    break;
                case URI:
                    b.append(" nvarchar(");
                    len = f.getMaxCharLen();
                    if (len == null) {
                        len = PersistConsts.URI_STRING_LEN;
                    }
                    b.append(len.toString());
                    b.append(")").append(nullClause);
                    break;
                }

                if (f == relation.primaryKey) {
                    b.append(" PRIMARY KEY NONCLUSTERED ");
                }
            }
            b.append(K_CLOSE_PAREN);

            if (countColumns > MAX_BIND_PARAMS) {
                throw new IllegalArgumentException("Table size exceeds bind parameter limit");
            }

            String createTableStmt = b.toString();
            LogFactory.getLog(DatastoreImpl.class).info("Attempting: " + createTableStmt);

            jc.execute(createTableStmt);
            LogFactory.getLog(DatastoreImpl.class)
                    .info("create table success (before updateRelation): " + relation.getTableName());

            boolean alreadyClustered = false;
            String idx;
            // create other indicies
            for (DataField f : relation.getFieldList()) {
                if ((f.getIndexable() != IndexType.NONE) && (f != relation.primaryKey)) {
                    idx = relation.getTableName() + "_" + shortPrefix(f.getName());
                    alreadyClustered = createIndex(jc, relation, idx, f, alreadyClustered);
                }
            }

            // and update the relation with actual dimensions...
            updateRelation(jc, relation, createTableStmt);
            tm.commit(status);
        }
    } catch (Exception e) {
        if (status != null) {
            tm.rollback(status);
        }
        throw new ODKDatastoreException(e);
    }
}