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 }