KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > analyzer > layout > LayoutParser


1 /*
2  * XMLLayoutParser.java
3  *
4  * Created on April 22, 2005, 10:16 AM
5  */

6
7 package analyzer.layout;
8
9
10 import javax.xml.parsers.SAXParserFactory JavaDoc;
11 import javax.xml.parsers.SAXParser JavaDoc;
12 import java.io.*;
13
14 public class LayoutParser {
15     
16     
17     ModeLayout l;
18     LayoutBuilder builder;
19     
20     public LayoutParser(LayoutBuilder mainLayout) {
21         builder=mainLayout;
22     }
23     
24     public ModeLayout parse(String JavaDoc path){
25         
26         SAXParserFactory JavaDoc factory = SAXParserFactory.newInstance();
27         
28         try{
29             SAXParser JavaDoc saxParser = factory.newSAXParser();
30             File newFile = new File(path);
31             XMLParserHandler handler=new XMLParserHandler();
32             saxParser.parse(newFile,handler);
33             l=handler.getResultLayout();
34             if(l==null)return null;
35             String JavaDoc dirPath=getDirName(path);
36             l.wstcref=exploreCorrespondingDirectory(dirPath);
37             return l;
38         }catch(Exception JavaDoc e){
39             e.printStackTrace();
40             return null;
41         }
42         
43     }
44     
45     private String JavaDoc exploreCorrespondingDirectory(String JavaDoc dirPath){
46         try{
47             String JavaDoc[] wstcrefFiles=builder.filesEndingWith("wstcref",dirPath);
48             if(wstcrefFiles==null)return null;
49             StringBuffer JavaDoc buffer=new StringBuffer JavaDoc();
50             String JavaDoc woutExtension;
51             String JavaDoc[] fileNames=new String JavaDoc[wstcrefFiles.length];
52             for(int i=0;i<wstcrefFiles.length;i++){
53                 woutExtension=wstcrefFiles[i].substring(0,wstcrefFiles[i].lastIndexOf('.'));
54                 fileNames[i]=new String JavaDoc(woutExtension);
55                 buffer.append("\n+ "+woutExtension);
56             }
57             builder.analyzeMode(l.name,fileNames);
58             return buffer.toString();
59         }catch(Exception JavaDoc e){
60             System.out.println("dir not found");
61             e.printStackTrace();
62             return null;
63         }
64     }
65     
66     private String JavaDoc getDirName(String JavaDoc filePath){
67         String JavaDoc currentDir=new String JavaDoc(filePath);
68         int indexChar=currentDir.lastIndexOf(File.pathSeparator);
69         if(indexChar>-1)currentDir=currentDir.substring(indexChar)+File.separator+l.name;
70         else currentDir=l.name;
71         return currentDir;
72     }
73 }
Popular Tags