AbstractMemberMetaData fmd = (AbstractMemberMetaData)md;
fmd.addColumn(colmd);
}
else if (md instanceof AbstractElementMetaData)
{
AbstractElementMetaData elemd = (AbstractElementMetaData)md;
elemd.addColumn(colmd);
}
else if (md instanceof JoinMetaData)
{
JoinMetaData jnmd = (JoinMetaData)md;
jnmd.addColumn(colmd);
}
else if (md instanceof IdentityMetaData)
{
IdentityMetaData idmd = (IdentityMetaData)md;
idmd.addColumn(colmd);
}
else if (md instanceof ForeignKeyMetaData)
{
ForeignKeyMetaData fkmd = (ForeignKeyMetaData)md;
fkmd.addColumn(colmd);
}
else if (md instanceof IndexMetaData)
{
IndexMetaData idxmd = (IndexMetaData)md;
idxmd.addColumn(colmd);
}
else if (md instanceof UniqueMetaData)
{
UniqueMetaData unimd = (UniqueMetaData)md;
unimd.addColumn(colmd);
}
else if (md instanceof OrderMetaData)
{
OrderMetaData ormd = (OrderMetaData)md;
ormd.addColumn(colmd);
}
else if (md instanceof DiscriminatorMetaData)
{
DiscriminatorMetaData dismd = (DiscriminatorMetaData)md;
dismd.setColumnMetaData(colmd);
}
else if (md instanceof VersionMetaData)
{
VersionMetaData vermd = (VersionMetaData)md;
vermd.addColumn(colmd);
}
else if (md instanceof AbstractClassMetaData)
{
AbstractClassMetaData cmd = (AbstractClassMetaData)md;
cmd.addUnmappedColumn(colmd);
}
else if (md instanceof PrimaryKeyMetaData)
{
PrimaryKeyMetaData pkmd = (PrimaryKeyMetaData)md;
pkmd.addColumn(colmd);
}
pushStack(colmd);
}
else if (localName.equals("element"))
{
AbstractMemberMetaData fmd = (AbstractMemberMetaData)getStack();
ElementMetaData elemmd = new ElementMetaData();
elemmd.setColumnName(getAttr(attrs, "column"));
elemmd.setDeleteAction(getAttr(attrs, "delete-action"));
elemmd.setUpdateAction(getAttr(attrs, "update-action"));
elemmd.setIndexed(IndexedValue.getIndexedValue(getAttr(attrs, "indexed")));
elemmd.setUnique(getAttr(attrs, "unique"));
String mappedBy = getAttr(attrs, "mapped-by");
elemmd.setMappedBy(mappedBy);
if (!StringUtils.isWhitespace(mappedBy) && fmd.getMappedBy() == null)
{
// With collection/array this is the same as mapped-by on the field
fmd.setMappedBy(mappedBy);
}
fmd.setElementMetaData(elemmd);
pushStack(elemmd);
}
else if (localName.equals("key"))
{
AbstractMemberMetaData fmd = (AbstractMemberMetaData)getStack();
KeyMetaData keymd = new KeyMetaData();
keymd.setColumnName(getAttr(attrs, "column"));
keymd.setDeleteAction(getAttr(attrs, "delete-action"));
keymd.setUpdateAction(getAttr(attrs, "update-action"));
keymd.setIndexed(IndexedValue.getIndexedValue(getAttr(attrs, "indexed")));
keymd.setUnique(getAttr(attrs, "unique"));
keymd.setMappedBy(getAttr(attrs, "mapped-by"));
fmd.setKeyMetaData(keymd);
pushStack(keymd);
}
// New value
else if (localName.equals("value"))
{
AbstractMemberMetaData fmd = (AbstractMemberMetaData)getStack();
ValueMetaData valuemd = new ValueMetaData();
valuemd.setColumnName(getAttr(attrs, "column"));
valuemd.setDeleteAction(getAttr(attrs, "delete-action"));
valuemd.setUpdateAction(getAttr(attrs, "update-action"));
valuemd.setIndexed(IndexedValue.getIndexedValue(getAttr(attrs, "indexed")));
valuemd.setUnique(getAttr(attrs, "unique"));
valuemd.setMappedBy(getAttr(attrs, "mapped-by"));
fmd.setValueMetaData(valuemd);
pushStack(valuemd);
}
// New fetch-group
else if (localName.equals("fetch-group"))
{
MetaData md = getStack();
FetchGroupMetaData fgmd = new FetchGroupMetaData(getAttr(attrs,"name"));
fgmd.setPostLoad(getAttr(attrs,"post-load"));
if (md instanceof FetchGroupMetaData)
{
FetchGroupMetaData fgmdParent = (FetchGroupMetaData)md;
fgmdParent.addFetchGroup(fgmd);
}
else if (md instanceof AbstractClassMetaData)
{
AbstractClassMetaData cmd = (AbstractClassMetaData)md;
cmd.addFetchGroup(fgmd);
}
else if (md instanceof FetchPlanMetaData)
{
FetchPlanMetaData fpmd = (FetchPlanMetaData)md;
fpmd.addFetchGroup(fgmd);
}
pushStack(fgmd);
}
else if (localName.equals("extension"))
{
MetaData md = getStack();
md.addExtension(getAttr(attrs,"vendor-name"), getAttr(attrs,"key"), getAttr(attrs,"value"));
}
else if (localName.equals("version"))
{
AbstractClassMetaData cmd = (AbstractClassMetaData)getStack();
VersionMetaData vermd = cmd.newVersionMetadata();
vermd.setStrategy(getAttr(attrs,"strategy")).setColumnName(getAttr(attrs,"column"));
vermd.setIndexed(IndexedValue.getIndexedValue(getAttr(attrs,"indexed")));
pushStack(vermd);
}
else if (localName.equals("index"))
{
MetaData md = getStack();
IndexMetaData idxmd = new IndexMetaData();
idxmd.setName(getAttr(attrs,"name"));
idxmd.setTable(getAttr(attrs,"table"));
idxmd.setUnique(getAttr(attrs,"unique"));
if (md instanceof AbstractClassMetaData)
{
AbstractClassMetaData cmd = (AbstractClassMetaData)md;
cmd.addIndex(idxmd);
}
else if (md instanceof AbstractMemberMetaData)
{
AbstractMemberMetaData fmd = (AbstractMemberMetaData)md;
fmd.setIndexMetaData(idxmd);
}
else if (md instanceof JoinMetaData)
{
JoinMetaData jmd = (JoinMetaData)md;
jmd.setIndexMetaData(idxmd);
}
else if (md instanceof AbstractElementMetaData)
{
AbstractElementMetaData elmd = (AbstractElementMetaData)md;
elmd.setIndexMetaData(idxmd);
}
else if (md instanceof OrderMetaData)
{
OrderMetaData omd = (OrderMetaData)md;
omd.setIndexMetaData(idxmd);
}
else if (md instanceof VersionMetaData)
{
VersionMetaData vermd = (VersionMetaData)md;
vermd.setIndexMetaData(idxmd);
}
else if (md instanceof DiscriminatorMetaData)
{
DiscriminatorMetaData dismd = (DiscriminatorMetaData)md;
dismd.setIndexMetaData(idxmd);
}
pushStack(idxmd);
}
else if (localName.equals("unique"))
{
MetaData md = getStack();
UniqueMetaData unimd = new UniqueMetaData();
unimd.setName(getAttr(attrs,"name"));
unimd.setTable(getAttr(attrs,"table"));
unimd.setDeferred(getAttr(attrs,"deferred"));
if (md instanceof AbstractClassMetaData)
{
AbstractClassMetaData cmd = (AbstractClassMetaData)md;
cmd.addUniqueConstraint(unimd);
}
else if (md instanceof AbstractMemberMetaData)
{
AbstractMemberMetaData fmd = (AbstractMemberMetaData)md;
fmd.setUniqueMetaData(unimd);
}
else if (md instanceof JoinMetaData)
{
JoinMetaData jmd = (JoinMetaData)md;
jmd.setUniqueMetaData(unimd);
}
else if (md instanceof AbstractElementMetaData)
{
AbstractElementMetaData elmd = (AbstractElementMetaData)md;
elmd.setUniqueMetaData(unimd);
}
pushStack(unimd);
}
else if (localName.equals("foreign-key"))
{
MetaData md = getStack();
ForeignKeyMetaData fkmd = new ForeignKeyMetaData();
fkmd.setName(getAttr(attrs,"name"));
fkmd.setTable(getAttr(attrs,"table"));
fkmd.setUnique(getAttr(attrs,"unique"));
fkmd.setDeferred(getAttr(attrs,"deferred"));
fkmd.setDeleteAction(ForeignKeyAction.getForeignKeyAction(getAttr(attrs,"delete-action")));
fkmd.setUpdateAction(ForeignKeyAction.getForeignKeyAction(getAttr(attrs,"update-action")));
if (md instanceof AbstractClassMetaData)
{
AbstractClassMetaData cmd = (AbstractClassMetaData)md;
cmd.addForeignKey(fkmd);
}
else if (md instanceof AbstractMemberMetaData)
{
AbstractMemberMetaData fmd = (AbstractMemberMetaData)md;
fmd.setForeignKeyMetaData(fkmd);
}
else if (md instanceof JoinMetaData)
{
JoinMetaData jmd = (JoinMetaData)md;
jmd.setForeignKeyMetaData(fkmd);
}
else if (md instanceof AbstractElementMetaData)
{
AbstractElementMetaData elmd = (AbstractElementMetaData)md;
elmd.setForeignKeyMetaData(fkmd);
}
pushStack(fkmd);
}
else if (localName.equals("order"))
{
OrderMetaData ordmd = new OrderMetaData();
ordmd.setIndexed(IndexedValue.getIndexedValue(getAttr(attrs, "indexed")));
ordmd.setColumnName(getAttr(attrs, "column"));
ordmd.setMappedBy(getAttr(attrs, "mapped-by"));
AbstractMemberMetaData fmd = (AbstractMemberMetaData)getStack();
fmd.setOrderMetaData(ordmd);
pushStack(ordmd);
}
else if (localName.equals("embedded"))
{
MetaData md = getStack();
EmbeddedMetaData embmd = new EmbeddedMetaData();
embmd.setOwnerMember(getAttr(attrs,"owner-field"));
embmd.setNullIndicatorColumn(getAttr(attrs,"null-indicator-column"));
embmd.setNullIndicatorValue(getAttr(attrs,"null-indicator-value"));
if (md instanceof AbstractMemberMetaData)
{
AbstractMemberMetaData fmd = (AbstractMemberMetaData)md;
fmd.setEmbeddedMetaData(embmd);
}
else if (md instanceof KeyMetaData)
{
KeyMetaData kmd = (KeyMetaData)md;
kmd.setEmbeddedMetaData(embmd);
}
else if (md instanceof ValueMetaData)
{
ValueMetaData vmd = (ValueMetaData)md;
vmd.setEmbeddedMetaData(embmd);
}
else if (md instanceof ElementMetaData)
{
ElementMetaData elmd = (ElementMetaData)md;
elmd.setEmbeddedMetaData(embmd);
}
pushStack(embmd);
}
else
{