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.