package com.robotoworks.mechanoid.db.naming; import java.util.List; import org.eclipse.emf.ecore.EObject; import org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider; import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.nodemodel.INode; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; import com.robotoworks.mechanoid.db.sqliteModel.ColumnDef; import com.robotoworks.mechanoid.db.sqliteModel.Model; import com.robotoworks.mechanoid.db.sqliteModel.SingleSourceTable; import com.robotoworks.mechanoid.db.sqliteModel.SqliteModelPackage; import com.robotoworks.mechanoid.db.sqliteModel.TableDefinition; import com.robotoworks.mechanoid.db.util.ModelUtil; public class SqliteQualifiedNameProvider extends DefaultDeclarativeQualifiedNameProvider { protected QualifiedName qualifiedName(ColumnDef ele){ return QualifiedName.create(ele.getName()); } protected QualifiedName qualifiedName(SingleSourceTable ele){ if(ele.getName() != null) { return null; } List<INode> nodes = NodeModelUtils.findNodesForFeature(ele, SqliteModelPackage.Literals.SINGLE_SOURCE_TABLE__TABLE_REFERENCE); String tableName = NodeModelUtils.getTokenText(nodes.get(0)); QualifiedName name = null; EObject temp = ele; while (temp.eContainer() != null) { temp = temp.eContainer(); QualifiedName parentsQualifiedName = getFullyQualifiedName(temp); if (parentsQualifiedName != null) { name = parentsQualifiedName; break; } } return name.append(tableName); } protected QualifiedName qualifiedName(TableDefinition ele){ Model model = ModelUtil.getAncestorOfType(ele, Model.class); return QualifiedName.create(model.getPackageName(), ele.getName()); } }