artifacts & conversion fixes

This commit is contained in:
Nikolay Chashnikov
2009-09-10 14:34:49 +04:00
parent be3dcbd215
commit f2fe68c328
11 changed files with 39 additions and 50 deletions
@@ -138,16 +138,17 @@ public class ArtifactManagerImpl extends ArtifactManager implements ProjectCompo
LOG.info("Unknown artifact type: " + state.getArtifactType());
continue;
}
final String artifactName = state.getName();
final CompositePackagingElement<?> rootElement;
if (element != null) {
rootElement = (CompositePackagingElement<?>)deserializeElement(element);
}
else {
rootElement = type.createRootElement();
rootElement = type.createRootElement(artifactName);
}
final ArtifactImpl artifact = new ArtifactImpl(state.getName(), type, state.isBuildOnMake(), rootElement, state.getOutputPath(),
final ArtifactImpl artifact = new ArtifactImpl(artifactName, type, state.isBuildOnMake(), rootElement, state.getOutputPath(),
state.isClearOutputOnRebuild());
final List<ArtifactPropertiesState> propertiesList = state.getPropertiesList();
for (ArtifactPropertiesState propertiesState : propertiesList) {
@@ -1,7 +1,7 @@
package com.intellij.packaging.impl.artifacts;
import com.intellij.packaging.impl.artifacts.ArtifactUtil;
import com.intellij.packaging.artifacts.*;
import com.intellij.packaging.elements.CompositePackagingElement;
import com.intellij.util.EventDispatcher;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -51,8 +51,9 @@ public class ArtifactModelImpl extends ArtifactModelBase implements ModifiableAr
public ModifiableArtifact addArtifact(@NotNull final String name, @NotNull ArtifactType artifactType) {
final String outputPath = ArtifactUtil.getDefaultArtifactOutputPath(name, myArtifactManager.getProject());
final ArtifactImpl artifact = new ArtifactImpl(generateUniqueName(name), artifactType, false, artifactType.createRootElement(),
outputPath, true);
final String artifactName = generateUniqueName(name);
final CompositePackagingElement<?> rootElement = artifactType.createRootElement(artifactName);
final ArtifactImpl artifact = new ArtifactImpl(artifactName, artifactType, false, rootElement, outputPath, true);
myOriginalArtifacts.add(artifact);
myArtifact2ModifiableCopy.put(artifact, artifact);
myModifiable2Original.put(artifact, artifact);
@@ -45,7 +45,7 @@ public class PlainArtifactType extends ArtifactType {
}
@NotNull
public CompositePackagingElement<?> createRootElement() {
public CompositePackagingElement<?> createRootElement(@NotNull String artifactName) {
return new ArtifactRootElementImpl();
}
}
@@ -63,7 +63,7 @@ public abstract class ArtifactType {
}
@NotNull
public abstract CompositePackagingElement<?> createRootElement();
public abstract CompositePackagingElement<?> createRootElement(@NotNull String artifactName);
public void checkRootElement(@NotNull CompositePackagingElement<?> rootElement, @NotNull Artifact artifact, @NotNull ArtifactValidationManager manager) {
}
@@ -104,7 +104,7 @@ public class ArtifactConfigurable extends NamedConfigurable<Artifact> {
final ArtifactType selected = (ArtifactType)artifactTypeBox.getSelectedItem();
if (!Comparing.equal(selected, getArtifact().getArtifactType())) {
final CompositePackagingElement<?> element = myEditor.getRootElement();
final CompositePackagingElement<?> newRootElement = selected.createRootElement();
final CompositePackagingElement<?> newRootElement = selected.createRootElement(getArtifact().getName());
myArtifactsStructureContext.getModifiableArtifactModel().getOrCreateModifiableArtifact(myOriginalArtifact).setArtifactType(selected);
if (!newRootElement.getType().equals(element.getType())) {
ArtifactUtil.copyChildren(element, newRootElement, myArtifactsStructureContext.getProject());
@@ -23,6 +23,7 @@ import com.intellij.packaging.artifacts.ModifiableArtifact;
import com.intellij.packaging.elements.CompositePackagingElement;
import com.intellij.packaging.elements.PackagingElementType;
import com.intellij.packaging.impl.artifacts.ArtifactUtil;
import com.intellij.packaging.impl.elements.ArchivePackagingElement;
import com.intellij.packaging.ui.ManifestFileConfiguration;
import com.intellij.ui.PopupHandler;
import com.intellij.ui.ScrollPaneFactory;
@@ -276,6 +277,17 @@ public class ArtifactEditorImpl implements ArtifactEditorEx {
final String oldDefaultPath = ArtifactUtil.getDefaultArtifactOutputPath(oldArtifactName, myProject);
if (Comparing.equal(oldDefaultPath, getConfiguredOutputPath())) {
setOutputPath(ArtifactUtil.getDefaultArtifactOutputPath(newArtifactName, myProject));
final CompositePackagingElement<?> root = getRootElement();
if (root instanceof ArchivePackagingElement) {
final String name = ((ArchivePackagingElement)root).getArchiveFileName();
final String fileName = FileUtil.getNameWithoutExtension(name);
final String extension = FileUtil.getExtension(name);
if (fileName.equals(oldArtifactName) && extension.length() > 0) {
myLayoutTreeComponent.ensureRootIsWritable();
((ArchivePackagingElement)getRootElement()).setArchiveFileName(newArtifactName + "." + extension);
myLayoutTreeComponent.updateTreeNodesPresentation();
}
}
}
}
@@ -8,7 +8,6 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
/**
* @author nik
@@ -36,10 +35,6 @@ public class ComponentManagerSettingsImpl implements ComponentManagerSettings {
return mySettingsFile.findComponent(componentName);
}
public void save() throws IOException {
mySettingsFile.save();
}
public File getFile() {
return mySettingsFile.getFile();
}
@@ -6,10 +6,10 @@ import com.intellij.conversion.*;
import com.intellij.ide.highlighter.ProjectFileType;
import com.intellij.ide.highlighter.WorkspaceFileType;
import com.intellij.ide.impl.convert.JDomConvertingUtil;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.components.ExpandMacroToPathMap;
import com.intellij.openapi.components.StorageScheme;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.module.impl.ModuleManagerImpl;
import com.intellij.openapi.roots.impl.libraries.LibraryImpl;
import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar;
@@ -18,7 +18,6 @@ import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.util.PathUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
@@ -67,10 +66,6 @@ public class ConversionContextImpl implements ConversionContext {
}
myModuleFiles = findModuleFiles(JDomConvertingUtil.loadDocument(modulesFile).getRootElement());
if (ApplicationManager.getApplication().isUnitTestMode()) {
System.out.println("myStorageScheme = " + myStorageScheme);
System.out.println("myModuleFiles = " + Arrays.toString(myModuleFiles));
}
}
@NotNull
@@ -276,18 +271,12 @@ public class ConversionContextImpl implements ConversionContext {
return myWorkspaceFile;
}
public void saveFiles() throws IOException {
if (myWorkspaceSettings != null) {
myWorkspaceSettings.save();
}
if (myProjectSettings != null) {
myProjectSettings.save();
}
for (ModuleSettingsImpl settings : myModuleSettingsMap.values()) {
settings.save();
}
if (myRunManagerSettings != null) {
myRunManagerSettings.save();
public void saveFiles(Collection<File> files) throws IOException {
for (File file : files) {
final SettingsXmlFile xmlFile = mySettingsFiles.get(file);
if (xmlFile != null) {
xmlFile.save();
}
}
}
@@ -6,7 +6,6 @@ import com.intellij.conversion.ConversionService;
import com.intellij.conversion.ConverterProvider;
import com.intellij.conversion.impl.ui.ConvertProjectDialog;
import com.intellij.ide.IdeBundle;
import com.intellij.conversion.impl.ProjectConversionUtil;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.components.impl.stores.IProjectStore;
import com.intellij.openapi.diagnostic.Logger;
@@ -81,7 +80,7 @@ public class ConversionServiceImpl extends ConversionService {
runner.process();
runner.postProcess();
}
context.saveFiles();
context.saveFiles(affectedFiles);
listener.successfullyConverted(backupDir);
saveConversionResult(context);
return true;
@@ -248,7 +247,7 @@ public class ConversionServiceImpl extends ConversionService {
runner.convertModule(moduleFile);
}
}
context.saveFiles();
context.saveFiles(Collections.singletonList(moduleFile));
Messages.showInfoMessage(project, IdeBundle.message("message.your.module.was.succesfully.converted.br.old.version.was.saved.to.0", backupFile.getAbsolutePath()),
IdeBundle.message("dialog.title.convert.module"));
return true;
@@ -1,15 +1,14 @@
package com.intellij.conversion.impl;
import com.intellij.conversion.RunManagerSettings;
import com.intellij.conversion.CannotConvertException;
import com.intellij.conversion.RunManagerSettings;
import com.intellij.ide.impl.convert.JDomConvertingUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -75,15 +74,4 @@ public class RunManagerSettingsImpl implements RunManagerSettings {
return files;
}
public void save() throws IOException {
if (myWorkspaceFile != null) {
myWorkspaceFile.save();
}
if (myProjectFile != null) {
myProjectFile.save();
}
for (SettingsXmlFile file : mySharedConfigurationFiles) {
file.save();
}
}
}
@@ -8,6 +8,7 @@ import com.intellij.ide.IdeBundle;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.util.containers.HashSet;
import com.intellij.CommonBundle;
import org.jetbrains.annotations.NonNls;
@@ -25,6 +26,7 @@ import java.util.Set;
* @author nik
*/
public class ConvertProjectDialog extends DialogWrapper {
private static final Logger LOG = Logger.getInstance("#com.intellij.conversion.impl.ui.ConvertProjectDialog");
private JPanel myMainPanel;
private JTextPane myTextPane;
private boolean myConverted;
@@ -106,14 +108,16 @@ public class ConvertProjectDialog extends DialogWrapper {
runner.postProcess();
}
}
myContext.saveFiles();
myContext.saveFiles(myAffectedFiles);
myConverted = true;
super.doOKAction();
}
catch (CannotConvertException e) {
LOG.info(e);
showErrorMessage(IdeBundle.message("error.cannot.convert.project", e.getMessage()));
}
catch (IOException e) {
LOG.info(e);
showErrorMessage(IdeBundle.message("error.cannot.convert.project", e.getMessage()));
}
}