Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package ca.carleton.gcrc.couch.command;
  
  import java.io.File;
  import java.util.Stack;
  
 
 public class CommandCreate implements Command {
 
 	public String getCommandString() {
 		return "create";
 	}
 
 	public boolean matchesKeyword(String keyword) {
 		ifgetCommandString().equalsIgnoreCase(keyword) ) {
 			return true;
 		}
 		return false;
 	}
 
 	public boolean requiresAtlasDir() {
 		return false;
 	}
 
 	public void reportHelp(PrintStream ps) {
 		ps.println("Nunaliit2 Atlas Framework - Creation Command");
 		ps.println();
 		ps.println("The creation command allows a user to create a new atlas. During");
 		ps.println("creation, a directory is created with a number of default files.");
 		ps.println("This directory is referred to as the 'atlas directory' for");
 		ps.println("subsequent commands.");
 		ps.println();
 		ps.println("Command Syntax:");
 		ps.println("  nunaliit [<global-options>] create [<create-options>]");
 		ps.println();
 		ps.println("Global Options");
 		CommandHelp.reportGlobalSettingAtlasDir(ps);
 		ps.println();
 		ps.println("Create Options");
 		ps.println("  --no-config   Skips the configuration phase");
 	}
 
 	public void runCommand(
 		,Stack<StringargumentStack
 		) throws Exception {
 		
 		// Pick up options
 		boolean noConfig = false;
 		whilefalse == argumentStack.empty() ){
 			String optionName = argumentStack.peek();
 			if"--no-config".equals(optionName) ){
 				argumentStack.pop();
 				noConfig = true;
 			} else {
 				break;
 			}
 		}
 
 		// Figure out where atlas should be created
 		File atlasDir = gs.getAtlasDir();
 		ifnull == atlasDir ){
 			// Ask for directory
 			BufferedReader reader = gs.getInReader();
 
 			// Prompt user
 			gs.getOutStream().print("Enter location where atlas should be created: ");
 			
 			// Read answer
 			String line = null;
 			try {
 				line = reader.readLine();
 			} catch(Exception e) {
 				throw new Exception("Error while reading atlas directory from user",e);
 			}
 			
 			atlasDir = PathComputer.computeAtlasDir(line);
 			gs.setAtlasDir(atlasDir);
 		}
 
 		// Check if this is valid
 		ifatlasDir.exists() ) {
 			throw new Exception("Directory or file already exists: "+atlasDir.getAbsolutePath());
 		}
 		File parent = atlasDir.getParentFile();
 		iffalse == parent.exists() ){
 			throw new Exception("Parent directory does not exist: "+parent.getAbsolutePath());
		}
		iffalse == parent.isDirectory() ){
			throw new Exception("Parent path is not a directory: "+parent.getAbsolutePath());
		}
		// Verify that template directory is available
		File templateDir = PathComputer.computeTemplatesDirgs.getInstallDir() );
		ifnull == templateDir 
		 || false == templateDir.exists() 
		 || false == templateDir.isDirectory() ){
			throw new Exception("Unable to find template directory");
		}
		// Verify that content directory is available
		File contentDir = PathComputer.computeContentDirgs.getInstallDir() );
		ifnull == contentDir 
		 || false == contentDir.exists() 
		 || false == contentDir.isDirectory() ){
			throw new Exception("Unable to find content directory");
		}
		// Create directory
		try {
			boolean created = atlasDir.mkdir();
			if( !created ){
				throw new Exception("Directory not created");
			}
catch(Exception e) {
			throw new Exception("Unable to create directory: "+atlasDir,e);
		}
		gs.getOutStream().println("Created atlas directory at: "+atlasDir.getAbsolutePath());
		// Copy templates
		try {
			gs.getOutStream().println("Copying templates from: "+templateDir.getAbsolutePath());
			CopyMachine copyMachine = new CopyMachine();			
			File binDir = PathComputer.computeBinDir(gs.getInstallDir());
			ifnull != binDir ) {
				copyMachine.addTextConversion("NUNALIIT_BIN_DIR"binDir.getAbsolutePath());
			}
			copyMachine.addTextConversion("ATLAS_DIR"atlasDir.getAbsolutePath());
			copyMachine.addTextConversion("ATLAS_NAME""unknown");
			copyMachine.copyDir(new FSEntryFile(templateDir), atlasDir);
catch(Exception e) {
			throw new Exception("Unable to copy template to new atlas directory",e);
		}
		// Copy content by performing upgrade
		try {
			UpgradeProcess upgradeProcess = new UpgradeProcess();
			UpgradeReport upgradeReport = upgradeProcess.computeUpgrade(
				contentDir
				,atlasDir
				,new FileSetManifest() // new installation
				);
				atlasDir
				,contentDir
				,new File(atlasDir"upgrade/install")
				);
			upgradeProcess.performUpgrade(
				upgradeReport
				,operations
				);
catch(Exception e) {
			throw new Exception("Unable to copy content to new atlas directory",e);
		}
		// Create sub-directories
		{
			File mediaDir = new File(atlasDir,"media");
			try {
				boolean created = mediaDir.mkdir();
				if( !created ){
					throw new Exception("Directory not created");
				}
catch(Exception e) {
				throw new Exception("Unable to create media directory: "+mediaDir,e);
			}
		}
		// Perform configuration, unless disabled
		iffalse == noConfig ){
			CommandConfig config = new CommandConfig();
			Stack<StringconfigArgs = new Stack<String>();
			config.runCommand(gsconfigArgs);
		}
	}
New to GrepCode? Check out our FAQ X