1   package test.wiki;
2   
3   import java.io.BufferedReader;
4   import java.io.File;
5   import java.io.FileInputStream;
6   import java.io.IOException;
7   import java.io.InputStreamReader;
8   import java.net.URL;
9   import java.net.URLDecoder;
10  import java.util.Properties;
11  
12  import org.seasar.tuigwaa.cms.core.CmsConstants;
13  import org.seasar.tuigwaa.cms.core.Page;
14  import org.seasar.tuigwaa.cms.core.PageImpl;
15  import org.seasar.tuigwaa.cms.core.Resource;
16  import org.seasar.tuigwaa.cms.core.ResourceImpl;
17  
18  
19  /***
20   * @author someda
21   */
22  public class TestPageFactory{
23  	
24  	private static TestPageFactory instance_;
25  	private static final String WIKIDATADIR_NAME = "test/wiki/wikidata";
26  	private static final String FILESEP = System.getProperty("file.separator");
27  	private static final String LINESEP = System.getProperty("line.separator");
28  	private static final String FILEENCODE = "JISAutoDetect";
29  	
30  	private static File file_;
31  	
32  	private TestPageFactory(){
33  		URL url = Thread.currentThread().getContextClassLoader().getResource(WIKIDATADIR_NAME);
34  		file_ = new File(url.getFile());
35  	}
36  	
37  	public static TestPageFactory getInstance(){
38  		if(instance_ == null){
39  			instance_ = new TestPageFactory();
40  		}
41  		return instance_;
42  	}	
43  
44  	public Page getPage(Object id) {
45  		return getPage(id,CmsConstants.CONTENTTYPE_XWIKI);
46  	}
47  	
48  	public Page getPage(Object id, String contentType){
49  		Resource resource = new ResourceImpl("test","test",contentType);
50  		resource.setProperties(new Properties());
51  		resource.setPersistent(false);
52  		resource.setModificationUser("testUser");
53  		resource.setCreationUser("testUser");
54  		Page page = new PageImpl(resource,getFileData((String)id));		
55  		return page;				
56  	}
57  				
58  	private String getFileData(String file){
59  
60  		StringBuffer buf = new StringBuffer();
61  		
62  		try{
63  			String filepath = URLDecoder.decode(file_.getAbsolutePath(),FILEENCODE) + FILESEP + file;
64  			FileInputStream fis = new FileInputStream(filepath);
65  			InputStreamReader isr = new InputStreamReader(fis,FILEENCODE);
66  			BufferedReader br = new BufferedReader(isr);
67  			String line;
68  			while((line = br.readLine()) != null){
69  				buf.append(line + LINESEP);
70  			}
71  			br.close();
72  			isr.close();
73  			fis.close();
74  		}catch(IOException ioe){
75  			ioe.printStackTrace();
76  		}				
77  		return buf.toString();		
78  	}
79  
80  }