001    /**
002     * Copyright 2010-2013 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.common.util.execute;
017    
018    import java.io.File;
019    import java.util.List;
020    import java.util.Properties;
021    
022    import org.apache.commons.lang3.StringUtils;
023    import org.kuali.common.util.PropertyUtils;
024    import org.kuali.common.util.SimpleScanner;
025    import org.slf4j.Logger;
026    import org.slf4j.LoggerFactory;
027    import org.springframework.util.Assert;
028    
029    public class SetNexusRepositoryIdExecutable implements Executable {
030    
031            private static final Logger logger = LoggerFactory.getLogger(SetNexusRepositoryIdExecutable.class);
032    
033            Properties mavenProperties;
034            File buildDirectory;
035            boolean skip;
036    
037            @Override
038            public void execute() {
039                    // Might be skipping execution altogether
040                    if (skip) {
041                            logger.info("Skipping execution");
042                            return;
043                    }
044    
045                    Assert.notNull(mavenProperties, "mavenProperties are null");
046                    Assert.notNull(buildDirectory, "buildDirectory is null");
047                    Assert.isTrue(buildDirectory.exists(), "buildDirectory does not exist");
048    
049                    File nexusDirectory = new File(buildDirectory, "nexus-staging");
050    
051                    SimpleScanner scanner = new SimpleScanner(nexusDirectory, "*.properties", null);
052                    List<File> files = scanner.getFiles();
053    
054                    if (files.size() != 1) {
055                            throw new IllegalStateException("There can be only one!");
056                    }
057    
058                    File nexusPropertiesFile = files.get(0);
059    
060                    Properties nexusProperties = PropertyUtils.load(nexusPropertiesFile);
061    
062                    String value = nexusProperties.getProperty("stagingRepository.id");
063    
064                    if (StringUtils.isBlank(value)) {
065                            throw new IllegalStateException("stagingRepository.id is blank");
066                    }
067    
068                    mavenProperties.setProperty("nexus.stagingRepository.id", value);
069    
070            }
071    
072            public Properties getMavenProperties() {
073                    return mavenProperties;
074            }
075    
076            public void setMavenProperties(Properties mavenProperties) {
077                    this.mavenProperties = mavenProperties;
078            }
079    
080            public File getBuildDirectory() {
081                    return buildDirectory;
082            }
083    
084            public void setBuildDirectory(File buildDirectory) {
085                    this.buildDirectory = buildDirectory;
086            }
087    
088            public boolean isSkip() {
089                    return skip;
090            }
091    
092            public void setSkip(boolean skip) {
093                    this.skip = skip;
094            }
095    
096    }