package foundation.data.object;
|
|
import java.util.Set;
|
|
import foundation.data.meta.field.FieldsRuntime;
|
import foundation.util.CaseInsensitiveSet;
|
import foundation.util.ContentBuilder;
|
import foundation.variant.provider.DataEvent;
|
import foundation.variant.provider.IVariantsProvider;
|
import foundation.variant.provider.VariantProviderType;
|
|
public class DataObjectVariantsProvider implements IVariantsProvider {
|
|
private static Set<String> names;
|
private DataObject dataObject;
|
|
static {
|
init();
|
}
|
|
public DataObjectVariantsProvider(DataObject dataObject) {
|
this.dataObject = dataObject;
|
}
|
|
@Override
|
public String getProviderName() {
|
return DataObject.class.getSimpleName();
|
}
|
|
@Override
|
public VariantProviderType getProviderType() {
|
return VariantProviderType.Persist;
|
}
|
|
public boolean containsVariant(String name) {
|
return names.contains(name);
|
}
|
|
@Override
|
public Object getVariantValue(DataEvent dataEvent, String name) {
|
if (name == null) {
|
return null;
|
}
|
|
name = name.toLowerCase();
|
|
try {
|
if ("tablename".equals(name)) {
|
return dataObject.getTableName();
|
}
|
else if ("fieldnames".equals(name)) {
|
FieldsRuntime fieldsRuntime = dataObject.getTableFieldMetas();
|
int size = fieldsRuntime.getFieldCount();
|
String[] fieldNames = fieldsRuntime.getFieldNames();
|
|
ContentBuilder builder = new ContentBuilder(", ");
|
|
for (int i = 0; i < size; i++) {
|
builder.append(fieldNames[i]);
|
}
|
|
return builder.toString();
|
}
|
else if ("placeholders".equals(name)) {
|
FieldsRuntime fieldsRuntime = dataObject.getTableFieldMetas();
|
int size = fieldsRuntime.getFieldCount();
|
|
ContentBuilder builder = new ContentBuilder(", ");
|
|
for (int i = 0; i < size; i++) {
|
builder.append("?");
|
}
|
|
return builder.toString();
|
}
|
}
|
catch (Exception e) {
|
}
|
|
return null;
|
}
|
|
@Override
|
public Set<String> getVariantNames() {
|
return names;
|
}
|
|
private static void init() {
|
names = new CaseInsensitiveSet();
|
names.add("tablename");
|
names.add("fieldNames");
|
names.add("placeHolders");
|
}
|
|
}
|