/*
* generated by Xtext
*/
package com.robotoworks.mechanoid.db.ui.labeling;
import java.util.ArrayList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
import org.eclipse.xtext.serializer.ISerializer;
import org.eclipse.xtext.ui.label.DefaultEObjectLabelProvider;
import org.eclipse.xtext.util.Strings;
import com.google.common.collect.Lists;
import com.google.inject.Inject;
import com.robotoworks.mechanoid.db.sqliteModel.ActionStatement;
import com.robotoworks.mechanoid.db.sqliteModel.AlterTableAddColumnStatement;
import com.robotoworks.mechanoid.db.sqliteModel.AlterTableRenameStatement;
import com.robotoworks.mechanoid.db.sqliteModel.ColumnConstraint;
import com.robotoworks.mechanoid.db.sqliteModel.ColumnDef;
import com.robotoworks.mechanoid.db.sqliteModel.ConfigBlock;
import com.robotoworks.mechanoid.db.sqliteModel.CreateIndexStatement;
import com.robotoworks.mechanoid.db.sqliteModel.CreateTableStatement;
import com.robotoworks.mechanoid.db.sqliteModel.CreateTriggerStatement;
import com.robotoworks.mechanoid.db.sqliteModel.CreateViewStatement;
import com.robotoworks.mechanoid.db.sqliteModel.DatabaseBlock;
import com.robotoworks.mechanoid.db.sqliteModel.DropTableStatement;
import com.robotoworks.mechanoid.db.sqliteModel.DropViewStatement;
import com.robotoworks.mechanoid.db.sqliteModel.InitBlock;
import com.robotoworks.mechanoid.db.sqliteModel.MigrationBlock;
import com.robotoworks.mechanoid.db.sqliteModel.Model;
import com.robotoworks.mechanoid.db.sqliteModel.PrimaryKeyColumnConstraint;
import com.robotoworks.mechanoid.db.sqliteModel.ResultColumn;
import com.robotoworks.mechanoid.db.sqliteModel.SingleSourceTable;
import com.robotoworks.mechanoid.db.sqliteModel.TableConstraint;
/**
* Provides labels for a EObjects.
*
* see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
*/
public class SqliteModelLabelProvider extends DefaultEObjectLabelProvider {
@Inject ISerializer serializer;
@Inject
public SqliteModelLabelProvider(AdapterFactoryLabelProvider delegate) {
super(delegate);
}
/*
//Labels and icons can be computed like this:
String text(MyModel ele) {
return "my "+ele.getName();
}
String image(MyModel ele) {
return "MyModel.gif";
}
*/
public String text(ColumnDef e) {
PrimaryKeyColumnConstraint c = findPrimaryKeyConstraint(e.getConstraints());
ArrayList<String> parts = Lists.newArrayList();
parts.add("PK");
if(c.isDesc()) {
parts.add("desc");
} else {
parts.add("asc");
}
if(c.isAutoincrement()) {
parts.add("autoincrement");
}
String info = " (" + Strings.concat(", ", parts) + ")";
return e.getName() + info;
}
public String text(ConfigBlock e) {
return "Configuration";
}
public String text(InitBlock e) {
return "Initialization";
}
public String text(AlterTableAddColumnStatement e) {
return "Add column to " + e.getTable().getName();
}
public String text(MigrationBlock e) {
int version = ((DatabaseBlock)e.eContainer()).getMigrations().indexOf(e) + 1;
return "Migration (v" + version + ")";
}
public String image(ConfigBlock e) {
return "actions.gif";
}
public String image(InitBlock e) {
return "actions.gif";
}
public String image(ActionStatement e) {
return "action.gif";
}
public String image(DatabaseBlock e) {
return "database.gif";
}
public String image(MigrationBlock e) {
return "migration.gif";
}
public String image(Model e) {
return "package.gif";
}
public String image(CreateIndexStatement e) {
return "index.gif";
}
public String image(ColumnDef e) {
if(findPrimaryKeyConstraint(e.getConstraints()) != null) {
return "key.gif";
}
return "column.gif";
}
public String image(AlterTableAddColumnStatement e) {
EList<ColumnConstraint> constraints = ((ColumnDef)e.getColumnDef()).getConstraints();
if(findPrimaryKeyConstraint(constraints) != null) {
return "key.gif";
}
return "column.gif";
}
public String image(PrimaryKeyColumnConstraint e) {
return "key.gif";
}
public String image(ResultColumn e) {
if(e.getName() == null) {
return "column.gif";
} else {
return "aliased_column.gif";
}
}
public String image(CreateTableStatement e) {
return "table.gif";
}
public String image(CreateViewStatement e) {
return "table.gif";
}
public String image(AlterTableRenameStatement e) {
return "table.gif";
}
public String image(SingleSourceTable e) {
return "table.gif";
}
public String image(TableConstraint e) {
return "constraint.gif";
}
public String image(ColumnConstraint e) {
return "constraint.gif";
}
public String image(CreateTriggerStatement e) {
return "trigger.gif";
}
private PrimaryKeyColumnConstraint findPrimaryKeyConstraint(EList<ColumnConstraint> constraints) {
if(constraints!= null) {
for(ColumnConstraint c : constraints) {
if(c instanceof PrimaryKeyColumnConstraint) {
return (PrimaryKeyColumnConstraint) c;
}
}
}
return null;
}
public String text(DropViewStatement e) {
return e.getView().getName();
}
public String image(DropViewStatement e) {
return "drop_table.gif";
}
public String text(DropTableStatement e) {
return e.getTable().getName();
}
public String image(DropTableStatement e) {
return "drop_table.gif";
}
}