KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sf > invicta > project > ProjectDefinitionLoader


1 package net.sf.invicta.project;
2
3 import java.io.File JavaDoc;
4 import java.io.FileInputStream JavaDoc;
5 import java.io.FileNotFoundException JavaDoc;
6 import net.sf.invicta.util.BetterDigester;
7 import net.sf.invicta.util.DTDEntityResolver;
8
9    
10 /**
11  * Load and parse a project definition file (using digester).
12  *
13  */

14 public class ProjectDefinitionLoader {
15      
16
17     protected BetterDigester reader = new BetterDigester();
18
19
20     /**
21      * Constructor for ProjectDefinitionLoader.
22      */

23     public ProjectDefinitionLoader() {
24         super();
25
26         // Enable DTD validation
27
this.reader.setValidating(true);
28
29         // Use the rule set of the project definition.
30
this.reader.addRuleSet(new ProjectDefinitionRuleSet());
31
32         this.reader.setEntityResolver(new DTDEntityResolver());
33
34     }
35
36     /**
37      * Loads and parses a project definition from the given file name.
38      * Returns an unresolved ProjectDefinition object.
39      *
40      * @param fileName
41      * @return ProjectDefinition
42      * @throws InvictaProjectException
43      */

44     public ProjectDefinition load(String JavaDoc fileName) throws InvictaProjectException {
45         
46         // Open the file for reading
47
File JavaDoc resourceFile = new File JavaDoc(fileName);
48         FileInputStream JavaDoc inputStream;
49         try {
50             inputStream = new FileInputStream JavaDoc(resourceFile);
51         } catch (FileNotFoundException JavaDoc e) {
52             throw new InvictaProjectException("Project Definition file not found:" + fileName);
53         }
54         
55         this.reader.clearWithErrors();
56
57         // Load the project definition file while parsing it.
58
ProjectDefinition result;
59         try {
60             result = (ProjectDefinition) reader.parse(inputStream);
61         } catch (Exception JavaDoc e) {
62             throw new InvictaProjectException("Project definition error: " + e.getMessage());
63         }
64                                       
65         if (reader.getNumberOfErrors() > 0)
66             throw new InvictaProjectException("Error in loading project definition file '" + fileName +"'");
67
68
69         return result;
70     }
71
72 }
73
Popular Tags