/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.eas.client.model.store;
import com.eas.client.model.Relation;
import com.eas.client.model.dbscheme.DbSchemeModel;
import com.eas.client.model.dbscheme.FieldsEntity;
import com.eas.client.model.visitors.ModelVisitor;
import java.util.Set;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
/**
*
* @author mg
*/
public class DbSchemeModel2XmlDom extends Model2XmlDom<FieldsEntity, DbSchemeModel> implements ModelVisitor<FieldsEntity, DbSchemeModel> {
public static Document transform(DbSchemeModel aModel) {
DbSchemeModel2XmlDom transformer = new DbSchemeModel2XmlDom();
return transformer.model2XmlDom(aModel);
}
@Override
public void visit(FieldsEntity entity) {
if (entity != null) {
Element node = doc.createElement(FIELDS_ENTITY_TAG_NAME);
currentNode.appendChild(node);
node.setAttribute(ENTITY_ID_ATTR_NAME, String.valueOf(entity.getEntityId()));
node.setAttribute(TABLE_NAME_ATTR_NAME, entity.getTableName());
writeEntityDesignAttributes(node, entity);
}
}
@Override
public void visit(DbSchemeModel aModel) {
Set<Relation<FieldsEntity>> rels = aModel.getRelations();
aModel.setRelations(null);// Avoid relations serialization. All Neccessary information will be restorerd from database
try {
writeModel(aModel);
} finally {
aModel.setRelations(rels);
}
if (currentNode != null && currentNode instanceof Element) {
Element el = (Element) currentNode;
el.setAttribute(DATAMODEL_DATASOURCE, String.valueOf(aModel.getDatasourceName()));
String lSchema = aModel.getSchema();
if (lSchema != null) {
el.setAttribute(DATAMODEL_DATASOURCE_SCHEMA_NAME, String.valueOf(lSchema));
}
}
}
}