@Override
  public StatusBean delete(String projectID) {
    StatusBean statusBean = new StatusBean();
    try {
      projectDao
          .updateBuilder()
          .updateColumnValue("isDisabled", true)
          .where()
          .idEq(Integer.parseInt(projectID));
      List<MachineConfigurationBean> machineConfigList =
          MachineConfigDAOManager.getInstance().retireveBoxesForProject(projectID);

      for (MachineConfigurationBean machineConfig : machineConfigList) {
        MachineConfigDAOManager.getInstance().delete(machineConfig.getMachineID().toString());
      }

    } catch (SQLException e) {
      logger.error("Error deleting a project : " + e.getMessage());
      statusBean.setStatusCode(1);
      statusBean.setStatusMessage("Error deleting  a project : " + e.getMessage());
      e.printStackTrace();
    }
    statusBean.setStatusCode(0);
    statusBean.setStatusMessage("Project deleted successfully");
    return statusBean;
  }
 public <E> List<E> retireveModulesMapping(String projectID) {
   List<PuppetModuleMapping> moduleMappingList = new ArrayList<PuppetModuleMapping>();
   try {
     ProjectBean project = projectDao.queryForId(Integer.parseInt(projectID));
     List<PuppetModuleBean> puppetModules =
         PuppetModuleDAOManager.getInstance().puppetModuleDao.queryForEq("isDisabled", false);
     List<MachineConfigurationBean> machineConfigs =
         MachineConfigDAOManager.getInstance().machineConfigDao.queryForEq("isDisabled", false);
     if (!(puppetModules.isEmpty())) {
       moduleMappingList =
           PuppetModuleDAOManager.getInstance()
               .puppetModuleMappingDao
               .queryBuilder()
               .where()
               .in(PuppetModuleMapping.MODULE_ID_FIELD_NAME, puppetModules)
               .and()
               .in(PuppetModuleMapping.MACHINE_ID_FIELD_NAME, machineConfigs)
               .and()
               .eq(ShellScriptMapping.PROJECT_ID_FIELD_NAME, project)
               .query();
     }
   } catch (SQLException e) {
     logger.error("Error in retireving module mapping: " + e.getMessage());
   }
   return (List<E>) moduleMappingList;
 }
 public <E> List<E> retireveScriptsMapping(String projectID) {
   List<ShellScriptMapping> scriptMappingList = new ArrayList<ShellScriptMapping>();
   try {
     ProjectBean project = projectDao.queryForId(Integer.parseInt(projectID));
     List<ShellScriptBean> shellScripts =
         ShellScriptDAOManager.getInstance().shellScriptDao.queryForEq("isDisabled", false);
     List<MachineConfigurationBean> machineConfigs =
         MachineConfigDAOManager.getInstance().machineConfigDao.queryForEq("isDisabled", false);
     if (!(shellScripts.isEmpty())) {
       scriptMappingList =
           ShellScriptDAOManager.getInstance()
               .shellScriptMappingDao
               .queryBuilder()
               .where()
               .in(ShellScriptMapping.SCRIPT_ID_FIELD_NAME, shellScripts)
               .and()
               .in(ShellScriptMapping.MACHINE_ID_FIELD_NAME, machineConfigs)
               .and()
               .eq(ShellScriptMapping.PROJECT_ID_FIELD_NAME, project)
               .query();
     }
     // scriptMappingList =
     // ShellScriptDAOManager.getInstance().shellScriptMappingDao.queryForAll();
   } catch (SQLException e) {
     logger.error("Error in retireving scripts mapping: " + e.getMessage());
   }
   return (List<E>) scriptMappingList;
 }
  public StatusBean delete(JsonNode projectData) {
    StatusBean statusBean = new StatusBean();
    Integer userID = Integer.parseInt(projectData.get("userID").getTextValue());
    Integer projectID = Integer.parseInt(projectData.get("projectID").getTextValue());
    String location = Utilities.getInstance().fetchActiveProjectDirectory(userID);

    try {
      ProjectBean project = projectDao.queryForId(projectID);
      project.setIsDisabled(true);
      projectDao.update(project);
      List<MachineConfigurationBean> machineConfigList =
          MachineConfigDAOManager.getInstance().retireveBoxesForProject(projectID.toString());

      for (MachineConfigurationBean machineConfig : machineConfigList) {
        MachineConfigDAOManager.getInstance().delete(machineConfig.getMachineID().toString());
        String vagrantCommand = "vagrant destroy " + machineConfig.getVagrantID();
        VagrantCommandProcessor shellProcessor = new VagrantCommandProcessor();
        try {
          shellProcessor.executeVagrantFile(
              location, vagrantCommand, userID, new VagrantOutputStream());
        } catch (IOException e) {
          statusBean.setStatusCode(1);
          statusBean.setStatusMessage("error in destroting box" + e.getMessage());
        } catch (InterruptedException e) {
          statusBean.setStatusCode(1);
          statusBean.setStatusMessage("error in destroting box" + e.getMessage());
        }
      }

    } catch (SQLException e) {
      logger.error("Error deleting a project : " + e.getMessage());
      statusBean.setStatusCode(1);
      statusBean.setStatusMessage("Error deleting  a project : " + e.getMessage());
      e.printStackTrace();
    }
    statusBean.setStatusCode(0);
    statusBean.setStatusMessage("Project deleted successfully");
    return statusBean;
  }