content: package com.taobao.taokeeper.monitor.web;
  import static common.toolkit.java.constant.EmptyObjectConstant.EMPTY_STRING;
  
  import java.util.HashMap;
  import java.util.Map;
  
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.servlet.ModelAndView;
  
  import com.taobao.taokeeper.common.GlobalInstance;
  import com.taobao.taokeeper.model.TaoKeeperSettings;
  import common.toolkit.java.util.StringUtil;
  import common.toolkit.java.util.io.ServletUtil;
  
  /**
   * Admin
   * 
   * @author yinshi.nc@taobao.com
   * @since 2011-08-10
   */
  @Controller
  @RequestMapping("/admin.do")
  public class AdminController extends BaseController {
  
  	
  	private static final Logger LOG = LoggerFactory.getLogger( AdminController.class );
  	
  	/** PAGE 是否开启报警开关 */
  	@RequestMapping(params = "method=switchOfNeedAlarmPAGE")
  	public ModelAndView switchOfNeedAlarmPAGE( HttpServletRequest request, HttpServletResponse response, String handleMessage ) {
  
  		Map< String, Object > model = new HashMap< String, Object >();
  		model.put( "needAlarm", GlobalInstance.needAlarm.get() );
  		model.put( "handleMessage", handleMessage );
  		return new ModelAndView( "admin/switchOfNeedAlarmPAGE", model );
  	}
  
  	/** HANDLE 是否开启报警开关 */
  	@RequestMapping(params = "method=updateSwitchOfNeedAlarmHandle")
  	public String updateSwitchOfNeedAlarmHandle( HttpServletRequest request, HttpServletResponse response, String needAlarm ) {
  
  		String handleMessage = EMPTY_STRING;
  		if ( "true".equalsIgnoreCase( needAlarm ) ) {
  			GlobalInstance.needAlarm.set( true );
  			handleMessage = "Success, now open alarm!";
  		} else {
  			GlobalInstance.needAlarm.set( false );
  			handleMessage = "Success, now close alarm!";
  		}
  		return "redirect:admin.do?method=switchOfNeedAlarmPAGE&handleMessage=" + handleMessage;
  	}
  
  	/** PAGE 系统设置 */
  	@RequestMapping(params = "method=setSystemConfigPAGE")
  	public ModelAndView setSystemConfigPAGE( HttpServletRequest request, HttpServletResponse response, String handleMessage ) {
  		
  		try {
  			TaoKeeperSettings taoKeeperSettings = GlobalInstance.taoKeeperSettings;
  			if( null == taoKeeperSettings ){
  				taoKeeperSettings = taoKeeperSettingsDAO.getTaoKeeperSettingsBySettingsId( 1 );
  				if( null == taoKeeperSettings ){
  					ServletUtil.writeToResponse( response, "目前还没有TaoKeeper配置" );
  					return null;
  				}
  			}
  			Map< String, Object > model = new HashMap< String, Object >();
  			model.put( "settingsId", taoKeeperSettings.getSettingsId() );
  			model.put( "envName", taoKeeperSettings.getEnvName() );
  			model.put( "maxThreadsOfZooKeeperCheck", taoKeeperSettings.getMaxThreadsOfZooKeeperCheck() );
  			model.put( "description", taoKeeperSettings.getDescription() );
  			model.put( "handleMessage", handleMessage );
  			return new ModelAndView( "admin/setSystemConfigPAGE", model );
  		} catch ( Exception e ) {
  			ServletUtil.showSystemErrorToResponse( response, e );
  			e.printStackTrace();
  			return null;
  		}
  	}
  
  	
  	/** Handle 系统配置 */
  	@RequestMapping(params = "method=setSystemConfigHANDLE")
  	public String setSystemConfigHandle( HttpServletRequest request, HttpServletResponse response, 
  			String handleMessage,
  			String settingsId,
  			String envName,
  			String description,
  			String maxThreadsOfZooKeeperCheck ) {
  		maxThreadsOfZooKeeperCheck = StringUtil.defaultIfBlank( maxThreadsOfZooKeeperCheck, GlobalInstance.taoKeeperSettings.getMaxThreadsOfZooKeeperCheck() + EMPTY_STRING );
  		try {
  			
  			TaoKeeperSettings taoKeeperSettings = new TaoKeeperSettings();
  			int settingsIdInt = Integer.parseInt( settingsId ) != 0 ? Integer.parseInt( settingsId ) : 1;
  			taoKeeperSettings.setSettingsId( settingsIdInt );
  			taoKeeperSettings.setEnvName( envName );
  			taoKeeperSettings.setDescription( description );
  			taoKeeperSettings.setMaxThreadsOfZooKeeperCheck( Integer.parseInt( maxThreadsOfZooKeeperCheck ) );
  			
  			//先查询下是否存在这样的记录，如果不存在，先进行添加
  			TaoKeeperSettings taoKeeperSettings_Old =  taoKeeperSettingsDAO.getTaoKeeperSettingsBySettingsId( taoKeeperSettings.getSettingsId() );
  			if( null == taoKeeperSettings_Old ){
  				//进行添加
  				taoKeeperSettingsDAO.addTaoKeeperSettings( taoKeeperSettings );
  			}else{
  				//更新数据库
  				taoKeeperSettingsDAO.updateTaoKeeperSettingsBySettingsId( taoKeeperSettings );
  			}
  			//更新缓存
  			GlobalInstance.taoKeeperSettings = taoKeeperSettings;
  			handleMessage = "Success to update system config.";
  			LOG.info( "Success to update system config." );
  		} catch ( Exception e ) {
  			handleMessage = "Fail to update system config, error: " + e.getMessage();
  			LOG.error( "Fail to update system config, error: " + e.getMessage() );
  		}
  		return "redirect:admin.do?method=setSystemConfigPAGE&handleMessage=" + handleMessage;
  	}
  
  }
  