absfileinstanceloader.java

来自「pso源程序」· Java 代码 · 共 54 行

JAVA
54
字号
/**
 * 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 + =
减小字号Ctrl + -
显示快捷键?