package com.hundsun.ares.studio.ui.editor.wizard;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.wizard.Wizard;
import com.hundsun.ares.studio.core.ARESModelException;
import com.hundsun.ares.studio.core.IARESModule;
import com.hundsun.ares.studio.core.IARESProject;
import com.hundsun.ares.studio.core.IARESResource;
import com.hundsun.ares.studio.core.model.Constants;
import com.hundsun.ares.studio.core.model.CoreFactory;
import com.hundsun.ares.studio.core.model.JRESResourceInfo;
import com.hundsun.ares.studio.core.model.ModuleProperty;
import com.hundsun.ares.studio.core.model.RevisionHistory;
public class BatchAddModifyLogWizard extends Wizard {
BatchAddModifyLogPage page;
IARESProject project ;
public BatchAddModifyLogWizard(IARESProject project) {
this.project = project;
setNeedsProgressMonitor(true);
}
@Override
public void addPages() {
page = new BatchAddModifyLogPage("��������ļ�¼",project);
addPage(page);
}
@Override
public boolean performFinish() {
final List<Object>resources = page.getSelection();
final List<RevisionHistory> input = page.getViewerInput();
if(input.size() <= 0){
MessageDialog.openError(getShell(), "�ļ�¼Ϊ��", "�ļ�¼Ϊ�գ�������ļ�¼��");
return false;
}
try {
getContainer().run(true, false, new IRunnableWithProgress() {
@Override
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
monitor.beginTask("��������ļ�¼", resources.size());
addHistory(resources,input,monitor);
}
});
} catch (InvocationTargetException e1) {
e1.printStackTrace();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
return true;
}
public void addHistory(List<Object>resources,List<RevisionHistory> input,IProgressMonitor monitor){
for(Object obj : resources){
//��Դ
if(obj instanceof IARESResource){
IARESResource res = (IARESResource)obj;
try{
//��ͨ��Դ
JRESResourceInfo info = res.getInfo(JRESResourceInfo.class);
if(info != null){
for(int index = input.size() -1;index >= 0;index--){
info.getHistories().add(0, input.get(index));
}
res.save(info, true, new NullProgressMonitor());
}
}catch(ARESModelException e){
e.printStackTrace();
}
}
//ģ�鴦��
if(obj instanceof IARESModule){
IARESModule module = (IARESModule)obj;
IARESResource res = module.getARESResource(IARESModule.MODULE_PROPERTY_FILE);
try {
ModuleProperty mp = res.getInfo(ModuleProperty.class);
JRESResourceInfo info = (JRESResourceInfo) mp.getMap().get(Constants.RevisionHistory.MODULE_REVISION_EXT_KEY);
if(null == info){
info = CoreFactory.eINSTANCE.createModuleRevisionHistoryList();
mp.getMap().put(Constants.RevisionHistory.MODULE_REVISION_EXT_KEY, info);
}
for(int index = input.size() -1;index >= 0;index--){
info.getHistories().add(0, input.get(index));
}
//����
res.save(mp, true, new NullProgressMonitor());
} catch (Exception e) {
e.printStackTrace();
}
}
monitor.worked(1);
}
monitor.done();
}
}