⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 absfileinstanceloader.java

📁 pso源程序
💻 JAVA
字号:
/**
 * Description: for loading an instance of problem according to ProblemSettings,
 *  which refers to a file by the parameter "Problem"
 *
 * @ Author        Create/Modi     Note
 * Xiaofeng Xie    Jul 12, 2006
 */

package maosKernel.infoIO.instance;

import java.io.*;

import Global.methods.*;
import Global.system.io.*;

import maosKernel.represent.problem.*;
import maosKernel.infoIO.setting.*;

public abstract class AbsFileInstanceLoader extends AbsInstanceLoader {
  private IInstanceInputEngine instanceInputEngine;

  public AbsFileInstanceLoader() {};

  public void setInstanceInputEngine(IInstanceInputEngine instanceInputEngine) {
    this.instanceInputEngine = instanceInputEngine;
  }

  protected AbsProblemData loadPrimaryProblem(ProblemSettings problemSettings) throws Exception {
    String problemName = null;
    try {
      problemName = TypeConverter.toString(problemSettings.getValue("Problem"));
    } catch (Exception e) {
      throw new Exception("Parameter \"Problem\" is not specified");
    }
    problemName = instanceInputEngine.getInstanceName(problemName);
    return initInstanceData(problemSettings.getKey(), problemName, instanceInputEngine);
  }

  protected abstract AbsProblemData readProblem(String content) throws Exception;

  protected AbsProblemData initInstanceData(String problemType, String problemName, IInstanceInputEngine instanceInputEngine) throws Exception {
    try {
      String validFileName = instanceInputEngine.getFullInstanceFileName(problemType, problemName);
      SystemSettingPath.submitUsedFile("Instance", validFileName);
      String content = GlobalFile.getStringFromFile(validFileName);
      AbsProblemData problemData = readProblem(content);
      return problemData;
    } catch (Exception e) {
      throw new UTFDataFormatException("("+problemName+": "+e.getMessage()+")");
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -