1 package org.kuali.common.deploy;
2
3 import java.util.List;
4
5 import org.kuali.common.util.Assert;
6 import org.kuali.common.util.FormatUtils;
7 import org.kuali.common.util.execute.Executable;
8 import org.kuali.common.util.secure.channel.SecureChannel;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11
12 import com.google.common.collect.ImmutableList;
13
14 public class SysAdminExecutable implements Executable {
15
16 private static final Logger logger = LoggerFactory.getLogger(SysAdminExecutable.class);
17
18 public SysAdminExecutable(SecureChannel channel, List<String> commands, boolean skip) {
19 Assert.noNulls(channel, commands);
20 this.channel = channel;
21 this.commands = ImmutableList.copyOf(commands);
22 this.skip = skip;
23 }
24
25 private final SecureChannel channel;
26 private final List<String> commands;
27 private final boolean skip;
28
29 @Override
30 public void execute() {
31 if (skip) {
32 logger.info("[sysadmin:skipped]");
33 return;
34 }
35 long start = System.currentTimeMillis();
36 logger.info("[sysadmin:begin]");
37 logger.info(" executing {} commands", commands.size());
38 for (String command : commands) {
39 logger.debug(command);
40 channel.executeCommand(command);
41 }
42 logger.info("[sysadmin:complete] - {}", FormatUtils.getTime(System.currentTimeMillis() - start));
43 }
44
45 public SecureChannel getChannel() {
46 return channel;
47 }
48
49 public List<String> getCommands() {
50 return commands;
51 }
52
53 public boolean isSkip() {
54 return skip;
55 }
56
57 }