Package com.dianping.cat.system.page.config.process

Source Code of com.dianping.cat.system.page.config.process.AppConfigProcessor

package com.dianping.cat.system.page.config.process;

import java.util.List;

import org.codehaus.plexus.util.StringUtils;
import org.unidal.lookup.annotation.Inject;

import com.dianping.cat.config.app.AppComparisonConfigManager;
import com.dianping.cat.config.app.AppConfigManager;
import com.dianping.cat.configuration.app.entity.Command;
import com.dianping.cat.system.config.AppRuleConfigManager;
import com.dianping.cat.system.page.config.Action;
import com.dianping.cat.system.page.config.Model;
import com.dianping.cat.system.page.config.Payload;

public class AppConfigProcessor extends BaseProcesser {

  @Inject
  private AppRuleConfigManager m_appRuleConfigManager;

  @Inject
  private AppConfigManager m_appConfigManager;

  @Inject
  private AppComparisonConfigManager m_appComparisonConfigManager;

  private void buildAppConfigInfo(AppConfigManager appConfigManager, Model model) {
    model.setConnectionTypes(appConfigManager.queryConfigItem(AppConfigManager.CONNECT_TYPE));
    model.setCities(appConfigManager.queryConfigItem(AppConfigManager.CITY));
    model.setNetworks(appConfigManager.queryConfigItem(AppConfigManager.NETWORK));
    model.setOperators(appConfigManager.queryConfigItem(AppConfigManager.OPERATOR));
    model.setPlatforms(appConfigManager.queryConfigItem(AppConfigManager.PLATFORM));
    model.setVersions(appConfigManager.queryConfigItem(AppConfigManager.VERSION));
    model.setCommands(appConfigManager.queryCommands());
  }

  public void process(Action action, Payload payload, Model model) {
    int id;

    switch (action) {
    case APP_LIST:
      generateCommandsForModel(model);
      break;
    case APP_UPDATE:
      id = payload.getId();
      Command command = m_appConfigManager.getConfig().findCommand(id);

      if (command == null) {
        command = new Command();
      }
      model.setUpdateCommand(command);
      break;
    case APP_SUBMIT:
      id = payload.getId();
      String domain = payload.getDomain();
      String name = payload.getName();
      String title = payload.getTitle();

      if (m_appConfigManager.containCommand(id)) {
        if (m_appConfigManager.updateCommand(id, domain, name, title)) {
          model.setOpState(true);
        } else {
          model.setOpState(false);
        }
      } else {
        try {
          if (m_appConfigManager.addCommand(domain, title, name).getKey()) {
            model.setOpState(true);
          } else {
            model.setOpState(false);
          }
        } catch (Exception e) {
          model.setOpState(false);
        }
      }
      generateCommandsForModel(model);
      break;
    case APP_PAGE_DELETE:
      id = payload.getId();

      if (m_appConfigManager.deleteCommand(id)) {
        model.setOpState(true);
      } else {
        model.setOpState(false);
      }
      generateCommandsForModel(model);
      break;
    case APP_CONFIG_UPDATE:
      String appConfig = payload.getContent();
      if (!StringUtils.isEmpty(appConfig)) {
        model.setOpState(m_appConfigManager.insert(appConfig));
      }
      model.setContent(m_appConfigManager.getConfig().toString());
      break;
    case APP_RULE:
      buildAppConfigInfo(m_appConfigManager, model);
      model.setRules(m_appRuleConfigManager.getMonitorRules().getRules().values());
      break;
    case APP_RULE_ADD_OR_UPDATE:
      buildAppConfigInfo(m_appConfigManager, model);
      generateRuleConfigContent(payload.getRuleId(), m_appRuleConfigManager, model);
      break;
    case APP_RULE_ADD_OR_UPDATE_SUBMIT:
      buildAppConfigInfo(m_appConfigManager, model);
      model.setOpState(addSubmitRule(m_appRuleConfigManager, payload.getRuleId(), "", payload.getConfigs()));
      model.setRules(m_appRuleConfigManager.getMonitorRules().getRules().values());
      break;
    case APP_RULE_DELETE:
      buildAppConfigInfo(m_appConfigManager, model);
      model.setOpState(deleteRule(m_appRuleConfigManager, payload.getRuleId()));
      model.setRules(m_appRuleConfigManager.getMonitorRules().getRules().values());
      break;
    case APP_COMPARISON_CONFIG_UPDATE:
      String appComparisonConfig = payload.getContent();
      if (!StringUtils.isEmpty(appComparisonConfig)) {
        model.setOpState(m_appComparisonConfigManager.insert(appComparisonConfig));
      }
      model.setContent(m_appComparisonConfigManager.getConfig().toString());
      break;
    default:
      throw new RuntimeException("Error action name " + action.getName());
    }
  }

  private void generateCommandsForModel(Model model) {
    List<Command> commands = m_appConfigManager.queryCommands();
    model.setCommands(commands);
  }

}
TOP

Related Classes of com.dianping.cat.system.page.config.process.AppConfigProcessor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.