Blame client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/utils/RDPFileParser.java

Packit Service fa4841
/*
Packit Service fa4841
   Simple .RDP file parser
Packit Service fa4841
Packit Service fa4841
   Copyright 2013 Blaz Bacnik
Packit Service fa4841
Packit Service bb5c11
   This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. 
Packit Service bb5c11
   If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
Packit Service fa4841
*/
Packit Service fa4841
Packit Service fa4841
package com.freerdp.freerdpcore.utils;
Packit Service fa4841
Packit Service fa4841
import java.io.BufferedReader;
Packit Service fa4841
import java.io.FileReader;
Packit Service fa4841
import java.io.IOException;
Packit Service fa4841
import java.util.HashMap;
Packit Service fa4841
import java.util.Locale;
Packit Service fa4841
Packit Service bb5c11
public class RDPFileParser {
Packit Service bb5c11
Packit Service bb5c11
    private static final int MAX_ERRORS = 20;
Packit Service bb5c11
    private static final int MAX_LINES = 500;
Packit Service bb5c11
Packit Service bb5c11
    private HashMap<String, Object> options;
Packit Service bb5c11
Packit Service bb5c11
    public RDPFileParser() {
Packit Service bb5c11
        init();
Packit Service bb5c11
    }
Packit Service bb5c11
Packit Service bb5c11
    public RDPFileParser(String filename) throws IOException {
Packit Service bb5c11
        init();
Packit Service bb5c11
        parse(filename);
Packit Service bb5c11
    }
Packit Service bb5c11
Packit Service bb5c11
    private void init() {
Packit Service bb5c11
        options = new HashMap<String, Object>();
Packit Service bb5c11
    }
Packit Service bb5c11
Packit Service bb5c11
    public void parse(String filename) throws IOException {
Packit Service bb5c11
        BufferedReader br = new BufferedReader(new FileReader(filename));
Packit Service bb5c11
        String line = null;
Packit Service bb5c11
Packit Service bb5c11
        int errors = 0;
Packit Service bb5c11
        int lines = 0;
Packit Service bb5c11
        boolean ok;
Packit Service bb5c11
Packit Service bb5c11
        while ((line = br.readLine()) != null) {
Packit Service bb5c11
            lines++;
Packit Service bb5c11
            ok = false;
Packit Service bb5c11
Packit Service bb5c11
            if (errors > MAX_ERRORS || lines > MAX_LINES) {
Packit Service bb5c11
                br.close();
Packit Service bb5c11
                throw new IOException("Parsing limits exceeded");
Packit Service bb5c11
            }
Packit Service bb5c11
Packit Service bb5c11
            String[] fields = line.split(":", 3);
Packit Service bb5c11
Packit Service bb5c11
            if (fields.length == 3) {
Packit Service bb5c11
                if (fields[1].equals("s")) {
Packit Service bb5c11
                    options.put(fields[0].toLowerCase(Locale.ENGLISH), fields[2]);
Packit Service bb5c11
                    ok = true;
Packit Service bb5c11
                } else if (fields[1].equals("i")) {
Packit Service bb5c11
                    try {
Packit Service bb5c11
                        Integer i = Integer.parseInt(fields[2]);
Packit Service bb5c11
                        options.put(fields[0].toLowerCase(Locale.ENGLISH), i);
Packit Service bb5c11
                        ok = true;
Packit Service bb5c11
                    } catch (NumberFormatException e) {
Packit Service bb5c11
                    }
Packit Service bb5c11
                } else if (fields[1].equals("b")) {
Packit Service bb5c11
                    ok = true;
Packit Service bb5c11
                }
Packit Service bb5c11
            }
Packit Service bb5c11
Packit Service bb5c11
            if (!ok) errors++;
Packit Service bb5c11
        }
Packit Service bb5c11
        br.close();
Packit Service bb5c11
    }
Packit Service bb5c11
Packit Service bb5c11
    public String getString(String optionName) {
Packit Service bb5c11
        if (options.get(optionName) instanceof String)
Packit Service bb5c11
            return (String) options.get(optionName);
Packit Service bb5c11
        else
Packit Service bb5c11
            return null;
Packit Service bb5c11
    }
Packit Service bb5c11
Packit Service bb5c11
    public Integer getInteger(String optionName) {
Packit Service bb5c11
        if (options.get(optionName) instanceof Integer)
Packit Service bb5c11
            return (Integer) options.get(optionName);
Packit Service bb5c11
        else
Packit Service bb5c11
            return null;
Packit Service bb5c11
    }
Packit Service fa4841
}