package com.hundsun.ares.studio.ui.editor.actions; import java.util.Arrays; import java.util.List; import org.apache.commons.lang.StringUtils; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.jface.viewers.ColumnViewer; import org.eclipse.ui.plugin.AbstractUIPlugin; import com.hundsun.ares.studio.core.IARESModule; import com.hundsun.ares.studio.core.IARESResource; import com.hundsun.ares.studio.core.model.JRESResourceInfo; import com.hundsun.ares.studio.core.model.RevisionHistory; import com.hundsun.ares.studio.core.model.util.RevisionHistoryUtil; import com.hundsun.ares.studio.core.util.ARESElementUtil; import com.hundsun.ares.studio.ui.editor.ARESEditorPlugin; /** * �Ӽ�¼ * @author sundl * */ public class AddRevisionHistoryRecordAction extends AddRevisionHistoryAction { public static final String ID = "add_revision_history_id"; private IARESResource aresResource; public AddRevisionHistoryRecordAction(ColumnViewer viewer, EditingDomain editingDomain, EObject info, EReference eReference, IARESResource aresResource) { super(viewer, editingDomain, info, eReference); this.aresResource = aresResource; setId(ID); setText("�Ӽ�¼"); setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(ARESEditorPlugin.PLUGIN_ID, "icons/full/obj16/addRevisionRecord.png")); } public void setInfo(JRESResourceInfo info) { this.info = info; } @Override protected String getVersion() { // 2012-09-28 sundl �������汾��ʱ��ֻȡ��Դ���ڵĵ�ǰ���ģ�� // 2012-11-21 sundl ���ݿ��µ���Դ������ģ����㣻 �����ط�����Դ��Ȼȡ��ǰģ�� // 2012-12-28 sundl Ԫ�����µ� ��Դ������ģ�飬ֻ�ڱ���Դ����Ŀ������ȡ���ֵ // 2014��4��9��16:50:15 ��Ԫ UFT������Ҫȡ���ж�����Դ�İ汾 // ģ�����������Դ�����汾 String moduleRootVersion = null; IARESModule topModule = null; if (aresResource == null) { topModule = null; } else { String rootType = aresResource.getRoot().getType(); if (ARESElementUtil.isDatabaseRoot(rootType)) { topModule = ARESElementUtil.getTopModule(aresResource); } else if (ARESElementUtil.isMetadataRoot(rootType)) { // topModuleΪnull��Ч�����Dz�����ģ�� topModule = null; } else if(ARESElementUtil.isUFTStructureRoot(rootType)) { topModule = null; moduleRootVersion = RevisionHistoryUtil.getMaxVersionByModuleRoot(aresResource.getRoot()); } else { topModule = aresResource.getModule(); } } // ��ǰ�Ѿ��������Դ�е����汾 String currentVersion = RevisionHistoryUtil.getMaxVersion(topModule); // ��ǰ�༭���е����汾 String maxInEditor = RevisionHistoryUtil.getMaxVersion((List<RevisionHistory>)info.eGet(eReference)); // ��Ŀ���� String projectVersion = RevisionHistoryUtil.getProjectPropertyVersion(aresResource.getARESProject()); // ������3�����ֵ String versionStr = RevisionHistoryUtil.max(Arrays.asList(currentVersion, maxInEditor, projectVersion,moduleRootVersion)); // ��һ���Ҳ����κμ�¼��ʱ�� if (StringUtils.isEmpty(versionStr)) { versionStr = "1.0.0.0"; } return versionStr; } // ��Ϊ������Action��ִ�н����������Ŀ���ԣ������޷�����������ÿ��ִ�ж����´�������֤ˢ�¡� @Override public Command getCommand() { return createCommand(); } }