package org.jooq.meta;
import java.util.Collections;
import java.util.List;
public abstract class AbstractUDTDefinition
extends
AbstractElementContainerDefinition<AttributeDefinition>
implements
UDTDefinition {
private List<RoutineDefinition> routines;
private final boolean synthetic;
public AbstractUDTDefinition(SchemaDefinition schema, String name, String comment) {
this(schema, null, name, false, comment);
}
public AbstractUDTDefinition(SchemaDefinition schema, PackageDefinition pkg, String name, String comment) {
this(schema, pkg, name, false, comment);
}
public AbstractUDTDefinition(SchemaDefinition schema, PackageDefinition pkg, String name, boolean synthetic, String comment) {
super(schema, pkg, name, comment);
this.synthetic = synthetic;
}
@Override
public final List<AttributeDefinition> getAttributes() {
return getElements();
}
@Override
public final AttributeDefinition getAttribute(String attributeName) {
return getElement(attributeName);
}
@Override
public final AttributeDefinition getAttribute(int attributeIndex) {
return getElement(attributeIndex);
}
@Override
public final List<RoutineDefinition> getRoutines() {
if (routines == null)
routines = getRoutines0();
return routines;
}
@Override
public List<UDTDefinition> getUDTs() {
return getDatabase().getUDTs(this);
}
protected abstract List<RoutineDefinition> getRoutines0();
@Override
public List<AttributeDefinition> getConstants() {
return Collections.emptyList();
}
@Override
public boolean isSynthetic() {
return synthetic;
}
}