SimpleJavaEngine/src/main/java/speiger/src/coreengine/assets/impl/FolderAssetPackage.java

54 lines
1.2 KiB
Java

package speiger.src.coreengine.assets.impl;
import java.io.File;
import java.io.IOException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import speiger.src.collections.objects.lists.ObjectArrayList;
import speiger.src.coreengine.assets.AssetLocation;
import speiger.src.coreengine.assets.IAsset;
import speiger.src.coreengine.assets.IAssetPackage;
import speiger.src.coreengine.assets.impl.FolderAsset;
public class FolderAssetPackage implements IAssetPackage
{
Path baseFolder;
public FolderAssetPackage(File baseFolder)
{
this(baseFolder.toPath());
}
public FolderAssetPackage(Path baseFolder)
{
this.baseFolder = baseFolder;
}
@Override
public List<String> getDomains()
{
List<String> domains = new ObjectArrayList<>();
try(DirectoryStream<Path> dirs = Files.newDirectoryStream(baseFolder.resolve("assets")))
{
for(Path path : dirs)
{
domains.add(path.getFileName().toString());
}
}
catch(IOException e)
{
e.printStackTrace();
}
return domains;
}
@Override
public IAsset getAsset(AssetLocation location)
{
Path path = baseFolder.resolve(location.getActualLocation());
return Files.exists(path) ? new FolderAsset(location, path) : null;
}
}