1 package com
.intellij
.facet
.impl
;
3 import com
.intellij
.facet
.*;
4 import com
.intellij
.openapi
.components
.PersistentStateComponent
;
5 import com
.intellij
.openapi
.components
.State
;
6 import com
.intellij
.openapi
.components
.Storage
;
7 import com
.intellij
.openapi
.diagnostic
.Logger
;
8 import com
.intellij
.openapi
.module
.Module
;
9 import com
.intellij
.openapi
.module
.ModuleManager
;
10 import com
.intellij
.openapi
.project
.Project
;
11 import com
.intellij
.openapi
.util
.InvalidDataException
;
12 import com
.intellij
.openapi
.util
.WriteExternalException
;
13 import com
.intellij
.util
.xmlb
.annotations
.MapAnnotation
;
14 import com
.intellij
.util
.xmlb
.annotations
.Tag
;
15 import org
.jdom
.Element
;
16 import org
.jetbrains
.annotations
.NonNls
;
17 import org
.jetbrains
.annotations
.NotNull
;
25 name
= ProjectFacetManagerImpl
.COMPONENT_NAME
,
33 public class ProjectFacetManagerImpl
extends ProjectFacetManagerEx
implements PersistentStateComponent
<ProjectFacetManagerImpl
.ProjectFacetManagerState
> {
34 @NonNls public static final String COMPONENT_NAME
= "ProjectFacetManager";
35 private static final Logger LOG
= Logger
.getInstance("#com.intellij.facet.impl.ProjectFacetManagerImpl");
36 private ProjectFacetManagerState myState
= new ProjectFacetManagerState();
37 private Project myProject
;
39 public ProjectFacetManagerImpl(Project project
) {
43 public ProjectFacetManagerState
getState() {
47 public void loadState(final ProjectFacetManagerState state
) {
52 public <F
extends Facet
> List
<F
> getFacets(@NotNull FacetTypeId
<F
> typeId
) {
53 return getFacets(typeId
, ModuleManager
.getInstance(myProject
).getModules());
57 public <F
extends Facet
> List
<F
> getFacets(@NotNull FacetTypeId
<F
> typeId
, final Module
[] modules
) {
58 final List
<F
> result
= new ArrayList
<F
>();
59 for (Module module
: modules
) {
60 result
.addAll(FacetManager
.getInstance(module
).getFacetsByType(typeId
));
65 public <C
extends FacetConfiguration
> C
createDefaultConfiguration(@NotNull final FacetType
<?
, C
> facetType
) {
66 C configuration
= facetType
.createDefaultConfiguration();
67 DefaultFacetConfigurationState state
= myState
.getDefaultConfigurations().get(facetType
.getStringId());
69 Element defaultConfiguration
= state
.getDefaultConfiguration();
71 FacetUtil
.loadFacetConfiguration(configuration
, defaultConfiguration
);
73 catch (InvalidDataException e
) {
80 public <C
extends FacetConfiguration
> void setDefaultConfiguration(@NotNull final FacetType
<?
, C
> facetType
, @NotNull final C configuration
) {
81 Map
<String
, DefaultFacetConfigurationState
> defaultConfigurations
= myState
.getDefaultConfigurations();
82 DefaultFacetConfigurationState state
= defaultConfigurations
.get(facetType
.getStringId());
84 state
= new DefaultFacetConfigurationState();
85 defaultConfigurations
.put(facetType
.getStringId(), state
);
88 Element element
= FacetUtil
.saveFacetConfiguration(configuration
);
89 state
.setDefaultConfiguration(element
);
91 catch (WriteExternalException e
) {
96 @Tag("default-facet-configuration")
97 public static class DefaultFacetConfigurationState
{
98 private Element myDefaultConfiguration
;
100 @Tag("configuration")
101 public Element
getDefaultConfiguration() {
102 return myDefaultConfiguration
;
105 public void setDefaultConfiguration(final Element defaultConfiguration
) {
106 myDefaultConfiguration
= defaultConfiguration
;
110 public static class ProjectFacetManagerState
{
111 private Map
<String
, DefaultFacetConfigurationState
> myDefaultConfigurations
= new HashMap
<String
, DefaultFacetConfigurationState
>();
113 @Tag("default-configurations")
114 @MapAnnotation(surroundWithTag
= false, surroundKeyWithTag
= false, surroundValueWithTag
= false, //entryTagName = "default-configuration",
115 keyAttributeName
= "facet-type")
116 public Map
<String
, DefaultFacetConfigurationState
> getDefaultConfigurations() {
117 return myDefaultConfigurations
;
120 public void setDefaultConfigurations(final Map
<String
, DefaultFacetConfigurationState
> defaultConfigurations
) {
121 myDefaultConfigurations
= defaultConfigurations
;