Merge pull request #1805 from yueh/feature-recipes-refactoring

Reorganizes the recipes in a more reasonable way.
This commit is contained in:
yueh
2015-08-22 23:21:14 +02:00
103 changed files with 1598 additions and 1646 deletions
+2 -6
View File
@@ -22,6 +22,7 @@ package appeng.core;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import javax.annotation.Nonnull;
import com.google.common.base.Preconditions;
@@ -29,7 +30,6 @@ import com.google.common.base.Preconditions;
import org.apache.commons.io.FileUtils;
import appeng.api.recipes.IRecipeHandler;
import appeng.api.recipes.IRecipeLoader;
import appeng.recipes.loader.ConfigLoader;
import appeng.recipes.loader.JarLoader;
import appeng.recipes.loader.RecipeResourceCopier;
@@ -69,11 +69,7 @@ public class RecipeLoader implements Runnable
final File readmeGenDest = new File( generatedRecipesDir, "README.html" );
final File readmeUserDest = new File( userRecipesDir, "README.html" );
final IRecipeLoader oreDictLoader = new JarLoader( "/assets/appliedenergistics2/oredict/" );
this.handler.parseRecipes( oreDictLoader, "vanilla.oredict" );
this.handler.parseRecipes( oreDictLoader, "ae2.oredict" );
// generates generated and user recipes dir
// generates generated and user recipes dir
// will clean the generated every time to keep it up to date
// copies over the recipes in the jar over to the generated folder
// copies over the readmes
@@ -88,22 +88,60 @@ public class RecipeResourceCopier
Preconditions.checkNotNull( destination );
Preconditions.checkArgument( destination.isDirectory() );
final String[] listing = this.getResourceListing( this.getClass(), this.root );
this.copyTo( destination, this.root );
}
/**
* @see {RecipeResourceCopier#copyTo(File)}
*
* @param destination destination folder to which the recipes are copied to
* @param directory the folder to copy.
*
* @throws URISyntaxException {@see #getResourceListing}
* @throws IOException {@see #getResourceListing} and if copying the detected resource to file is not possible
*/
private void copyTo( File destination, String directory ) throws URISyntaxException, IOException
{
assert destination != null;
assert directory != null;
final String[] listing = this.getResourceListing( this.getClass(), directory );
for( String list : listing )
{
if( list.endsWith( ".recipe" ) || list.endsWith( ".html" ) )
{
final InputStream inStream = this.getClass().getResourceAsStream( '/' + this.root + list );
final File outFile = new File( destination, list );
if( !outFile.exists() )
{
if( inStream != null )
{
FileUtils.copyInputStreamToFile( inStream, outFile );
inStream.close();
}
}
this.copyFile( destination, directory, list );
}
else if( !list.contains( "." ) )
{
final File subDirectory = new File( destination, list );
FileUtils.forceMkdir( subDirectory );
this.copyTo( subDirectory, directory + list + "/" );
}
}
}
/**
* Copies a single file inside a folder to the destination.
*
* @param destination folder to which the file is copied to
* @param directory the directory containing the file
* @param fileName the fily to copy
*
* @throws IOException if copying the file is not possible
*/
private void copyFile( File destination, String directory, String fileName ) throws IOException
{
assert destination != null;
assert fileName != null;
final InputStream inStream = this.getClass().getResourceAsStream( '/' + directory + fileName );
final File outFile = new File( destination, fileName );
if( !outFile.exists() && inStream != null )
{
FileUtils.copyInputStreamToFile( inStream, outFile );
inStream.close();
}
}