<commit_before>
/**
 * 
 */

package org.csstudio.nams.common.material.regelwerk;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Locale;

import org.csstudio.nams.common.fachwert.MessageKeyEnum;
import org.csstudio.nams.common.fachwert.Millisekunden;
import org.csstudio.nams.common.material.AlarmNachricht;
import org.csstudio.nams.service.logging.declaration.ILogger;

/**
 * @author <NAME>
 * 
 */
public class StringRegel implements VersandRegel {

	private static ILogger logger;

	public static void staticInject(final ILogger logger) {
		StringRegel.logger = logger;
	}

	private final StringRegelOperator operator;
	private final String compareString;

	private final MessageKeyEnum messageKey;

	public StringRegel(final StringRegelOperator operator,
			final MessageKeyEnum messageKey, final String compareString) {
		this.operator = operator;
		this.messageKey = messageKey;
		this.compareString = compareString;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.c1wps.desy.ams.allgemeines.regelwerk.VersandRegel#pruefeNachrichtAufBestaetigungsUndAufhebungsNachricht(de.c1wps.desy.ams.allgemeines.AlarmNachricht,
	 *      de.c1wps.desy.ams.allgemeines.regelwerk.Pruefliste)
	 */
	@Override
    public void pruefeNachrichtAufBestaetigungsUndAufhebungsNachricht(
			final AlarmNachricht nachricht, final Pruefliste bisherigesErgebnis) {
		// nothing to do here
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.c1wps.desy.ams.allgemeines.regelwerk.VersandRegel#pruefeNachrichtAufTimeOuts(de.c1wps.desy.ams.allgemeines.regelwerk.Pruefliste,
	 *      de.c1wps.desy.ams.allgemeines.Millisekunden)
	 */
	@Override
    public Millisekunden pruefeNachrichtAufTimeOuts(
			final Pruefliste bisherigesErgebnis,
			final Millisekunden verstricheneZeitSeitErsterPruefung) {
		// nothing to do here
		return null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.c1wps.desy.ams.allgemeines.regelwerk.VersandRegel#pruefeNachrichtErstmalig(de.c1wps.desy.ams.allgemeines.AlarmNachricht,
	 *      de.c1wps.desy.ams.allgemeines.regelwerk.Pruefliste)
	 */
	@Override
    public Millisekunden pruefeNachrichtErstmalig(
			final AlarmNachricht nachricht, final Pruefliste ergebnisListe) {

		boolean istGueltig = false;

		// TODO hier muss noch der richtige Schlüssel gewählt werden
		final String value = nachricht.getValueFor(this.messageKey);

		try {
			switch (this.operator) {
			// text compare
			case OPERATOR_TEXT_EQUAL:
				istGueltig = this.wildcardStringCompare(value,
						this.compareString);
				break;
			case OPERATOR_TEXT_NOT_EQUAL:
				istGueltig = !this.wildcardStringCompare(value,
						this.compareString);
				break;

			// numeric compare
			case OPERATOR_NUMERIC_LT:
				istGueltig = this.numericCompare(value, this.compareString) < 0;
				break;
			case OPERATOR_NUMERIC_LT_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) <= 0;
				break;
			case OPERATOR_NUMERIC_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) == 0;
				break;
			case OPERATOR_NUMERIC_GT_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) >= 0;
				break;
			case OPERATOR_NUMERIC_GT:
				istGueltig = this.numericCompare(value, this.compareString) > 0;
				break;
			case OPERATOR_NUMERIC_NOT_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) != 0;
				break;

			// time compare
			case OPERATOR_TIME_BEFORE:
				istGueltig = this.timeCompare(value, this.compareString) < 0;
				break;
			case OPERATOR_TIME_BEFORE_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) <= 0;
				break;
			case OPERATOR_TIME_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) == 0;
				break;
			case OPERATOR_TIME_AFTER_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) >= 0;
				break;
			case OPERATOR_TIME_AFTER:
				istGueltig = this.timeCompare(value, this.compareString) > 0;
				break;
			case OPERATOR_TIME_NOT_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) != 0;
				break;
			}
		} catch (final Exception e) {
            if(StringRegel.logger != null) {
                StringRegel.logger.logErrorMessage(this,
                        "An error occured during parsing of : " + nachricht);
                }
			istGueltig = true;
		}

		if (istGueltig) {
			ergebnisListe.setzeErgebnisFuerRegelFallsVeraendert(this,
					RegelErgebnis.ZUTREFFEND);
		} else {
			ergebnisListe.setzeErgebnisFuerRegelFallsVeraendert(this,
					RegelErgebnis.NICHT_ZUTREFFEND);
		}
		return null;
	}

	@Override
	public String toString() {
		final StringBuilder stringBuilder = new StringBuilder("StringRegel: ");
		stringBuilder.append("messageKey: ");
		stringBuilder.append(this.messageKey);
		stringBuilder.append(" operator: ");
		stringBuilder.append(this.operator);<commit_msg>o.c.nams.common: Removed previously added log messages.<commit_after>
/**
 * 
 */

package org.csstudio.nams.common.material.regelwerk;

import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
import java.util.Locale;

import org.csstudio.nams.common.fachwert.MessageKeyEnum;
import org.csstudio.nams.common.fachwert.Millisekunden;
import org.csstudio.nams.common.material.AlarmNachricht;
import org.csstudio.nams.service.logging.declaration.ILogger;

/**
 * @author <NAME>
 * 
 */
public class StringRegel implements VersandRegel {

	private static ILogger logger;

	public static void staticInject(final ILogger logger) {
		StringRegel.logger = logger;
	}

	private final StringRegelOperator operator;
	private final String compareString;

	private final MessageKeyEnum messageKey;

	public StringRegel(final StringRegelOperator operator,
			final MessageKeyEnum messageKey, final String compareString) {
		this.operator = operator;
		this.messageKey = messageKey;
		this.compareString = compareString;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.c1wps.desy.ams.allgemeines.regelwerk.VersandRegel#pruefeNachrichtAufBestaetigungsUndAufhebungsNachricht(de.c1wps.desy.ams.allgemeines.AlarmNachricht,
	 *      de.c1wps.desy.ams.allgemeines.regelwerk.Pruefliste)
	 */
	@Override
    public void pruefeNachrichtAufBestaetigungsUndAufhebungsNachricht(
			final AlarmNachricht nachricht, final Pruefliste bisherigesErgebnis) {
		// nothing to do here
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.c1wps.desy.ams.allgemeines.regelwerk.VersandRegel#pruefeNachrichtAufTimeOuts(de.c1wps.desy.ams.allgemeines.regelwerk.Pruefliste,
	 *      de.c1wps.desy.ams.allgemeines.Millisekunden)
	 */
	@Override
    public Millisekunden pruefeNachrichtAufTimeOuts(
			final Pruefliste bisherigesErgebnis,
			final Millisekunden verstricheneZeitSeitErsterPruefung) {
		// nothing to do here
		return null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see de.c1wps.desy.ams.allgemeines.regelwerk.VersandRegel#pruefeNachrichtErstmalig(de.c1wps.desy.ams.allgemeines.AlarmNachricht,
	 *      de.c1wps.desy.ams.allgemeines.regelwerk.Pruefliste)
	 */
	@Override
    public Millisekunden pruefeNachrichtErstmalig(
			final AlarmNachricht nachricht, final Pruefliste ergebnisListe) {

		boolean istGueltig = false;

		// TODO hier muss noch der richtige Schlüssel gewählt werden
		final String value = nachricht.getValueFor(this.messageKey);

		try {
			switch (this.operator) {
			// text compare
			case OPERATOR_TEXT_EQUAL:
				istGueltig = this.wildcardStringCompare(value,
						this.compareString);
				break;
			case OPERATOR_TEXT_NOT_EQUAL:
				istGueltig = !this.wildcardStringCompare(value,
						this.compareString);
				break;

			// numeric compare
			case OPERATOR_NUMERIC_LT:
				istGueltig = this.numericCompare(value, this.compareString) < 0;
				break;
			case OPERATOR_NUMERIC_LT_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) <= 0;
				break;
			case OPERATOR_NUMERIC_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) == 0;
				break;
			case OPERATOR_NUMERIC_GT_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) >= 0;
				break;
			case OPERATOR_NUMERIC_GT:
				istGueltig = this.numericCompare(value, this.compareString) > 0;
				break;
			case OPERATOR_NUMERIC_NOT_EQUAL:
				istGueltig = this.numericCompare(value, this.compareString) != 0;
				break;

			// time compare
			case OPERATOR_TIME_BEFORE:
				istGueltig = this.timeCompare(value, this.compareString) < 0;
				break;
			case OPERATOR_TIME_BEFORE_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) <= 0;
				break;
			case OPERATOR_TIME_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) == 0;
				break;
			case OPERATOR_TIME_AFTER_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) >= 0;
				break;
			case OPERATOR_TIME_AFTER:
				istGueltig = this.timeCompare(value, this.compareString) > 0;
				break;
			case OPERATOR_TIME_NOT_EQUAL:
				istGueltig = this.timeCompare(value, this.compareString) != 0;
				break;
			}
		} catch (final Exception e) {
            if(StringRegel.logger != null) {
                StringRegel.logger.logErrorMessage(this,
                        "An error occured during parsing of : " + nachricht);
            }
			istGueltig = true;
		}

		if (istGueltig) {
			ergebnisListe.setzeErgebnisFuerRegelFallsVeraendert(this,
					RegelErgebnis.ZUTREFFEND);
		} else {
			ergebnisListe.setzeErgebnisFuerRegelFallsVeraendert(this,
					RegelErgebnis.NICHT_ZUTREFFEND);
		}
		return null;
	}

	@Override
	public String toString() {
		final StringBuilder stringBuilder = new StringBuilder("StringRegel: ");
		stringBuilder.append("messageKey: ");
		stringBuilder.append(this.messageKey);
		stringBuilder.append(" operator: ");
		stringBuilder.append(this.operator);
{'fraction_non_alphanumeric': 0.09473359391071796, 'fraction_numerical': 0.004320098745114174, 'mean_word_length': 4.032608695652174, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3757065', 'n_tokens_mistral': 3880, 'n_tokens_neox': 3466, 'n_words': 560}