All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jgrasstools.gears.io.geopaparazzi.geopap4.DaoMetadata Maven / Gradle / Ivy

/*
 * This file is part of JGrasstools (http://www.jgrasstools.org)
 * (C) HydroloGIS - www.hydrologis.com
 *
 * JGrasstools 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.
 *
 * This program 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 .
 */
package org.jgrasstools.gears.io.geopaparazzi.geopap4;


import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.HashMap;


import static org.jgrasstools.gears.io.geopaparazzi.geopap4.TableDescriptions.*;

/**
 * @author Andrea Antonello (www.hydrologis.com)
 */
@SuppressWarnings("nls")
public class DaoMetadata {

    public static final String EMPTY_VALUE = " - ";

    /**
     * Create the notes tables.
     *
     * @throws java.io.IOException if something goes wrong.
     */
    public static void createTables(Connection connection) throws Exception {
        StringBuilder sB = new StringBuilder();
        sB.append("CREATE TABLE ");
        sB.append(TABLE_METADATA);
        sB.append(" (");
        sB.append(MetadataTableFields.COLUMN_KEY.getFieldName()).append(" TEXT NOT NULL, ");
        sB.append(MetadataTableFields.COLUMN_VALUE.getFieldName()).append(" TEXT NOT NULL ");
        sB.append(");");
        String CREATE_TABLE_PROJECT = sB.toString();

        try (Statement statement = connection.createStatement()) {
            statement.setQueryTimeout(30); // set timeout to 30 sec.

            statement.executeUpdate(CREATE_TABLE_PROJECT);
        } catch (Exception e) {
            throw new IOException(e.getLocalizedMessage());
        }
    }


    /**
     * Populate the project metadata table.
     *
     * @param name         the project name
     * @param description  an optional description.
     * @param notes        optional notes.
     * @param creationUser the user creating the project.
     *
     * @throws java.io.IOException if something goes wrong.
     */
    public static void fillProjectMetadata(Connection connection, String name, String description, String notes, String creationUser) throws Exception {
        Date creationDate = new Date();
        if (name == null) {
            name = "project-" + TimeUtilities.INSTANCE.TIME_FORMATTER_LOCAL.format(creationDate);
        }
        if (description == null) {
            description = EMPTY_VALUE;
        }
        if (notes == null) {
            notes = EMPTY_VALUE;
        }
        if (creationUser == null) {
            creationUser = "dummy user";
        }

        insertPair(connection, MetadataTableFields.KEY_NAME.getFieldName(), name);
        insertPair(connection, MetadataTableFields.KEY_DESCRIPTION.getFieldName(), description);
        insertPair(connection, MetadataTableFields.KEY_NOTES.getFieldName(), notes);
        insertPair(connection, MetadataTableFields.KEY_CREATIONTS.getFieldName(), String.valueOf(creationDate.getTime()));
        insertPair(connection, MetadataTableFields.KEY_LASTTS.getFieldName(), EMPTY_VALUE);
        insertPair(connection, MetadataTableFields.KEY_CREATIONUSER.getFieldName(), creationUser);
        insertPair(connection, MetadataTableFields.KEY_LASTUSER.getFieldName(), EMPTY_VALUE);

    }

    private static void insertPair(Connection connection, String key, String value) throws SQLException {
        String insertSQL = "INSERT INTO " + TableDescriptions.TABLE_METADATA
                + "(" + //
                MetadataTableFields.COLUMN_KEY.getFieldName() + ", " + //
                MetadataTableFields.COLUMN_VALUE.getFieldName() + //
                ") VALUES"
                + "(?,?)";
        try (PreparedStatement writeImageDataStatement = connection.prepareStatement(insertSQL)) {
            writeImageDataStatement.setString(1, key);
            writeImageDataStatement.setString(2, value);

            writeImageDataStatement.executeUpdate();
        }
    }


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy