view src/main/java/de/intevation/lada/importer/laf/LafFormat.java @ 610:374a2e78cec5

Added importer impl for laf file format.
author Raimund Renkert <raimund.renkert@intevation.de>
date Thu, 16 Apr 2015 15:49:04 +0200
parents
children 9e733f44d8b0
line wrap: on
line source
package de.intevation.lada.importer.laf;

import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Pattern;

import javax.json.Json;
import javax.json.JsonArray;
import javax.json.JsonException;
import javax.json.JsonObject;
import javax.json.JsonReader;

/**
 * The LAFFormat reads the config file
 * (https://bfs-intern.intevation.de/Server/Importer) and creates format
 * objects for each entry.
 *
 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
 */
public class LafFormat
{
    private JsonObject fileContent;

    /**
     * Reads the config file.
     *
     * @param fileName  Path to the config file.
     * @return success
     */
    public boolean readConfigFile(String fileName) {
        try {
            InputStream inputStream =
                LafFormat.class.getResourceAsStream(fileName);
            int ch;
            StringBuilder builder = new StringBuilder();
            while((ch = inputStream.read()) != -1) {
                builder.append((char)ch);
            }
            JsonReader reader =
                Json.createReader(new StringReader(builder.toString()));
            fileContent = reader.readObject();
            return true;
        }
        catch (IOException ioe) {
            return false;
        }
        catch (JsonException je) {
            return false;
        }
    }

    /**
     * Returns a List of EntryFormat for the requested entity type.
     * The Entity type can be one of:
     * * "probe"
     * * "messung"
     * * "ort"
     *
     * @param dataType The entity type
     * @return List of entry formats defined for the requested type.
     */
    public List<EntryFormat> getFormat(String dataType) {
        List<EntryFormat> formats = new LinkedList<EntryFormat>();
        try {
            JsonArray block = fileContent.getJsonArray(dataType);
            for (int i = 0; i < block.size(); i++) {
                JsonObject jEntry = block.getJsonObject(i);
                EntryFormat entry = new EntryFormat();
                entry.setKey(jEntry.getString("key"));
                Pattern pattern =
                    Pattern.compile(
                        jEntry.getString("regex"),
                        Pattern.MULTILINE);
                entry.setPattern(pattern);
                entry.setDefaultValue(jEntry.get("default"));
                formats.add(entry);
            }
            return formats;
        }
        catch (JsonException e) {
            return null;
        }
    }
}
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)