View Javadoc

1   package pl.aislib.fm;
2   
3   import java.util.HashMap;
4   import java.util.Map;
5   
6   import org.apache.commons.logging.Log;
7   import org.xml.sax.EntityResolver;
8   
9   import pl.aislib.util.xml.JarEntityResolver;
10  
11  /***
12   * Provides {@link EntityResolver} containing DTDs for all
13   * supported by aislib configuration formats.
14   *
15   * @author <a href="mailto:pikus@ais.pl">Tomasz Pik</a>, AIS.PL
16   * @version $Revision: 1.2 $
17   */
18  public class FmEntityResolver {
19  
20    /***
21     * Path to all framework DTD files inside of Jar archive.
22     * Don't use leading '/'. Use '/' instead of '.' in package name.
23     * Thanks for your cooperation :)
24     */
25    private static final String DTD_JAR_PREFIX = "pl/aislib/fm/dtds";
26  
27    private static Map publicIdMap = buildPublicIdMap();
28    private static Map systemIdMap = buildSystemIdMap();
29  
30    /***
31     * Instance of {@link EntityResolver} provides DTDs for all
32     * supported aislib configuration formats.
33     *
34     * @return instance of {@link EntityResolver}.
35     */
36    public static EntityResolver getResolverInstance() {
37      return new JarEntityResolver(DTD_JAR_PREFIX, publicIdMap, systemIdMap);
38    }
39  
40    /***
41     * Instance of {@link EntityResolver} provides DTDs for all
42     * supported aislib configuration formats and with given <code>log</code>
43     * as callback listener.
44     *
45     * @param log logging entity resolving.
46     * @return instance of {@link EntityResolver}.
47     */
48    public static EntityResolver getResolverInstance(Log log) {
49      return new JarEntityResolver(DTD_JAR_PREFIX, publicIdMap, systemIdMap, log);
50    }
51  
52    private static Map buildPublicIdMap() {
53      Map registeredIds  = new HashMap(4);
54      registeredIds.put("-//AIS.PL//DTD Forms Description 0.2//EN",    "forms_0_2.dtd");
55      registeredIds.put("-//AIS.PL//DTD Forms Description 0.4//EN",    "forms_0_4.dtd");
56      registeredIds.put("-//AIS.PL//DTD Messages Description 0.2//EN", "messages_0_2.dtd");
57      registeredIds.put("-//AIS.PL//DTD Workflow Description 0.2//EN", "workflow_0_2.dtd");
58      return registeredIds;
59    }
60  
61    private static Map buildSystemIdMap() {
62      Map registeredIds  = new HashMap(4);
63      registeredIds.put("http://www.ais.pl/dtds/forms_0_2.dtd",    "forms_0_2.dtd");
64      registeredIds.put("http://www.ais.pl/dtds/forms_0_4.dtd",    "forms_0_4.dtd");
65      registeredIds.put("http://www.ais.pl/dtds/messages_0_2.dtd", "messages_0_2.dtd");
66      registeredIds.put("http://www.ais.pl/dtds/workflow_0_2.dtd", "workflow_0_2.dtd");
67      return registeredIds;
68    }
69  
70  }