コード例 #1
0
  public static ProjectProperties loadProjectProperties(File projectDir)
      throws IOException, TranslationException {
    ProjectProperties result = new ProjectProperties(projectDir);

    File inFile = new File(projectDir, OConsts.FILE_PROJECT);

    XMLStreamReader m_reader = new XMLStreamReader();
    m_reader.killEmptyBlocks();
    m_reader.setStream(inFile.getAbsolutePath(), "UTF-8");

    // verify valid project file
    XMLBlock blk;
    List<XMLBlock> lst;

    // advance to omegat tag
    if (m_reader.advanceToTag("omegat") == null) return result;

    // advance to project tag
    if ((blk = m_reader.advanceToTag("project")) == null) return result;

    String ver = blk.getAttribute("version");
    if (ver != null && !ver.equals(OConsts.PROJ_CUR_VERSION)) {
      throw new TranslationException(
          StaticUtils.format(
              OStrings.getString("PFR_ERROR_UNSUPPORTED_PROJECT_VERSION"), new Object[] {ver}));
    }

    // if folder is in default locations, name stored as __DEFAULT__
    String m_root = inFile.getParentFile().getAbsolutePath() + File.separator;

    lst = m_reader.closeBlock(blk);
    if (lst == null) return result;

    for (int i = 0; i < lst.size(); i++) {
      blk = lst.get(i);
      if (blk.isClose()) continue;

      if (blk.getTagName().equals("target_dir")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        result.setTargetRoot(computeAbsolutePath(m_root, blk.getText(), OConsts.DEFAULT_TARGET));
      } else if (blk.getTagName().equals("source_dir")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        result.setSourceRoot(computeAbsolutePath(m_root, blk.getText(), OConsts.DEFAULT_SOURCE));
      } else if (blk.getTagName().equals("tm_dir")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        result.setTMRoot(computeAbsolutePath(m_root, blk.getText(), OConsts.DEFAULT_TM));
      } else if (blk.getTagName().equals("glossary_dir")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        result.setGlossaryRoot(
            computeAbsolutePath(m_root, blk.getText(), OConsts.DEFAULT_GLOSSARY));
      } else if (blk.getTagName().equals("dictionary_dir")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        result.setDictRoot(computeAbsolutePath(m_root, blk.getText(), OConsts.DEFAULT_DICT));
      } else if (blk.getTagName().equals("source_lang")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        if (blk != null) result.setSourceLanguage(blk.getText());
      } else if (blk.getTagName().equals("target_lang")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        if (blk != null) result.setTargetLanguage(blk.getText());
      } else if (blk.getTagName().equals("sentence_seg")) {
        if (++i >= lst.size()) break;
        blk = lst.get(i);
        if (blk != null) result.setSentenceSegmentingEnabled(Boolean.parseBoolean(blk.getText()));
      }
    }

    return result;
  }