buf.append(proxiedFormat.getId());
buf.append("\" proxiedTypeClass=\"");
buf.append(proxiedFormat.getClassName());
buf.append('"');
}
PrimaryKeyMetadata priMeta = null;
Map<String, SecondaryKeyMetadata> secondaryKeys = null;
List<FieldMetadata> compositeKeyFields = null;
ClassMetadata clsMeta = getClassMetadata();
if (clsMeta != null) {
compositeKeyFields = clsMeta.getCompositeKeyFields();
priMeta = clsMeta.getPrimaryKey();
secondaryKeys = clsMeta.getSecondaryKeys();
}
buf.append(" kind=\"");
buf.append(isEntity() ? "entity" :
((compositeKeyFields != null) ? "compositeKey" :
"persistent"));
buf.append("\">\n");
Map<String, RawField> fields = getFields();
if (fields != null) {
for (RawField field : fields.values()) {
String name = field.getName();
RawType type = field.getType();
buf.append(INDENT);
buf.append("<Field");
buf.append(" name=\"");
buf.append(name);
buf.append("\" typeId=\"");
buf.append(type.getId());
buf.append("\" typeClass=\"");
buf.append(type.getClassName());
buf.append('"');
if (priMeta != null &&
priMeta.getName().equals(name)) {
buf.append(" primaryKey=\"true\"");
if (priMeta.getSequenceName() != null) {
buf.append(" sequence=\"");
buf.append(priMeta.getSequenceName());
buf.append('"');
}
}
if (secondaryKeys != null) {
SecondaryKeyMetadata secMeta =
ComplexFormat.getSecondaryKeyMetadataByFieldName
(secondaryKeys, name);
if (secMeta != null) {
buf.append(" secondaryKey=\"true\" keyName=\"");
buf.append(secMeta.getKeyName());
buf.append("\" relate=\"");
buf.append(secMeta.getRelationship());
buf.append('"');
String related = secMeta.getRelatedEntity();
if (related != null) {
buf.append("\" relatedEntity=\"");
buf.append(related);
buf.append("\" onRelatedEntityDelete=\"");
buf.append(secMeta.getDeleteAction());
buf.append('"');
}
}
}
if (compositeKeyFields != null) {
int nFields = compositeKeyFields.size();
for (int i = 0; i < nFields; i += 1) {
FieldMetadata fldMeta = compositeKeyFields.get(i);
if (fldMeta.getName().equals(name)) {
buf.append(" compositeKeyField=\"");
buf.append(i + 1);
buf.append('"');
}
}
}
buf.append("/>\n");
}
EntityMetadata entMeta = getEntityMetadata();
if (entMeta != null) {
buf.append(INDENT);
buf.append("<EntityKeys>\n");
priMeta = entMeta.getPrimaryKey();
if (priMeta != null) {
buf.append(INDENT2);
buf.append("<Primary class=\"");
buf.append(priMeta.getDeclaringClassName());
buf.append("\" field=\"");
buf.append(priMeta.getName());
buf.append("\"/>\n");
}
secondaryKeys = entMeta.getSecondaryKeys();
if (secondaryKeys != null) {
for (SecondaryKeyMetadata secMeta :