/* * Copyright 2004-2015 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.seasar.extension.jdbc.gen.internal.version; import java.io.File; import org.seasar.extension.jdbc.gen.version.DdlInfoFile; import org.seasar.extension.jdbc.gen.version.DdlVersionDirectory; import org.seasar.extension.jdbc.gen.version.DdlVersionDirectoryTree; import org.seasar.framework.log.Logger; /** * {@link DdlVersionDirectoryTree}の実装クラスです。 * * @author taedium */ public class DdlVersionDirectoryTreeImpl implements DdlVersionDirectoryTree { /** createディレクトリの名前 */ protected static String CREATE_DIR_NAME = "create"; /** dropディレクトリの名前 */ protected static String DROP_DIR_NAME = "drop"; /** ロガー */ protected static Logger logger = Logger .getLogger(DdlVersionDirectoryTreeImpl.class); /** バージョン管理のベースディレクトリ */ protected File baseDir; /** バージョン番号のパターン */ protected String versionNoPattern; /** 環境名 */ protected String env; /** DDLのバージョン */ protected DdlInfoFile ddlInfoFile; /** * インスタンスを構築します。 * * @param baseDir * バージョン管理のベースディレクトリ * @param versionFile * バージョンファイル * @param versionNoPattern * バージョン番号のパターン * @param env * 環境名、指定されない場合{@code null} */ public DdlVersionDirectoryTreeImpl(File baseDir, File versionFile, String versionNoPattern, String env) { if (baseDir == null) { throw new NullPointerException("baseDir"); } if (versionFile == null) { throw new NullPointerException("versionFile"); } if (versionNoPattern == null) { throw new NullPointerException("versionNoPattern"); } this.baseDir = baseDir; this.versionNoPattern = versionNoPattern; this.env = env; ddlInfoFile = createDdlInfoFile(versionFile); } public DdlVersionDirectory getCurrentVersionDirectory() { return createDdlVersionDirectory(ddlInfoFile.getCurrentVersionNo()); } public DdlVersionDirectory getNextVersionDirectory() { return createDdlVersionDirectory(ddlInfoFile.getNextVersionNo()); } public DdlVersionDirectory getVersionDirectory(int versionNo) { return createDdlVersionDirectory(versionNo); } public DdlInfoFile getDdlInfoFile() { return ddlInfoFile; } /** * {@link DdlInfoFile}の実装を作成します。 * * @param file * ファイル * @return {@link DdlInfoFile}の実装 */ protected DdlInfoFile createDdlInfoFile(File file) { return new DdlInfoFileImpl(file); } /** * {@link DdlVersionDirectory}の実装を作成します。 * * @param versionNo * バージョン番号 * @return {@link DdlVersionDirectory}の実装 */ protected DdlVersionDirectory createDdlVersionDirectory(int versionNo) { return new DdlVersionDirectoryImpl(baseDir, versionNo, versionNoPattern, env); } }