blob: a385a3d4017484f64930a28e88e2d0e99cfb4b7c [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.ambari.server.stack;
import java.io.File;
import java.io.FilenameFilter;
/**
* Base stack definition directory.
* Contains functionality common across directory types.
*/
public abstract class StackDefinitionDirectory {
/**
* xml filename filter
*/
protected static final FilenameFilter XML_FILENAME_FILTER = new FilenameFilter() {
@Override
public boolean accept(File folder, String fileName) {
return fileName.toLowerCase().endsWith(".xml");
}
};
public static final String CONFIG_UPGRADE_XML_FILENAME_PREFIX = "config-upgrade.xml";
/**
* underlying directory
*/
protected File directory;
/**
* Constructor.
*
* @param directory underlying directory
*/
public StackDefinitionDirectory(String directory) {
//todo: handle non-existent dir
this.directory = new File(directory);
}
/**
* Obtain the configuration sub-directory instance for the specified path.
*
* @param directoryName name of the configuration directory
* @return ConfigurationDirectory instance for the specified configuration directory name
*/
public ConfigurationDirectory getConfigurationDirectory(String directoryName, String propertiesDirectoryName) {
ConfigurationDirectory configDirectory = null;
File configDirFile = new File(directory.getAbsolutePath() + File.separator + directoryName);
File propertiesDirFile = new File(directory.getAbsolutePath() + File.separator + propertiesDirectoryName);
if (configDirFile.exists() && configDirFile.isDirectory()) {
if(propertiesDirFile.exists() && propertiesDirFile.isDirectory()) {
configDirectory = new ConfigurationDirectory(configDirFile.getAbsolutePath(), propertiesDirFile.getAbsolutePath());
} else {
configDirectory = new ConfigurationDirectory(configDirFile.getAbsolutePath(), null);
}
}
return configDirectory;
}
/**
* Obtain the path for this directory instance.
*
* @return the path represented by this directory
*/
public String getPath() {
return directory.getPath();
}
/**
* Obtain the absolute path for this directory instance.
*
* @return the absolute path represented by this directory
*/
public String getAbsolutePath() {
return directory.getAbsolutePath();
}
/**
* Obtain the name of the directory.
*
* @return name of the directory
*/
public String getName() {
return directory.getName();
}
/**
* Obtain the underlying directory.
*
* @return the underlying directory file
*/
protected File getDirectory() {
return directory;
}
}