com.infotree.qliktest.admin.web.controller.ModuleProjectController.java Source code

Java tutorial

Introduction

Here is the source code for com.infotree.qliktest.admin.web.controller.ModuleProjectController.java

Source

/**
 * @author koteswara.g
 */
package com.infotree.qliktest.admin.web.controller;

import java.io.PrintWriter;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.Validator;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import com.infotree.qliktest.admin.entity.referencedata.AuditLogRecord;
import com.infotree.qliktest.admin.entity.referencedata.Module;
import com.infotree.qliktest.admin.entity.referencedata.Project;
import com.infotree.qliktest.admin.entity.referencedata.ProjectModule;
import com.infotree.qliktest.admin.entity.referencedata.ProjectModuleComp;
import com.infotree.qliktest.admin.entity.system.AuditType;
import com.infotree.qliktest.admin.helperpojo.ProjectModulePojo;
import com.infotree.qliktest.admin.service.QTAdminService;
import com.infotree.qliktest.admin.service.referencedata.AuditLogRecordService;
import com.infotree.qliktest.admin.service.referencedata.ModuleService;
import com.infotree.qliktest.admin.service.referencedata.ProjectModuleService;
import com.infotree.qliktest.admin.service.referencedata.ProjectService;
import com.infotree.qliktest.admin.web.validator.DoNothingValidator;

@Controller
@RequestMapping("/projectmodule")
public class ModuleProjectController extends AbstractQTAdminController<ProjectModule> {
    private static final Logger LOG = LoggerFactory.getLogger(LoginController.class);
    @Autowired
    private DoNothingValidator validator;

    @Autowired
    private ModuleService moduleService;

    @Autowired
    private ProjectModuleService projectModuleService;

    @Autowired
    private AuditLogRecordService auditLogService;

    @Autowired
    private ProjectService projectService;

    /**
     * This method returns the UI to assign the modules to the project
     */
    @RequestMapping(value = "/assignmodulestoproject", method = RequestMethod.GET)
    public String assignModulesToProject(Model model) {
        try {
            model.addAttribute("crudObj", new ProjectModulePojo());
            model.addAttribute("assignmodulestoproject", "assignmodulestoproject");
            model.addAttribute("module_list", moduleService.list());
            model.addAttribute("project_list", projectService.getActiveProjects());
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }

        return "home";
    }

    /**
     * This method is to save the modules list to the project
     */
    @RequestMapping(value = "/saveassignmodulelist", method = RequestMethod.POST)
    public String saveAssignedModules(@Valid ProjectModulePojo entity, BindingResult bindingResult, Model model,
            HttpServletRequest request) {

        try {
            //Deleting the existing records
            projectModuleService.deleteByProjectId(entity.getProjectId());
            List<Integer> moduleId = entity.getModuleId();
            Iterator<Integer> iterator = moduleId.iterator();
            while (iterator.hasNext()) {
                ProjectModule md = new ProjectModule();
                ProjectModuleComp modperComp = new ProjectModuleComp();
                modperComp.setProjectId(entity.getProjectId());
                modperComp.setModuleId(iterator.next());
                md.setProjectModuleComp(modperComp);
                md.setCreatedBy(entity.getCreatedBy());
                DateTime dt = new DateTime();
                DateTimeZone dtZone = DateTimeZone.forID("Asia/Kolkata");
                DateTime dtus = dt.withZone(dtZone);
                Date dateInIndia = dtus.toLocalDateTime().toDate();

                md.setCreatedDate(dateInIndia);
                md.setModifiedBy(entity.getModifiedBy());
                md.setModifiedDate(dateInIndia);
                projectModuleService.save(md);
            }

            AuditLogRecord record = new AuditLogRecord();
            record.setActionDate(new java.util.Date());
            record.setActionType(AuditType.ASSIGN);

            Project p = projectService.getById(entity.getProjectId());

            record.setActionData("Module and project name is" + p.getName());
            record.setIpOrigin(request.getSession().getAttribute("ipAddress").toString());
            /*try {
               InetAddress inetAddress = InetAddress.getLocalHost();
               record.setIpOrigin(inetAddress.getHostAddress());
            } catch (UnknownHostException e) {
               e.printStackTrace();
            }*/
            record.setUserId((Integer) request.getSession().getAttribute("userid"));
            record.setUserName(request.getSession().getAttribute("username").toString());
            auditLogService.saveRecord(record);

            model.addAttribute("assignmodulestoproject", "assignmodulestoproject");
            model.addAttribute("modulesassigned", "Modules Assigned For Project");
            model.addAttribute("module_list", moduleService.list());
            model.addAttribute("crudObj", new ProjectModulePojo());
            model.addAttribute("project_list", projectService.getActiveProjects());
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
        return "home";
    }

    /**
     * This is ajax method to get the projects based on the moduleid
     */
    @RequestMapping(value = "/getprojectbylicense", method = RequestMethod.GET)
    public void getAssignedPermissions(Model model, @RequestParam("projectId") String projectId,
            HttpServletRequest request, HttpServletResponse response) {
        try {
            Integer projectid = Integer.parseInt(projectId);
            String trPerm = "";
            List<Module> moduleList = moduleService.getByModuleId(projectid);
            for (Module list : moduleList) {
                trPerm += "<option label='" + list.getName() + "' value='" + list.getId() + "'>" + list.getName()
                        + "</option>";
            }

            try {
                PrintWriter out = response.getWriter();
                out.println(trPerm);
                out.flush();
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (NumberFormatException e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
    }

    /**
     * This method returns the list of moduels which were not assigned to project by taking the projectid as the parameter
     */
    @RequestMapping(value = "/getaprojectbylicense", method = RequestMethod.GET)
    public void getAssignedPermissionsByLicense(Model model, @RequestParam("projectId") String projectId,
            HttpServletRequest request, HttpServletResponse response) {
        Integer projectid = Integer.parseInt(projectId);
        String traPermissions = "";
        List<Module> moduleList = moduleService.getByNotInModuleId(projectid);

        for (Module list : moduleList) {
            traPermissions += "<option label='" + list.getName() + "' value='" + list.getId() + "'>"
                    + list.getName() + "</option>";
        }
        try {
            PrintWriter out = response.getWriter();
            out.println(traPermissions);
            out.flush();
        } catch (Exception e) {
            LOG.error(e.toString());
            e.printStackTrace();
        }
    }

    @Override
    public QTAdminService<ProjectModule> getTService() {
        return projectModuleService;
    }

    @Override
    protected Validator getValidator() {
        return validator;
    }

}