001package de.deepamehta.plugins.images.migrations;
002
003import de.deepamehta.core.service.Inject;
004import de.deepamehta.core.service.Migration;
005import de.deepamehta.plugins.files.ItemKind;
006import de.deepamehta.plugins.files.ResourceInfo;
007import de.deepamehta.plugins.files.service.FilesService;
008import de.deepamehta.plugins.images.ImagePlugin;
009import java.io.File;
010import java.util.logging.Logger;
011import javax.ws.rs.WebApplicationException;
012
013/**
014 *
015 * @author <malte@mikromedia.de>
016 */
017public class Migration1 extends Migration {
018
019    private static final Logger log = Logger.getLogger(Migration1.class.getName());
020
021    @Inject
022    FilesService fileService;
023
024    @Override
025    public void run() {
026        try {
027            // check image file repository
028            ResourceInfo resourceInfo = fileService.getResourceInfo(ImagePlugin.FILEREPO_IMAGES_SUBFOLDER);
029            if (resourceInfo.getItemKind() != ItemKind.DIRECTORY) {
030                String message = "Migration1: image storage directory " + ImagePlugin.FILE_REPOSITORY_PATH + File.separator
031                        + ImagePlugin.FILEREPO_IMAGES_SUBFOLDER + " can not be used";
032                throw new IllegalStateException(message);
033            }
034        } catch (WebApplicationException e) {
035            // catch fileService info request error
036            if (e.getResponse().getStatus() != 404) {
037                throw e;
038            } else {
039                log.info("Migration1: create image directory");
040                fileService.createFolder(ImagePlugin.FILEREPO_IMAGES_SUBFOLDER, "/");
041            }
042        } catch (Exception e) {
043            throw new RuntimeException(e);
044        }
045    }
046    
047}