Package org.bladerunnerjs.plugin.plugins.brjsconformant

Source Code of org.bladerunnerjs.plugin.plugins.brjsconformant.BRJSConformantTestPackAssetLocationPlugin

package org.bladerunnerjs.plugin.plugins.brjsconformant;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.bladerunnerjs.model.AssetContainer;
import org.bladerunnerjs.model.AssetLocation;
import org.bladerunnerjs.model.BRJS;
import org.bladerunnerjs.model.ChildSourceAssetLocation;
import org.bladerunnerjs.model.ChildTestSourceAssetLocation;
import org.bladerunnerjs.model.ResourcesAssetLocation;
import org.bladerunnerjs.model.SourceAssetLocation;
import org.bladerunnerjs.model.TestSourceAssetLocation;
import org.bladerunnerjs.model.TestPack;
import org.bladerunnerjs.plugin.base.AbstractAssetLocationPlugin;
import org.bladerunnerjs.utility.RelativePathUtility;

public class BRJSConformantTestPackAssetLocationPlugin extends AbstractAssetLocationPlugin {
  private BRJS brjs;
 
  @Override
  public void setBRJS(BRJS brjs) {
    this.brjs = brjs;
  }
 
  @Override
  public List<String> getPluginsThatMustAppearAfterThisPlugin() {
    return Arrays.asList(BRJSConformantAssetLocationPlugin.class.getCanonicalName());
  }
 
  @Override
  public List<String> getAssetLocationDirectories(AssetContainer assetContainer) {
    List<String> assetLocationDirectories = new ArrayList<>();
   
    if(assetContainer instanceof TestPack) {
      assetLocationDirectories.add("resources");
      assetLocationDirectories.add("src-test");
      assetLocationDirectories.add("tests");
     
      File sourceTestDir = assetContainer.file("src-test");
      if(sourceTestDir.exists()) {
        for(File dir : brjs.getFileInfo(sourceTestDir).nestedDirs()) {
          assetLocationDirectories.add(RelativePathUtility.get(brjs.getFileInfoAccessor(), assetContainer.dir(), dir));
        }
      }
     
      File testsDir = assetContainer.file("tests");
      if(testsDir.exists()) {
        for(File dir : brjs.getFileInfo(testsDir).nestedDirs()) {
          assetLocationDirectories.add(RelativePathUtility.get(brjs.getFileInfoAccessor(), assetContainer.dir(), dir));
        }
      }
    }
   
    return assetLocationDirectories;
  }
 
  @Override
  public List<String> getSeedAssetLocationDirectories(AssetContainer assetContainer) {
    List<String> seedAssetLocationDirectories = new ArrayList<>();
   
    seedAssetLocationDirectories.add("resources");
    seedAssetLocationDirectories.add("tests");
   
    File testsDir = assetContainer.file("tests");
    if(testsDir.exists()) {
      for(File dir : brjs.getFileInfo(testsDir).nestedDirs()) {
        seedAssetLocationDirectories.add(RelativePathUtility.get(brjs.getFileInfoAccessor(), assetContainer.dir(), dir));
      }
    }
   
    return seedAssetLocationDirectories;
  }
 
  @Override
  public AssetLocation createAssetLocation(AssetContainer assetContainer, String dirPath, Map<String, AssetLocation> assetLocationsMap) {
    AssetLocation assetLocation;
    File dir = assetContainer.file(dirPath);
   
    switch(dirPath) {
      case "resources":
        assetLocation = new ResourcesAssetLocation(assetContainer.root(), assetContainer, dir, assetLocationsMap.get("."));
        break;
     
      case "tests":
        assetLocation = new TestSourceAssetLocation(assetContainer.root(), assetContainer, dir, assetLocationsMap.get("."), assetLocationsMap.get("resources"), assetLocationsMap.get("src-test"));
        break;
     
      case "src-test":
        assetLocation = new SourceAssetLocation(assetContainer.root(), assetContainer, dir, assetLocationsMap.get("."));
        break;
     
      default:
        String parentLocationPath = RelativePathUtility.get(brjs.getFileInfoAccessor(), assetContainer.dir(), dir.getParentFile());
        AssetLocation parentAssetLocation = assetLocationsMap.get(parentLocationPath);
       
        if((parentAssetLocation instanceof ChildSourceAssetLocation) || (parentAssetLocation instanceof SourceAssetLocation)) {
          assetLocation = new ChildSourceAssetLocation(assetContainer.root(), assetContainer, dir, parentAssetLocation, parentAssetLocation);
        }
        else {
          assetLocation = new ChildTestSourceAssetLocation(assetContainer.root(), assetContainer, dir, parentAssetLocation);
        }
        break;
    }
   
    return assetLocation;
  }
 
  @Override
  public boolean allowFurtherProcessing() {
    return false;
  }
}
TOP

Related Classes of org.bladerunnerjs.plugin.plugins.brjsconformant.BRJSConformantTestPackAssetLocationPlugin

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.