use of exceptions.FinderInitializeException in project solution-finder by knewjade.
the class PathEntryPoint method createPathCore.
private PathCore createPathCore(Field field, int maxClearLine, int maxDepth, List<String> patterns, MinoFactory minoFactory, ColorConverter colorConverter, SizedBit sizedBit, SolutionFilter solutionFilter, boolean isUsingHold, BasicSolutions basicSolutions, int threadCount) throws FinderInitializeException, FinderExecuteException {
assert 1 <= threadCount;
List<InOutPairField> inOutPairFields = InOutPairField.createInOutPairFields(sizedBit, field);
TaskResultHelper taskResultHelper = createTaskResultHelper(maxClearLine);
PerfectPackSearcher searcher = new PerfectPackSearcher(inOutPairFields, basicSolutions, sizedBit, solutionFilter, taskResultHelper, threadCount != 1);
FumenParser fumenParser = createFumenParser(settings.isTetfuSplit(), minoFactory, colorConverter);
ThreadLocal<BuildUpStream> threadLocalBuildUpStream = createBuildUpStreamThreadLocal(settings.getDropType(), maxClearLine);
try {
return new PathCore(patterns, searcher, maxDepth, isUsingHold, fumenParser, threadLocalBuildUpStream);
} catch (SyntaxException e) {
output("Pattern syntax error");
output(e.getMessage());
throw new FinderInitializeException("Pattern syntax error", e);
}
}
use of exceptions.FinderInitializeException in project solution-finder by knewjade.
the class FigUtilEntryPoint method createPng.
private FigWriter createPng(MinoFactory minoFactory, ColorConverter colorConverter, FrameType frameType, List<TetfuPage> usingTetfuPages) throws FinderException {
// 日付から新しいディレクトリ名を生成
Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd_HHmmss");
String dateDirName = format.format(date);
// 出力先の親ディレクトリを取得
File originOutputFile = new File(settings.getOutputFilePath());
File parentDirectory = originOutputFile.getParentFile();
// 出力先ディレクトリを作成
String baseName = getCanonicalPath(parentDirectory) + File.separatorChar + dateDirName;
File outputDirectoryFile = new File(baseName);
for (int suffix = 0; outputDirectoryFile.exists(); suffix++) {
outputDirectoryFile = new File(baseName + "_" + suffix);
}
// ファイル名の取得
String outputFileName = getRemoveExtensionFromPath(originOutputFile.getName());
if (outputFileName.isEmpty())
outputFileName = "fig";
// 出力先ディレクトリがない場合は作成
if (!outputDirectoryFile.exists()) {
boolean mkdirsSuccess = outputDirectoryFile.mkdirs();
if (!mkdirsSuccess) {
throw new FinderInitializeException("Failed to make output directory: OutputFilePath=" + originOutputFile.getName());
}
}
output(" .... Output to " + getCanonicalPath(outputDirectoryFile));
Quiz quiz = parseQuiz();
// generatorの準備
boolean usingHold = settings.isUsingHold();
FigGenerator figGenerator = createFigGenerator(frameType, usingHold, minoFactory, colorConverter);
// Bagの作成
List<TetfuPage> tetfuPages = settings.getTetfuPages();
int startPageIndex = settings.getStartPageIndex();
int endPage = settings.getEndPage();
Bag bag = createBag(colorConverter, startPageIndex, tetfuPages, quiz, usingTetfuPages);
// もし開始ページ以降にQuizが含まれるときは無視することを警告
if (tetfuPages.subList(startPageIndex + 1, endPage).stream().map(TetfuPage::getComment).anyMatch(s -> s.startsWith("#Q="))) {
output("#### WARNING: Contains Quiz in tetfu after start page. ignored");
}
String path = String.format("%s" + File.separatorChar + "%s", getCanonicalPath(outputDirectoryFile), outputFileName);
int nextBoxCount = settings.getNextBoxCount();
return new PngWriter(minoFactory, colorConverter, figGenerator, bag, nextBoxCount, path, startPageIndex);
}
use of exceptions.FinderInitializeException in project solution-finder by knewjade.
the class FigUtilEntryPoint method createGif.
private FigWriter createGif(MinoFactory minoFactory, ColorConverter colorConverter, FrameType frameType, File originalOutputFile, List<TetfuPage> usingTetfuPages) throws FinderException {
String outputFilePath = getRemoveExtensionFromPath(getCanonicalPath(originalOutputFile));
if (outputFilePath.isEmpty())
outputFilePath = "fig";
outputFilePath += ".gif";
File outputFile = new File(outputFilePath);
if (outputFile.isDirectory())
throw new FinderInitializeException("Cannot specify directory as output file path: Output=" + settings.getOutputFilePath());
if (outputFile.exists() && !outputFile.canWrite())
throw new FinderInitializeException("Cannot write output file: Output=" + settings.getOutputFilePath());
output(" .... Output to " + getCanonicalPath(outputFile));
Quiz quiz = parseQuiz();
// generatorの準備
boolean usingHold = settings.isUsingHold();
FigGenerator figGenerator = createFigGenerator(frameType, usingHold, minoFactory, colorConverter);
// Bagの作成
List<TetfuPage> tetfuPages = settings.getTetfuPages();
int startPageIndex = settings.getStartPageIndex();
int endPage = settings.getEndPage();
Bag bag = createBag(colorConverter, startPageIndex, tetfuPages, quiz, usingTetfuPages);
// もし開始ページ以降にQuizが含まれるときは無視することを警告
if (tetfuPages.subList(startPageIndex + 1, endPage).stream().map(TetfuPage::getComment).anyMatch(s -> s.startsWith("#Q="))) {
output("#### WARNING: Contains Quiz in tetfu after start page. ignored");
}
int nextBoxCount = settings.getNextBoxCount();
int delay = settings.getDelay();
boolean isInfiniteLoop = settings.getInfiniteLoop();
return new GifWriter(minoFactory, colorConverter, figGenerator, bag, nextBoxCount, delay, outputFile, isInfiniteLoop);
}
use of exceptions.FinderInitializeException in project solution-finder by knewjade.
the class Verify method patterns.
public static PatternGenerator patterns(List<String> patterns, int depth) throws FinderInitializeException {
PatternGenerator generator = patterns(patterns);
int piecesDepth = generator.getDepth();
if (piecesDepth < depth)
throw new FinderInitializeException(String.format("Should specify equal to or more than %d pieces: CurrentPieces=%d", depth, piecesDepth));
return generator;
}
Aggregations