package com.github.ryhmrt.mssqldiff.data; public abstract class Diff<DATA> { public enum Type {EQUAL, MODIFIED, CREATED, DROPPED}; private Type type; private DATA from; private DATA to; public Type getType() { return type; } public void setType(Type type) { this.type = type; } public DATA getFrom() { return from; } public void setFrom(DATA from) { this.from = from; } public DATA getTo() { return to; } public void setTo(DATA to) { this.to = to; } @Override public String toString() { switch (getType()) { case MODIFIED: return "* " + getName(); case CREATED: return "+ " + getName(); case DROPPED: return "- " + getName(); default: return getName(); } } public String toSql() { switch (getType()) { case CREATED: return toCreateSql(); case DROPPED: return toDropSql(); case MODIFIED: return toModifySql(); } return null; } public abstract String getName(); public abstract String toCreateSql(); public abstract String toDropSql(); public abstract String toModifySql(); }