package com.hundsun.ares.studio.jres.clearinghouse.composite; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.TransactionalEditingDomain; import org.eclipse.swt.widgets.Composite; import com.hundsun.ares.studio.core.model.CoreFactory; import com.hundsun.ares.studio.core.model.RevisionHistory; import com.hundsun.ares.studio.jres.clearinghouse.ui.action.IWizardComposite; import com.hundsun.ares.studio.jres.model.chouse.ChouseFactory; import com.hundsun.ares.studio.jres.model.chouse.ConstraintModifyDetail; import com.hundsun.ares.studio.jres.model.chouse.IStock3Constant; import com.hundsun.ares.studio.jres.model.chouse.Modification; import com.hundsun.ares.studio.jres.model.chouse.RevisionHistoryProperty; import com.hundsun.ares.studio.jres.model.chouse.util.StockUtils; import com.hundsun.ares.studio.jres.model.database.DatabaseFactory; import com.hundsun.ares.studio.jres.model.database.ForeignKey; import com.hundsun.ares.studio.jres.model.database.TableColumn; import com.hundsun.ares.studio.jres.model.database.TableKey; import com.hundsun.ares.studio.jres.model.database.TableResourceData; import com.hundsun.ares.studio.jres.model.database.key_type; import com.hundsun.ares.studio.jres.model.database.util.DatabaseUtil; import com.hundsun.ares.studio.ui.editor.EMFFormEditor; public class AddConstraintWizardComposite extends AddConstraintComposite implements IWizardComposite { private EditingDomain domain; //private AddTableColumnModification action = ChouseFactory.eINSTANCE.createAddTableColumnModification(); private TableResourceData table; public AddConstraintWizardComposite(Composite comp, EMFFormEditor editorPart, Modification action) { super(comp, (TableResourceData)editorPart.getInfo(), editorPart.getARESResource(), action); this.resource = editorPart.getARESResource(); table = (TableResourceData) editorPart.getInfo(); this.domain = editorPart.getEditingDomain(); } @Override public Command getCommand() { return new RecordingCommand((TransactionalEditingDomain) domain) { @Override protected void doExecute() { for (ConstraintModifyDetail detail : input) { TableKey key = DatabaseFactory.eINSTANCE.createTableKey(); key.setMark(detail.getMark()); key.setName(detail.getName()); for (TableColumn column : detail.getColumns()) { TableColumn col = DatabaseUtil.findColumn(column.getName(), table); if (col != null) { key.getColumns().add(col); } } key.setType(detail.getType()); if (detail.getType() == key_type.FOREIGN) { for (ForeignKey fk : detail.getForeignKey()) { key.getForeignKey().add(EcoreUtil.copy(fk)); } } table.getKeys().add(key); } //�����޸���Ϣ RevisionHistory rh = CoreFactory.eINSTANCE.createRevisionHistory(); RevisionHistoryProperty p = ChouseFactory.eINSTANCE.createRevisionHistoryProperty(); p.setAction(getAction()); rh.setModified(StockUtils.getModificationDescription(table, getAction())); rh.getData2().put(IStock3Constant.HISTORY_DATA2_KEY, p); // 2012-05-18 sundl �޸ļ�¼�Զ���ӵ���һ����¼ table.getHistories().add(0, rh); }; }; } }