org.omegat.core.team2.ProjectTeamSettings.java Source code

Java tutorial

Introduction

Here is the source code for org.omegat.core.team2.ProjectTeamSettings.java

Source

/**************************************************************************
 OmegaT - Computer Assisted Translation (CAT) tool 
      with fuzzy matching, translation memory, keyword search, 
      glossaries, and translation leveraging into updated projects.
    
 Copyright (C) 2015 Alex Buloichik
           Home page: http://www.omegat.org/
           Support center: http://groups.yahoo.com/group/OmegaT/
    
 This file is part of OmegaT.
    
 OmegaT is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.
    
 OmegaT is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.
    
 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 **************************************************************************/

package org.omegat.core.team2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Properties;

import org.apache.commons.io.FileUtils;

/**
 * Class for read/save project-specific settings.
 * 
 * @author Alex Buloichik (alex73mail@gmail.com)
 */
public class ProjectTeamSettings {
    private final File configFile;

    public ProjectTeamSettings(File configDir) {
        this.configFile = new File(configDir, "settings.properties");
    }

    /**
     * Get setting.
     */
    public synchronized String get(String key) {
        try {
            Properties p = new Properties();
            if (configFile.exists()) {
                try (FileInputStream in = new FileInputStream(configFile)) {
                    p.load(in);
                }
            }
            return p.getProperty(key);
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
    }

    /**
     * Update setting.
     */
    public synchronized void set(String key, String newValue) {
        try {
            Properties p = new Properties();
            File f = configFile;
            File fNew = new File(configFile.getAbsolutePath() + ".new");
            if (f.exists()) {
                try (FileInputStream in = new FileInputStream(f)) {
                    p.load(in);
                }
            } else {
                f.getParentFile().mkdirs();
            }
            if (newValue != null) {
                p.setProperty(key, newValue);
            } else {
                p.remove(key);
            }
            try (FileOutputStream out = new FileOutputStream(fNew)) {
                p.store(out, null);
            }
            f.delete();
            FileUtils.moveFile(fNew, f);
        } catch (Exception ex) {
            throw new RuntimeException(ex);
        }
    }
}