org.languagetool.server.DatabaseCheckLogEntry.java Source code

Java tutorial

Introduction

Here is the source code for org.languagetool.server.DatabaseCheckLogEntry.java

Source

/*
 *  LanguageTool, a natural language style checker
 *  * Copyright (C) 2018 Fabian Richter
 *  *
 *  * This library is free software; you can redistribute it and/or
 *  * modify it under the terms of the GNU Lesser General Public
 *  * License as published by the Free Software Foundation; either
 *  * version 2.1 of the License, or (at your option) any later version.
 *  *
 *  * This library 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
 *  * Lesser General Public License for more details.
 *  *
 *  * You should have received a copy of the GNU Lesser General Public
 *  * License along with this library; if not, write to the Free Software
 *  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 *  * USA
 *
 */

package org.languagetool.server;

import org.apache.commons.lang3.StringUtils;
import org.languagetool.Language;

import java.text.SimpleDateFormat;
import java.util.*;

class DatabaseCheckLogEntry extends DatabaseLogEntry {
    private final Long userId;
    private final Long client;
    private final Long server;
    private final int textSize;
    private final int matches;
    private final Language lang;
    private final Language langDetected;
    private final int computationTime;
    private final Long textSessionId;
    private final Calendar date;
    private final String checkMode;
    private DatabaseRuleMatchLogEntry ruleMatches = null;

    public DatabaseCheckLogEntry(Long userId, Long client, Long server, int textSize, int matches, Language lang,
            Language langDetected, int computationTime, Long textSessionId, String checkMode) {
        this.userId = userId;
        this.client = client;
        this.server = server;
        this.textSize = textSize;
        this.matches = matches;
        this.lang = lang;
        this.langDetected = langDetected;
        this.computationTime = computationTime;
        this.textSessionId = textSessionId;
        this.checkMode = checkMode;
        this.date = Calendar.getInstance();
    }

    public void setRuleMatches(DatabaseRuleMatchLogEntry entry) {
        ruleMatches = entry;
    }

    @Override
    public Map<Object, Object> getMapping() {
        HashMap<Object, Object> map = new HashMap<>();
        SimpleDateFormat dayFormat = new SimpleDateFormat("yyyy-MM-dd");
        dayFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        map.put("day", dayFormat.format(date.getTime()));
        map.put("date", ServerTools.getSQLDatetimeString(date));
        map.put("user_id", userId);
        map.put("textsize", textSize);
        map.put("matches", matches);
        map.put("language", StringUtils.abbreviate(lang.getShortCodeWithCountryAndVariant(), 30));
        map.put("language_detected", StringUtils.abbreviate(langDetected.getShortCodeWithCountryAndVariant(), 30));
        map.put("computation_time", computationTime);
        map.put("text_session_id", textSessionId);
        map.put("check_mode", StringUtils.abbreviate(checkMode, 32));
        map.put("server", server);
        map.put("client", client);
        return map;
    }

    @Override
    public String getMappingIdentifier() {
        return "org.languagetool.server.LogMapper.logCheck";
    }

    @Override
    public DatabaseLogEntry followup() {
        if (ruleMatches == null) {
            throw new IllegalStateException("No rule matches provided for check_log entry: " + getMapping());
        }
        if (ruleMatches.getMatchCount() == 0) {
            return null;
        }
        return ruleMatches;
    }

}