update copyright
[fedora-idea.git] / java / idea-ui / src / com / intellij / openapi / roots / ui / configuration / artifacts / ManifestFilesInfo.java
blob861826b822aa1b59e66b4b3cf071c2ffcd5a492f
1 /*
2 * Copyright 2000-2009 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.openapi.roots.ui.configuration.artifacts;
18 import com.intellij.openapi.util.io.FileUtil;
19 import com.intellij.openapi.vfs.LocalFileSystem;
20 import com.intellij.openapi.vfs.VirtualFile;
21 import com.intellij.openapi.diagnostic.Logger;
22 import com.intellij.packaging.artifacts.ArtifactType;
23 import com.intellij.packaging.elements.CompositePackagingElement;
24 import com.intellij.packaging.elements.PackagingElementResolvingContext;
25 import com.intellij.packaging.impl.elements.ManifestFileUtil;
26 import com.intellij.packaging.ui.ManifestFileConfiguration;
28 import java.io.File;
29 import java.util.Map;
30 import java.util.HashMap;
32 public class ManifestFilesInfo {
33 private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.roots.ui.configuration.artifacts.ManifestFilesInfo");
34 private Map<CompositePackagingElement<?>, ManifestFileConfiguration> myManifestFiles = new HashMap<CompositePackagingElement<?>, ManifestFileConfiguration>();
35 private Map<CompositePackagingElement<?>, ManifestFileConfiguration> myOriginalManifestFiles = new HashMap<CompositePackagingElement<?>, ManifestFileConfiguration>();
37 public ManifestFileConfiguration getManifestFile(CompositePackagingElement<?> element, ArtifactType artifactType,
38 final PackagingElementResolvingContext context) {
39 ManifestFileConfiguration manifestFile = myManifestFiles.get(element);
40 if (manifestFile == null) {
41 manifestFile = ManifestFileUtil.createManifestFileConfiguration(element, context, artifactType);
42 myOriginalManifestFiles.put(element, new ManifestFileConfiguration(manifestFile));
43 myManifestFiles.put(element, manifestFile);
45 return manifestFile;
48 public void saveManifestFiles() {
49 for (Map.Entry<CompositePackagingElement<?>, ManifestFileConfiguration> entry : myManifestFiles.entrySet()) {
50 final ManifestFileConfiguration configuration = entry.getValue();
51 final String path = configuration.getManifestFilePath();
52 if (path == null) continue;
54 final ManifestFileConfiguration original = myOriginalManifestFiles.get(entry.getKey());
55 if (original != null && original.equals(configuration)) {
56 continue;
59 VirtualFile file = LocalFileSystem.getInstance().findFileByPath(path);
60 if (file == null) {
61 final File ioFile = new File(FileUtil.toSystemDependentName(path));
62 FileUtil.createIfDoesntExist(ioFile);
63 file = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(ioFile);
64 if (file == null) {
65 //todo[nik] improve
66 LOG.error("cannot create file: " + ioFile);
70 ManifestFileUtil.updateManifest(file, configuration);
74 public boolean isManifestFilesModified() {
75 return !myOriginalManifestFiles.equals(myManifestFiles);
78 public void clear() {
79 myManifestFiles.clear();
80 myOriginalManifestFiles.clear();