org.sakuli.actions.settings.ScreenBasedSettings.java Source code

Java tutorial

Introduction

Here is the source code for org.sakuli.actions.settings.ScreenBasedSettings.java

Source

/*
 * Sakuli - Testing and Monitoring-Tool for Websites and common UIs.
 *
 * Copyright 2013 - 2015 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.sakuli.actions.settings;

import org.sakuli.datamodel.properties.ActionProperties;
import org.sakuli.datamodel.properties.SakuliProperties;
import org.sikuli.basics.Debug;
import org.sikuli.basics.Settings;
import org.sikuli.script.RobotDesktop;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import uk.org.lidalia.sysoutslf4j.context.SysOutOverSLF4J;

import javax.annotation.PostConstruct;
import java.security.InvalidParameterException;

/**
 * @author Tobias Schneck
 */
@Component
public class ScreenBasedSettings extends Settings {
    private static final Logger LOGGER = LoggerFactory.getLogger(ScreenBasedSettings.class);
    private ActionProperties props;
    private SakuliProperties sakuliProps;
    private double currentSimilarity;

    @Autowired
    public ScreenBasedSettings(ActionProperties props, SakuliProperties sakuliProps) {
        this.props = props;
        this.sakuliProps = sakuliProps;
        restetMinSimilarity();
    }

    @PostConstruct
    public void setDefaults() {
        setMinSimilarity(currentSimilarity);

        WaitScanRate = 10f;
        ObserveScanRate = 10f;

        ClickDelay = props.getClickDelay();
        RobotDesktop.stdAutoDelay = props.getTypeDelayMs();
        //if stdAutoDelay is set TypeDelay is no longer needed!
        TypeDelay = 0;

        OcrDataPath = sakuliProps.getTessDataLibFolder().toAbsolutePath().toString();
        OcrTextSearch = true;
        OcrTextRead = true;

        Highlight = props.isAutoHighlightEnabled();
        if (props.getDefaultHighlightSeconds() < 1) {
            /**
             * because of the mehtode {@link org.sikuli.script.ScreenHighlighter#closeAfter(float)}
             * */
            throw new InvalidParameterException("the property '" + ActionProperties.DEFAULT_HIGHLIGHT_SEC
                    + "' has to be greater as 1, but was " + props.getDefaultHighlightSeconds());
        }
        DefaultHighlightTime = props.getDefaultHighlightSeconds();
        WaitAfterHighlight = 0.1f;

        /***
         * Logging for sikuliX => {@link SysOutOverSLF4J} will send the logs to SLF4J
         */
        Logger sikuliLogger = LoggerFactory.getLogger(Debug.class);
        if (sikuliLogger.isInfoEnabled()) {
            LOGGER.debug("sikuli log level INFO enabled");
            ActionLogs = true;
            InfoLogs = true;
            ProfileLogs = true;
        }
        if (sikuliLogger.isDebugEnabled()) {
            LOGGER.debug("sikuli log level DEBUG enabled");
            DebugLogs = true;
        }
    }

    public void setMinSimilarity(double minSimilarity) {
        currentSimilarity = minSimilarity;
        MinSimilarity = minSimilarity;
        CheckLastSeenSimilar = (float) minSimilarity;

    }

    public void restetMinSimilarity() {
        setMinSimilarity(props.getDefaultRegionSimilarity());
    }
}