Package org.impalaframework.interactive.command

Source Code of org.impalaframework.interactive.command.ReloadCommand

/*
* Copyright 2007-2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/

package org.impalaframework.interactive.command;

import org.impalaframework.command.framework.CommandDefinition;
import org.impalaframework.command.framework.CommandPropertyValue;
import org.impalaframework.command.framework.CommandState;
import org.impalaframework.command.framework.GlobalCommandState;
import org.impalaframework.command.framework.TextParsingCommand;
import org.impalaframework.facade.Impala;
import org.springframework.util.StopWatch;

public class ReloadCommand implements TextParsingCommand {
 
  static final String MODULE_NAME = ReloadCommand.class.getSimpleName() + ".moduleName";

  static final String ACTUAL_MODULE_RELOADED = ReloadCommand.class.getSimpleName() + ".actualModuleReloaded";
 
  public boolean execute(CommandState commandState) {
    if (GlobalCommandState.getInstance().getValue(CommandStateConstants.MODULE_DEFINITION_SOURCE) == null) {
      System.out.println("Cannot reload, as no module definition has been loaded.");
      return false;
    }
    return reload(commandState);
  }

  private boolean reload(CommandState commandState) {
   
    CommandPropertyValue commandPropertyValue = commandState.getProperties().get(MODULE_NAME);

    if (commandPropertyValue != null) {
      String moduleName = commandPropertyValue.getValue();
      reloadModule(moduleName, commandState);
      return true;
    } else {
      reloadRootModule();
      return true;
    }
  }

  void reloadRootModule() {
    StopWatch watch = new StopWatch();
    watch.start();
    Impala.reloadRootModule();
    watch.stop();
    String rootName = Impala.getRootModuleDefinition().getName();
    InteractiveCommandUtils.printReloadInfo(rootName, rootName, watch);
  }
 
  void reloadModule(String moduleToReload, CommandState commandState) {
    StopWatch watch = new StopWatch();
    watch.start();
    String actualModule = null;

    if (!Impala.reload(moduleToReload)) {
      actualModule = Impala.reloadLike(moduleToReload);
    } else {
      actualModule = moduleToReload;
    }
    watch.stop();

    if (moduleToReload != null)
      commandState.addProperty(ACTUAL_MODULE_RELOADED, new CommandPropertyValue(moduleToReload));
    InteractiveCommandUtils.printReloadInfo(moduleToReload, actualModule, watch);
  }

  public CommandDefinition getCommandDefinition() {
    return new CommandDefinition("Reloads root module and all child modules");
  }

  public void extractText(String[] text, CommandState commandState) {
    String name = text[0];
    if (name != null) {
      commandState.addProperty(MODULE_NAME,
          new CommandPropertyValue(name.trim(), "Module name"));
    }
  }

}
TOP

Related Classes of org.impalaframework.interactive.command.ReloadCommand

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.