Gridarta Editor
DefaultConfigSourceFactory.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.model.configsource;
21 
22 import java.util.ArrayList;
23 import java.util.MissingResourceException;
26 import net.sf.japi.swing.action.ActionBuilder;
27 import net.sf.japi.swing.action.ActionBuilderFactory;
28 import org.jetbrains.annotations.NotNull;
29 
35 
40  @NotNull
41  private static final String CONFIG_SOURCES_KEY = "configSources";
42 
46  @NotNull
47  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
48 
53  @NotNull
54  private final ArrayList<ConfigSource> configSources = new ArrayList<>();
55 
60  final String configSourceClassNames = ActionBuilderUtils.getString(ACTION_BUILDER, CONFIG_SOURCES_KEY);
61  for (final String configSourceClassName : StringUtils.PATTERN_SPACE.split(configSourceClassNames, -1)) {
62  final Class<?> configSourceClass;
63  try {
64  configSourceClass = Class.forName(configSourceClassName);
65  } catch (final ClassNotFoundException ex) {
66  final MissingResourceException ex2 = new MissingResourceException("Class does not exist: " + configSourceClassName + ": " + ex.getMessage(), "net.sf.gridarta", CONFIG_SOURCES_KEY);
67  ex2.initCause(ex);
68  throw ex2;
69  }
70 
71  final Class<? extends ConfigSource> configSourceClass2;
72  try {
73  configSourceClass2 = configSourceClass.asSubclass(ConfigSource.class);
74  } catch (final ClassCastException ex) {
75  final MissingResourceException ex2 = new MissingResourceException("Class does not implement ConfigSource: " + configSourceClassName + ": " + ex.getMessage(), "net.sf.gridarta", CONFIG_SOURCES_KEY);
76  ex2.initCause(ex);
77  throw ex2;
78  }
79 
80  final ConfigSource configSource;
81  try {
82  configSource = configSourceClass2.newInstance();
83  } catch (final IllegalAccessException | InstantiationException ex) {
84  final MissingResourceException ex2 = new MissingResourceException("Class cannot be instantiated: " + configSourceClassName + ": " + ex.getMessage(), "net.sf.gridarta", CONFIG_SOURCES_KEY);
85  ex2.initCause(ex);
86  throw ex2;
87  }
88 
89  configSources.add(configSource);
90  }
91 
92  configSources.trimToSize();
93  }
94 
95  @NotNull
96  @Override
97  public ConfigSource @NotNull [] getConfigSources() {
98  return configSources.toArray(new ConfigSource[0]);
99  }
100 
101  @NotNull
102  @Override
103  public ConfigSource getConfigSource(@NotNull final String name) {
104  for (final ConfigSource configSource : configSources) {
105  if (configSource.getName().equals(name)) {
106  return configSource;
107  }
108  }
109 
110  return configSources.get(0);
111  }
112 
113  @NotNull
114  @Override
116  return configSources.get(0);
117  }
118 
119 }
name
name
Definition: ArchetypeTypeSetParserTest-ignoreDefaultAttribute1-result.txt:2
net.sf.gridarta
Base package of all Gridarta classes.
net.sf
net.sf.gridarta.model.configsource.ConfigSource
Possible source locations for configuration files.
Definition: ConfigSource.java:37
net
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory.getConfigSources
ConfigSource[] getConfigSources()
Returns all defined configuration sources.
Definition: DefaultConfigSourceFactory.java:97
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory
A ConfigSourceFactory that is configured through action keys.
Definition: DefaultConfigSourceFactory.java:34
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
The ActionBuilder.
Definition: DefaultConfigSourceFactory.java:47
net.sf.gridarta.utils.StringUtils.PATTERN_SPACE
static final Pattern PATTERN_SPACE
The pattern that matches a single space.
Definition: StringUtils.java:67
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory.getConfigSource
ConfigSource getConfigSource(@NotNull final String name)
Returns a ConfigSource by name.
Definition: DefaultConfigSourceFactory.java:103
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory.CONFIG_SOURCES_KEY
static final String CONFIG_SOURCES_KEY
The action key for configuration source class names.
Definition: DefaultConfigSourceFactory.java:41
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory.getDefaultConfigSource
ConfigSource getDefaultConfigSource()
Returns the default ConfigSource.
Definition: DefaultConfigSourceFactory.java:115
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Returns the value of a key.
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.utils.StringUtils
Utility class for string manipulation.
Definition: StringUtils.java:31
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory.DefaultConfigSourceFactory
DefaultConfigSourceFactory()
Creates a new instance.
Definition: DefaultConfigSourceFactory.java:59
net.sf.gridarta.model.configsource.ConfigSourceFactory
A factory for creating ConfigSources.
Definition: ConfigSourceFactory.java:28
net.sf.gridarta.model.configsource.DefaultConfigSourceFactory.configSources
final ArrayList< ConfigSource > configSources
The defined configuration sources.
Definition: DefaultConfigSourceFactory.java:54
net.sf.gridarta.utils.ActionBuilderUtils
Utility class for ActionBuilder related functions.
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20