package com.seventh7.mybatis.generate;
import java.util.Collection;
/**
* @author yanglin
*/
public abstract class GenerateModel {
public static final GenerateModel START_WITH_MODEL = new StartWithModel();
public static final GenerateModel END_WITH_MODEL = new EndWithModel();
public static final GenerateModel CONTAIN_MODEL = new ContainModel();
public static GenerateModel getInstance(String identifier) {
try {
return getInstance(Integer.valueOf(identifier));
} catch (Exception e) {
return START_WITH_MODEL;
}
}
public static GenerateModel getInstance(int identifier) {
switch (identifier) {
case 0:
return START_WITH_MODEL;
case 1:
return END_WITH_MODEL;
case 2:
return CONTAIN_MODEL;
default:
throw new AssertionError();
}
}
public boolean matchesAny(String[] patterns, String target) {
for (String pattern : patterns) {
if (apply(pattern, target)) {
return true;
}
}
return false;
}
public boolean matchesAny(Collection<String> patterns, String target) {
return matchesAny(patterns.toArray(new String[patterns.size()]), target);
}
protected abstract boolean apply(String pattern, String target);
public abstract int getIdentifier();
static class StartWithModel extends GenerateModel {
@Override
protected boolean apply(String pattern, String target) {
return target.startsWith(pattern);
}
@Override
public int getIdentifier() {
return 0;
}
}
static class EndWithModel extends GenerateModel {
@Override
protected boolean apply(String pattern, String target) {
return target.endsWith(pattern);
}
@Override
public int getIdentifier() {
return 1;
}
}
static class ContainModel extends GenerateModel {
@Override
protected boolean apply(String pattern, String target) {
return target.contains(pattern);
}
@Override
public int getIdentifier() {
return 2;
}
}
}