/*
* #######################################################
*
* Copyright (c) 2013, A. Weinberger. All rights reserved.
* --------------------------------------------------------
*/
package ale.model.skin;
import java.io.IOException;
import java.nio.file.Path;
import ale.Constants;
import ale.util.fileUtil.FileUtil;
/*
* class saves a skin to a zip archive.
*/
class ZipSkinSaver {
private ZipSkinSaver() {
}
static void save(Skin skin, Path saveDir) throws IOException {
assert skin != null;
save(skin, saveDir, null);
}
static void save(Skin skin, Path saveDir, String name) throws IOException {
Path skinPath;
if (name == null) {
skinPath = Constants.PROGRAM_TMPSKIN_PATH.resolve(skin.getFilename());
} else {
skinPath = Constants.PROGRAM_TMPSKIN_PATH.resolve(name);
}
FileUtil.createDirectory(skinPath);
SkinPropertiesWriter.write(skin.getProperties(), skinPath.resolve(Constants.SKIN_PROPFILE));
skin.getProperties().saveSkinPreview(skinPath.resolve(Constants.SKIN_PREVIEWFILE));
assert FileUtil.control(skinPath.resolve(Constants.SKIN_PROPFILE));
assert FileUtil.control(skinPath.resolve(Constants.SKIN_PREVIEWFILE));
Path tmp = Constants.PROGRAM_TMPSKIN_PATH.resolve(skin.getFilename());
if (FileUtil.controlDirectory(tmp.resolve(Constants.SKIN_IMGFOLDER))) {
FileUtil.copyDirectory(tmp.resolve(Constants.SKIN_IMGFOLDER), skinPath);
}
if (FileUtil.control(tmp.resolve(Constants.SKIN_PREVIEWIMAGE))) {
FileUtil.copyFile(tmp.resolve(Constants.SKIN_PREVIEWIMAGE), skinPath.resolve(Constants.SKIN_PREVIEWIMAGE), false);
}
FileUtil.createDirectory(saveDir);
FileUtil.zipDirectoryTo(skinPath, saveDir, Constants.SKINFILE_SUFFIX);
}
}