package org.erlide.ui.editors.erl.correction.fixes;
import java.io.ByteArrayInputStream;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
import org.eclipse.jface.dialogs.MessageDialog;
import org.erlide.engine.ErlangEngine;
import org.erlide.engine.model.root.IErlModel;
import org.erlide.engine.model.root.IErlModule;
import org.erlide.ui.editors.erl.correction.MarkerQuickFixExecutor;
import org.erlide.util.Util;
public class RenameModuleQuickFix extends MarkerQuickFixExecutor {
@Override
public void run() throws Exception {
final IMarker marker = getMarker();
final List<String> margs = getQuickFix().getArgs();
final String moduleName = margs.get(0);
final IErlModel svc = ErlangEngine.getInstance().getModel();
IErlModule newModule;
newModule = svc.findModule(moduleName);
if (newModule != null) {
MessageDialog.openInformation(null, "Rename module quickfix",
"A module with name '" + moduleName + "' already exists.");
newModule.dispose();
return;
}
final IFile file = (IFile) marker.getResource();
final IErlModule oldModule = svc.findModule(file);
if (oldModule == null) {
return;
}
String in = Util.getInputStreamAsString(file.getContents(), file.getCharset());
in = in.replaceFirst("-module\\([^)]+\\)\\.", "-module(" + moduleName + ").");
file.setContents(new ByteArrayInputStream(in.getBytes()), IResource.FORCE, null);
}
}