/**
* <p>Copyright: Copyright (c) 2012</p>
* <p>Company: �������ӹɷ�����˾</p>
*/
package com.hundsun.ares.studio.jres.basicdata.ui.util;
import org.apache.commons.lang.StringUtils;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.RefactoringStatus;
import org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext;
import org.eclipse.ltk.core.refactoring.participants.RenameParticipant;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.jres.basicdata.constant.IBasicDataRestypes;
import com.hundsun.ares.studio.jres.basicdata.manage.BasicdataDefineManageUtil;
/**
* @author lvgao
*
*/
public class BasicDataRenameParticipant extends RenameParticipant{
IARESResource resource ;
/* (non-Javadoc)
* @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#initialize(java.lang.Object)
*/
@Override
protected boolean initialize(Object element) {
if(element instanceof IARESResource){
resource = (IARESResource)element;
String type = resource.getType();
if(StringUtils.equals(type, IBasicDataRestypes.singleTable)
||StringUtils.equals(type, IBasicDataRestypes.MasterSlaveTable)
||StringUtils.equals(type, IBasicDataRestypes.MasterSlaveLinkTable)
||StringUtils.equals(type, "table")){
return true;
}
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#getName()
*/
@Override
public String getName() {
return "�������������ع�";
}
/* (non-Javadoc)
* @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#checkConditions(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.ltk.core.refactoring.participants.CheckConditionsContext)
*/
@Override
public RefactoringStatus checkConditions(IProgressMonitor pm,
CheckConditionsContext context) throws OperationCanceledException {
return new RefactoringStatus();
}
/* (non-Javadoc)
* @see org.eclipse.ltk.core.refactoring.participants.RefactoringParticipant#createChange(org.eclipse.core.runtime.IProgressMonitor)
*/
@Override
public Change createChange(IProgressMonitor pm) throws CoreException,
OperationCanceledException {
try {
IResource tres = resource.getResource();
IARESResource defResource = BasicdataDefineManageUtil.getDefineResource(resource.getARESProject(), false);
if(StringUtils.equals(tres.getFileExtension(), "table")){
IFile file = (IFile)defResource.getResource();
if(file.exists()){
return new EPackageDefineTableChange(defResource, resource.getName(), getArguments().getNewName());
}
}else{
String oldUrl = tres.getProjectRelativePath().toOSString();
String path = tres.getParent().getProjectRelativePath().toOSString();
String newURL = String.format("%s\\%s.%s", path,getArguments().getNewName(),tres.getFileExtension());
return new EPackageDefineURLChange(defResource, oldUrl, newURL);
}
} catch (Exception e) {
}
// EPackageUtil.get
return null;
}
}