package jef.database.meta;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import jef.accelerator.bean.BeanAccessor;
import jef.common.Entry;
import jef.database.Field;
import jef.database.IQueryableEntity;
import jef.database.PojoWrapper;
import jef.database.annotation.PartitionFunction;
import jef.database.annotation.PartitionKey;
import jef.database.annotation.PartitionTable;
import jef.database.dialect.type.ColumnMapping;
import jef.database.meta.AnnotationProvider.ClassAnnotationProvider;
import jef.database.meta.def.IndexDef;
import com.google.common.collect.Multimap;
@SuppressWarnings("rawtypes")
public class TemplateMetadata extends AbstractMetadata {
private AbstractMetadata wrapped;
private ExtensionTemplate template;
public ExtensionTemplate getExtension() {
return template;
}
public TemplateMetadata(ExtensionTemplate ef) {
this.template = ef;
this.wrapped = ef.getTemplate();
}
@Override
public Class<? extends IQueryableEntity> getContainerType() {
return wrapped.getContainerType();
}
@Override
public ColumnMapping getColumnDef(Field field) {
ColumnMapping result=schemaMap.get(field);
if (result != null) {
return result;
}
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public Field getField(String name) {
Field field = super.getField(name);
if (field != null) {
return field;
}
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public Class<?> getThisType() {
return wrapped.getThisType();
}
@Override
public Field getFieldByLowerColumn(String columnInLowerCase) {
Field field = wrapped.getFieldByLowerColumn(columnInLowerCase);
if (field != null) {
return field;
}
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public List<ColumnMapping> getPKFields() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public List<IndexDef> getIndexDefinition() {
return wrapped.getIndexDefinition();
}
@Override
public PartitionTable getPartition() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public Entry<PartitionKey, PartitionFunction>[] getEffectPartitionKeys() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public Multimap<String, PartitionFunction> getMinUnitFuncForEachPartitionKey() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public IQueryableEntity newInstance() {
// throw new UnsupportedOperationException("this is a abstract metadata template.");
return wrapped.newInstance();
}
@Override
public String getName() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public String getSimpleName() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public PojoWrapper transfer(Object p, boolean isQuery) {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public EntityType getType() {
return EntityType.TEMPLATE;
}
@Override
public boolean containsMeta(ITableMetadata meta) {
return false;
}
@Override
public ExtensionConfig getExtension(IQueryableEntity d) {
return template.getExtension(d);
}
@Override
public ExtensionConfig getExtension(String d) {
return template.getExtension(d);
}
@Override
protected Collection<ColumnMapping> getColumnSchema() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public BeanAccessor getContainerAccessor() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
public void setUnprocessedFields(List<java.lang.reflect.Field> unprocessedField, ClassAnnotationProvider annos) {
this.template.unprocessedField = unprocessedField;
this.template.annos = annos;
}
@Override
public TupleMetadata getExtendsTable() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public Collection<ColumnMapping> getExtendedColumns() {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public ColumnMapping getExtendedColumnDef(String field) {
throw new UnsupportedOperationException("this is a abstract metadata template.");
}
@Override
public Map<String,String> getColumnComments() {
return wrapped.getColumnComments();
}
}