package org.agnitas.emm.extension.impl; import java.io.File; import java.io.IOException; import org.agnitas.util.FileUtils; import org.apache.log4j.Logger; public class JspRestoreUtil { private static final transient Logger logger = Logger.getLogger( JspRestoreUtil.class); private final ExtensionSystemConfiguration configuration; JspRestoreUtil( ExtensionSystemConfiguration configuration) { this.configuration = configuration; } void createWorkingJspsFromBackupDirectory( String pluginId) throws IOException { if( logger.isInfoEnabled()) { logger.info( "creating working JSP for plugin " + pluginId); } // Check, if directory exists File jspBackupDir = new File( this.configuration.getJspBackupDirectory( pluginId)); if( !jspBackupDir.exists()) { // Directory does not exist, so exit if( logger.isInfoEnabled()) logger.info( "No backup directory found for JSPs of plugin " + pluginId); return; } copyDirectoryContentRecursively( this.configuration.getJspBackupDirectory( pluginId), this.configuration.getJspWorkingDirectory(pluginId)); } private void copyDirectoryContentRecursively( String sourceBaseDirectory, String destinationBaseDirectory) throws IOException { copyDirectoryContentRecursively( new File( sourceBaseDirectory), new File( destinationBaseDirectory)); } private void copyDirectoryContentRecursively( File sourceDirectory, File destinationDirectory) throws IOException { if( logger.isDebugEnabled()) { logger.debug( "copy recursivly from " + sourceDirectory.getAbsolutePath() + " to " + destinationDirectory.getAbsolutePath()); } destinationDirectory.mkdirs(); File[] content = sourceDirectory.listFiles(); for( File file : content) { if( file.isFile()) { if( logger.isDebugEnabled()) { logger.debug( "copying file " + file.getAbsolutePath()); } FileUtils.copyFileToDirectory( file, destinationDirectory); } else if( file.isDirectory()) { if( logger.isDebugEnabled()) { logger.debug( "visiting directory " + file.getAbsolutePath()); } copyDirectoryContentRecursively( file.getAbsolutePath(), destinationDirectory.getAbsolutePath() + File.separator + file.getName()); if( logger.isDebugEnabled()) { logger.debug( "left directory " + file.getAbsolutePath()); } } } } }