/**
*
*/
package com.hundsun.ares.studio.jres.clearinghouse.core.script.impl;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.eclipse.emf.ecore.EObject;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.model.RevisionHistory;
import com.hundsun.ares.studio.jres.model.chouse.AddIndexModification;
import com.hundsun.ares.studio.jres.model.chouse.AddTableColumnModification;
import com.hundsun.ares.studio.jres.model.chouse.AddTableColumnPKModification;
import com.hundsun.ares.studio.jres.model.chouse.AddTableColumnUniqueModifycation;
import com.hundsun.ares.studio.jres.model.chouse.AddTableModification;
import com.hundsun.ares.studio.jres.model.chouse.ChangeTableColumnNullableModifycation;
import com.hundsun.ares.studio.jres.model.chouse.ChangeTableColumnPrimaryKeyModifycation;
import com.hundsun.ares.studio.jres.model.chouse.ChangeTableColumnTypeModification;
import com.hundsun.ares.studio.jres.model.chouse.ChangeTableColumnUniqueModifycation;
import com.hundsun.ares.studio.jres.model.chouse.Modification;
import com.hundsun.ares.studio.jres.model.chouse.RemoveConstraintModification;
import com.hundsun.ares.studio.jres.model.chouse.RemoveIndexModification;
import com.hundsun.ares.studio.jres.model.chouse.RemoveTableColumnModification;
import com.hundsun.ares.studio.jres.model.chouse.RemoveTableColumnPKModification;
import com.hundsun.ares.studio.jres.model.chouse.RemoveTableColumnUniqueModifycation;
import com.hundsun.ares.studio.jres.model.chouse.RenameTableColumnModification;
import com.hundsun.ares.studio.jres.model.chouse.RevisionHistoryProperty;
import com.hundsun.ares.studio.jres.model.chouse.impl.AddConstraintModificationImpl;
import com.hundsun.ares.studio.jres.model.chouse.impl.AddIndexFieldModificationImpl;
import com.hundsun.ares.studio.jres.model.chouse.impl.AddIndexModificationImpl;
import com.hundsun.ares.studio.jres.model.chouse.impl.ChangeTableColumnTypeModificationImpl;
import com.hundsun.ares.studio.jres.model.chouse.impl.RemoveIndexFieldModificationImpl;
import com.hundsun.ares.studio.jres.model.database.TableColumn;
import com.hundsun.ares.studio.jres.model.database.TableIndex;
import com.hundsun.ares.studio.jres.model.database.TableKey;
import com.hundsun.ares.studio.jres.script.api.database.ITableColScriptWrap;
import com.hundsun.ares.studio.jres.script.api.database.ITableIndexScriptWrap;
import com.hundsun.ares.studio.jres.script.api.database.ITableKeyScriptWrap;
import com.hundsun.ares.studio.jres.script.api.database.ITableScriptWrap;
import com.hundsun.ares.studio.jres.script.api.wrap.IModificationScriptWrap;
import com.hundsun.ares.studio.jres.script.api.wrap.ITableRevHistoryScriptWrap;
/**
* @author yanwj06282
*
*/
public class TableRevHistoryScriptWrapImpl extends RevHistoryScriptWrapImpl implements ITableRevHistoryScriptWrap {
public TableRevHistoryScriptWrapImpl(RevisionHistory history ,IARESResource resource) {
super(history ,resource);
}
public String getActionType (){
EObject stock3 = getOriginalInfo().getData2().get("Stock3");
if (stock3 instanceof RevisionHistoryProperty) {
Modification modify = ((RevisionHistoryProperty) stock3).getAction();
if (modify != null) {
return modify.eClass().getName();
}
}
return StringUtils.EMPTY;
}
public ITableScriptWrap getTableInfo (){
ITableScriptWrap table = new TableScriptWrapImpl(resource);
EObject stock3 = getOriginalInfo().getData2().get("Stock3");
if (stock3 instanceof RevisionHistoryProperty) {
Modification modify = ((RevisionHistoryProperty) stock3).getAction();
if (modify instanceof AddTableModification) {
List<ITableIndexScriptWrap> tableIndexs = new ArrayList<ITableIndexScriptWrap>();
List<ITableColScriptWrap> tableCols = new ArrayList<ITableColScriptWrap>();
List<ITableKeyScriptWrap> tableKeys = new ArrayList<ITableKeyScriptWrap>();
for (TableIndex index : ((AddTableModification)modify).getIndexes()){
tableIndexs.add(new TableIndexScriptWrapImpl(table,index, resource));
}
table.setTableIndexs(tableIndexs);
for (TableColumn column : ((AddTableModification)modify).getColumns()){
tableCols.add(new TableColScriptWrapImpl(column, resource));
}
table.setTableColumns(tableCols);
for (TableKey tk : ((AddTableModification)modify).getKeys()){
tableKeys.add(new TableKeyScriptWrapImpl(tk, resource));
}
table.setTableKeys(tableKeys);
}
}
return table;
}
public IModificationScriptWrap getAction (){
EObject stock3 = getOriginalInfo().getData2().get("Stock3");
if (stock3 instanceof RevisionHistoryProperty) {
Modification modify = ((RevisionHistoryProperty) stock3).getAction();
if (modify instanceof AddIndexModification) {
return new AddIndexModificationScriptWrapImpl((AddIndexModificationImpl)modify, resource);
}else if (modify instanceof AddTableColumnModification) {
return new AddColModificationScriptWrapImpl((AddTableColumnModification)modify, resource);
}else if (modify instanceof AddTableModification) {
return new AddTableModificationScriptWrapImpl((AddTableModification)modify, resource);
}else if (modify instanceof ChangeTableColumnTypeModificationImpl) {
return new TableColTypeModificationScriptWrapImpl((ChangeTableColumnTypeModification)modify, resource);
}else if (modify instanceof ChangeTableColumnNullableModifycation) {
return new TableColNullableModificationScriptWrapImpl((ChangeTableColumnNullableModifycation)modify, resource);
}else if (modify instanceof ChangeTableColumnPrimaryKeyModifycation) {
return new TableColPKModificationScriptWrapImpl((ChangeTableColumnPrimaryKeyModifycation)modify, resource);
}else if (modify instanceof RemoveTableColumnPKModification) {
return new RemovePKModificationScriptWrapImpl((RemoveTableColumnPKModification)modify, resource);
}else if (modify instanceof AddTableColumnPKModification) {
return new AddPKModificationScriptWrapImpl((AddTableColumnPKModification)modify, resource);
}else if (modify instanceof AddTableColumnUniqueModifycation) {
return new AddUniqueModificationScriptWrapImpl((AddTableColumnUniqueModifycation)modify, resource);
}else if (modify instanceof ChangeTableColumnUniqueModifycation) {
return new TableColUniqueModificationScriptWrapImpl((ChangeTableColumnUniqueModifycation)modify, resource);
}else if (modify instanceof RemoveTableColumnUniqueModifycation) {
return new RemoveUniqueModificationScriptWrapImpl((RemoveTableColumnUniqueModifycation)modify, resource);
}else if (modify instanceof RemoveIndexModification) {
return new RemoveIndexModificationScriptWrapImpl((RemoveIndexModification)modify, resource);
}else if (modify instanceof RemoveTableColumnModification) {
return new RemoveColModificationScriptWrapImpl((RemoveTableColumnModification)modify, resource);
}else if (modify instanceof RenameTableColumnModification) {
return new RenameTableColModificationScriptWrapImpl((RenameTableColumnModification)modify, resource);
}else if (modify instanceof AddConstraintModificationImpl) {
return new AddConstraintModificationScriptWrapImpl((AddConstraintModificationImpl) modify, resource);
} else if (modify instanceof RemoveConstraintModification) {
return new RemoveConstraintModificationScriptWrap((RemoveConstraintModification)modify, resource);
}else if (modify instanceof AddIndexFieldModificationImpl) {
return new AddIndexFieldModificationScriptWrapImpl((AddIndexFieldModificationImpl) modify, resource);
} else if (modify instanceof RemoveIndexFieldModificationImpl) {
return new RemoveIndexIndexModificationScriptWrapImpl((RemoveIndexFieldModificationImpl)modify, resource);
}
}
return null;
}
}