Package org.objectstyle.wolips.eomodeler.factories

Source Code of org.objectstyle.wolips.eomodeler.factories.SimpleManifestEOModelGroupFactory

package org.objectstyle.wolips.eomodeler.factories;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

import org.objectstyle.wolips.eomodeler.core.model.AbstractManifestEOModelGroupFactory;
import org.objectstyle.wolips.eomodeler.core.model.ManifestSearchFolder;

public class SimpleManifestEOModelGroupFactory extends AbstractManifestEOModelGroupFactory {
  @Override
  public List<ManifestSearchFolder> getSearchFolders(File selectedModelFolder) throws IOException {
    List<ManifestSearchFolder> searchFolders = new LinkedList<ManifestSearchFolder>();
    fillInSearchFolders(new File(selectedModelFolder, "EntityModeler.modelpath"), searchFolders);
    fillInSearchFolders(new File(selectedModelFolder, ".EntityModeler.modelpath"), searchFolders);
    if (selectedModelFolder != null) {
      for (File modelFolder = selectedModelFolder.getParentFile(); modelFolder != null; modelFolder = modelFolder.getParentFile()) {
        fillInSearchFolders(new File(modelFolder, "EntityModeler.modelpath"), searchFolders);
        fillInSearchFolders(new File(modelFolder, ".EntityModeler.modelpath"), searchFolders);
      }
    }
    fillInSearchFolders(new File(System.getProperty("user.home"), "EntityModeler.modelpath"), searchFolders);
    fillInSearchFolders(new File(System.getProperty("user.home"), ".EntityModeler.modelpath"), searchFolders);
    fillInSearchFolders(new File(System.getProperty("user.home") + "/Library", "EntityModeler.modelpath"), searchFolders);
    fillInSearchFolders(new File(System.getProperty("user.home") + "/Library", ".EntityModeler.modelpath"), searchFolders);
    fillInSearchFolders(new File(System.getProperty("user.home") + "/Library/Preferences", "EntityModeler.modelpath"), searchFolders);
    fillInSearchFolders(new File(System.getProperty("user.home") + "/Library/Preferences", ".EntityModeler.modelpath"), searchFolders);
    return searchFolders;
  }
 
  protected int fillInSearchFolders(File baseFolder, String searchFolderPath, final List<ManifestSearchFolder> searchFolders) throws IOException {
    int count = SimpleManifestUtilities.fillInSearchFolders(baseFolder, searchFolderPath, new SimpleManifestUtilities.SearchFolderDelegate() {
      public void fileMatched(File file) throws IOException {
        searchFolders.add(new ManifestSearchFolder(file.getAbsoluteFile()));
      }
    });
    return count;
  }
 
  protected void fillInSearchFolders(File manifestFile, final List<ManifestSearchFolder> searchFolders) throws IOException {
    if (manifestFile.exists()) {
      BufferedReader manifestReader = new BufferedReader(new FileReader(manifestFile));
      try {
        String searchFolderPath;
        while ((searchFolderPath = manifestReader.readLine()) != null) {
          searchFolderPath = searchFolderPath.trim();
          if (searchFolderPath.equals("") || searchFolderPath.startsWith("#")) {
            continue;
          }
          if (searchFolderPath.contains(",")) {
            for (String possibleFolderPath : searchFolderPath.split(",")) {
              int count = fillInSearchFolders(manifestFile.getParentFile(), possibleFolderPath, searchFolders);
              if (count > 0) {
                break;
              }
            }
          }
          else {
            fillInSearchFolders(manifestFile.getParentFile(), searchFolderPath, searchFolders);
          }
        }
      } finally {
        manifestReader.close();
      }
    }
  }
}
TOP

Related Classes of org.objectstyle.wolips.eomodeler.factories.SimpleManifestEOModelGroupFactory

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.