/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.wcs.netbeans.liquiface.change.applier.provider; /* * #%L * Liquiface - GUI for Liquibase * %% * Copyright (C) 2013 Webstar Csoport Kft. * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ import com.wcs.netbeans.liquiface.change.applier.*; import java.util.HashMap; import java.util.Map; import liquibase.change.Change; /** * * @author tveki */ public class SimpleChangeApplierProvider implements ChangeApplierProvider { private Map<Class<? extends Change>, ChangeApplier> applierMap; public SimpleChangeApplierProvider() { applierMap = new HashMap<Class<? extends Change>, ChangeApplier>(); initMap(); } private void add(ChangeApplier applier){ applierMap.put(getChangeClass(applier.getClass()), applier); } private void initMap(){ add(new AddColumnChangeApplier()); add(new AddForeignKeyConstraintChangeApplier()); add(new AddNotNullConstraintChangeApplier()); add(new AddPrimaryKeyChangeApplier()); add(new AddUniqueConstraintChangeApplier()); add(new CreateTableChangeApplier()); add(new DropColumnChangeApplier()); add(new DropForeignKeyConstraintChangeApplier()); add(new DropNotNullConstraintChangeApplier()); add(new DropPrimaryKeyChangeApplier()); add(new DropTableChangeApplier()); add(new DropUniqueConstraintChangeApplier()); add(new ModifyDataTypeChangeApplier()); add(new RenameColumnChangeApplier()); add(new RenameTableChangeApplier()); //TODO ide a tobbit is } @Override public ChangeApplier getApplier(Change change){ return applierMap.get(change.getClass()); } private Class<? extends Change> getChangeClass(Class<? extends ChangeApplier> applierClass){ ApplyChange annotation = (ApplyChange) applierClass.getAnnotation(ApplyChange.class); return annotation.value(); } }