X-Git-Url: https://git.hedgecode.org/?p=chesshog.git;a=blobdiff_plain;f=chesshog-graphics%2Fsrc%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fimg%2Fboard%2FBoardLoader.java;fp=chesshog-format%2Fsrc%2Fmain%2Fjava%2Forg%2Fhedgecode%2Fchess%2Fimg%2Fboard%2FBoardLoader.java;h=c61bd98bacab3f8985d5887822046e6d4c780db8;hp=4c2c18d5cf00b3179d45daff4e182dabd9af761f;hb=e185f00e2252021d946f23f4871ae9721f7e65fa;hpb=612dc701d600159c094ab201c6de6136ae38dba9 diff --git a/chesshog-format/src/main/java/org/hedgecode/chess/img/board/BoardLoader.java b/chesshog-graphics/src/main/java/org/hedgecode/chess/img/board/BoardLoader.java similarity index 58% rename from chesshog-format/src/main/java/org/hedgecode/chess/img/board/BoardLoader.java rename to chesshog-graphics/src/main/java/org/hedgecode/chess/img/board/BoardLoader.java index 4c2c18d..c61bd98 100644 --- a/chesshog-format/src/main/java/org/hedgecode/chess/img/board/BoardLoader.java +++ b/chesshog-graphics/src/main/java/org/hedgecode/chess/img/board/BoardLoader.java @@ -17,14 +17,11 @@ package org.hedgecode.chess.img.board; import java.awt.image.BufferedImage; -import java.io.File; -import java.io.IOException; import java.util.HashMap; import java.util.Map; -import javax.imageio.ImageIO; - import org.hedgecode.chess.img.AbstractImageLoader; +import org.hedgecode.chess.img.FilenameUtils; import org.hedgecode.chess.img.ImageConstants; import org.hedgecode.chess.img.ImageException; import org.hedgecode.chess.img.ImageFilter; @@ -36,7 +33,7 @@ import org.hedgecode.chess.img.ImageFilter; */ public class BoardLoader extends AbstractImageLoader { - private static final File SQUARES_PATH = new File(IMAGES_PATH, ImageConstants.RESOURCE_SQUARES_DIR); + private static final String SQUARES_DIR = ImageConstants.RESOURCE_SQUARES_DIR; private static final String SQUARE_DARK = ImageConstants.DARK_SQUARE_FILENAME; private static final String SQUARE_LIGHT = ImageConstants.LIGHT_SQUARE_FILENAME; @@ -48,12 +45,9 @@ public class BoardLoader extends AbstractImageLoader { @Override public Board load(String name) throws ImageException { Board board = null; - SquarePair squarePair = null; if (Type.STATELESS.equals(loadType()) || !squareSetMap.containsKey(name)) { - File boardPath = new File(SQUARES_PATH, name); - if (boardPath.exists() && boardPath.isDirectory()) { - squarePair = loadSquares(name, boardPath); - } + String boardPath = FilenameUtils.getFullPath(SQUARES_DIR, name); + SquarePair squarePair = loadSquares(boardPath); if (squarePair != null) { board = Board.create(squarePair); if (Type.STATEFUL.equals(loadType())) { @@ -78,29 +72,17 @@ public class BoardLoader extends AbstractImageLoader { squareSetMap.clear(); } - private SquarePair loadSquares(String name, File boardPath) throws ImageException { - BufferedImage dark = null, light = null; - File[] images = boardPath.listFiles(new ImageFilter(SQUARE_NAMES)); - if (images != null) { - for (File image : images) { - if (image.isFile()) { - String filename = image.getName(); - try { - switch (filename.substring(0, filename.lastIndexOf('.'))) { - case SQUARE_DARK: - dark = ImageIO.read(image); - break; - case SQUARE_LIGHT: - light = ImageIO.read(image); - break; - } - } catch (IOException e) { - throw new ImageException(e.getMessage()); // todo: locale - } - } - } - } - return (dark != null && light != null) ? SquarePair.create(dark, light) : null; + private SquarePair loadSquares(String boardPath) throws ImageException { + Map images = + loadImages( + boardPath, + new ImageFilter(SQUARE_NAMES) + ); + BufferedImage dark = images.get(SQUARE_DARK); + BufferedImage light = images.get(SQUARE_LIGHT); + return (dark != null && light != null) + ? SquarePair.create(dark, light) + : null; // todo: ImageException } }