001    package org.kuali.common.deploy.appserver.tomcat;
002    
003    import org.kuali.common.deploy.Deployable;
004    import org.kuali.common.util.Assert;
005    
006    public final class TomcatScripts {
007    
008            private final String shutdown;
009            private final String cleanup;
010            private final String startup;
011            private final Deployable setenv;
012    
013            public static class Builder {
014    
015                    private String shutdown;
016                    private String cleanup;
017                    private String startup;
018                    private Deployable setenv;
019    
020                    public Builder(TomcatDirs dirs) {
021                            this.shutdown = dirs.getBin() + "/forced-shutdown.sh";
022                            this.cleanup = dirs.getBin() + "/cleanup.sh";
023                            this.startup = dirs.getBin() + "/startup.sh";
024                            this.setenv = getDefaultSetEnv(dirs);
025                    }
026    
027                    private Deployable getDefaultSetEnv(TomcatDirs dirs) {
028                            String local = "classpath:org/kuali/common/deploy/bin/setenv.sh";
029                            String remote = dirs.getBin() + "/setenv.sh";
030                            String permissions = "755";
031                            return new Deployable.Builder(local, remote).permissions(permissions).build();
032                    }
033    
034                    public Builder setenv(Deployable setenv) {
035                            this.setenv = setenv;
036                            return this;
037                    }
038    
039                    public Builder shutdown(String shutdown) {
040                            this.shutdown = shutdown;
041                            return this;
042                    }
043    
044                    public Builder cleanup(String cleanup) {
045                            this.cleanup = cleanup;
046                            return this;
047                    }
048    
049                    public Builder startup(String startup) {
050                            this.startup = startup;
051                            return this;
052                    }
053    
054                    public TomcatScripts build() {
055                            Assert.noBlanks(shutdown, cleanup, startup);
056                            Assert.notNull(setenv);
057                            return new TomcatScripts(this);
058                    }
059    
060            }
061    
062            private TomcatScripts(Builder builder) {
063                    this.setenv = builder.setenv;
064                    this.shutdown = builder.shutdown;
065                    this.cleanup = builder.cleanup;
066                    this.startup = builder.startup;
067            }
068    
069            public Deployable getSetenv() {
070                    return setenv;
071            }
072    
073            public String getShutdown() {
074                    return shutdown;
075            }
076    
077            public String getCleanup() {
078                    return cleanup;
079            }
080    
081            public String getStartup() {
082                    return startup;
083            }
084    
085    }