package fitnesse.wiki.fs;

import java.io.IOException;
import java.util.Collection;
import java.util.Collections;

import fitnesse.wiki.CachingPage;
import fitnesse.wiki.PageData;
import fitnesse.wiki.PageType;
import fitnesse.wiki.VersionInfo;
import fitnesse.wiki.WikiPage;

public class ExternalTestPage extends CachingPage {
    private static final long serialVersionUID = 1L;
    private FileSystem fileSystem;
    private String path;

    public ExternalTestPage(String path, String name, WikiPage parent, FileSystem fileSystem) {
        super(name, parent, null);
        this.path = path;
        this.fileSystem = fileSystem;
    }

    @Override
    public boolean hasChildPage(String pageName) {
        return false;
    }

  @Override
  public Collection<VersionInfo> getVersions() {
    return Collections.emptySet();
  }

  @Override
    protected WikiPage createChildPage(String name) {
        return null;
    }

    @Override
    protected void loadChildren() {

    }

    @Override
    protected PageData makePageData() {
        PageData pageData = new PageData(this);
        String content;
        try {
          content = fileSystem.getContent(path);
        } catch (IOException e) {
          throw new RuntimeException("Unable to fetch page content", e);
        }
        pageData.setContent("!-" + content + "-!");
        pageData.removeAttribute(PageData.PropertyEDIT);
        pageData.removeAttribute(PageData.PropertyPROPERTIES);
        pageData.removeAttribute(PageData.PropertyVERSIONS);
        pageData.removeAttribute(PageData.PropertyREFACTOR);
        if (content.contains("<table")) {
            pageData.setAttribute(PageType.TEST.toString(), Boolean.toString(true));
        }
        return pageData;
    }

    public PageData getDataVersion(String versionName) {
        return null;  
    }
}

@@ -322,18 +322,16 @@
 gPage %7B%0A
-  
   privat
@@ -373,18 +373,16 @@
 D = 1L;%0A
-  
   privat
@@ -406,18 +406,16 @@
 System;%0A
-  
   privat
@@ -430,18 +430,16 @@
  path;%0A%0A
-  
   public
@@ -520,28 +520,24 @@
 leSystem) %7B%0A
-    
     super(na
@@ -555,20 +555,16 @@
  null);%0A
-    
     this
@@ -577,20 +577,16 @@
 = path;%0A
-    
     this
@@ -611,25 +611,21 @@
 System;%0A
-  
   %7D%0A%0A
-  
   @Overr
@@ -628,18 +628,16 @@
 verride%0A
-  
   public
@@ -669,36 +669,32 @@
 ing pageName) %7B%0A
-    
     return false
@@ -695,18 +695,16 @@
  false;%0A
-  
   %7D%0A%0A  @
@@ -805,34 +805,32 @@
  %7D%0A%0A  @Override%0A
-  
   protected Wiki
@@ -861,28 +861,24 @@
 ing name) %7B%0A
-    
     return n
@@ -882,25 +882,21 @@
 n null;%0A
-  
   %7D%0A%0A
-  
   @Overr
@@ -891,34 +891,32 @@
  %7D%0A%0A  @Override%0A
-  
   protected void
@@ -934,25 +934,21 @@
 en() %7B%0A%0A
-  
   %7D%0A%0A
-  
   @Overr
@@ -951,18 +951,16 @@
 verride%0A
-  
   protec
@@ -985,28 +985,24 @@
 ageData() %7B%0A
-    
     PageData
@@ -1037,20 +1037,16 @@
 s);%0A    
-  
-  
 String c
@@ -1053,20 +1053,16 @@
 ontent;%0A
-    
     try 
@@ -1069,20 +1069,16 @@
 %7B%0A      
-  
-  
 content 
@@ -1108,20 +1108,16 @@
 (path);%0A
-    
     %7D ca
@@ -1144,20 +1144,16 @@
 %7B%0A      
-  
-  
 throw ne
@@ -1211,30 +1211,22 @@
 e);%0A    
-    %7D%0A  
+%7D%0A
     
-  
 pageData
@@ -1261,20 +1261,16 @@
  %22-!%22);%0A
-    
     page
@@ -1314,28 +1314,24 @@
 yEDIT);%0A    
-  
-  
 pageData.rem
@@ -1369,36 +1369,32 @@
 ROPERTIES);%0A    
-  
-  
 pageData.removeA
@@ -1430,28 +1430,24 @@
 SIONS);%0A    
-  
-  
 pageData.rem
@@ -1487,20 +1487,16 @@
 ACTOR);%0A
-    
     if (
@@ -1531,22 +1531,16 @@
 %7B%0A      
-  
-    
 pageData
@@ -1608,22 +1608,14 @@
 ));%0A
-    
     %7D%0A
-    
     
@@ -1635,17 +1635,13 @@
 ta;%0A
-  
   %7D%0A%0A
-  
   pu
@@ -1691,20 +1691,16 @@
 Name) %7B%0A
-    
     retu
@@ -1711,13 +1711,9 @@
 ull;
-  %0A  
+%0A
   %7D%0A

Reformat ExternalTestPage