<commit_before>/*******************************************************************************
 * Copyright (c) 2006-2009, <NAME> and Elexis
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    <NAME> - initial implementation
 *    
 *******************************************************************************/
package ch.elexis.core.data.interfaces;

import ch.elexis.core.jdt.Nullable;
import ch.elexis.data.Konsultation;
import ch.elexis.data.Verrechnet;
import ch.rgw.tools.Result;

/**
 * Ein Optifier ist ein Optimizer und Verifier für Code-Systeme
 * 
 * @author gerry
 * 
 */
public interface IOptifier {
	/**
	 * Eine Konsultation optifizieren
	 */
	public Result<Object> optify(Konsultation kons);
	
	/**
	 * Eine Leistung einer Konsultation hinzufügen; die anderen Leistungen der Kons ggf. anpassen
	 * 
	 * @param code
	 *            der hinzuzufügende code
	 * @param kons
	 *            die Konsultation
	 * @return Result mit der möglicherweise veränderten Liste
	 */
	public ch.rgw.tools.Result<IVerrechenbar> add(IVerrechenbar code, Konsultation kons);
	
	/**
	 * Eine Leistung aus einer Konsultation entfernen; die Liste ggf. anpassen
	 * 
	 * @param code
	 *            der zu enfternende code
	 * @param kons
	 *            die KOnsultation
	 * @return Result mit der möglicherweise veränderten Liste
	 */
	public Result<Verrechnet> remove(Verrechnet code, Konsultation kons);
	
	/**
	 * @return the {@link Verrechnet} that may have been created during
	 *         {@link IOptifier#add(IVerrechenbar, Konsultation)}
	 * @since 3.1.0
	 */
	public @Nullable Verrechnet getCreatedVerrechnet();
	
}<commit_msg>[10785] add context methods to IOptifier interface<commit_after>/*******************************************************************************
 * Copyright (c) 2006-2009, <NAME> and Elexis
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    <NAME> - initial implementation
 *    
 *******************************************************************************/
package ch.elexis.core.data.interfaces;

import ch.elexis.core.jdt.Nullable;
import ch.elexis.data.Konsultation;
import ch.elexis.data.Verrechnet;
import ch.rgw.tools.Result;

/**
 * Ein Optifier ist ein Optimizer und Verifier für Code-Systeme
 * 
 * @author gerry
 * 
 */
public interface IOptifier {
	/**
	 * Eine Konsultation optifizieren
	 */
	public Result<Object> optify(Konsultation kons);
	
	/**
	 * Eine Leistung einer Konsultation hinzufügen; die anderen Leistungen der Kons ggf. anpassen
	 * 
	 * @param code
	 *            der hinzuzufügende code
	 * @param kons
	 *            die Konsultation
	 * @return Result mit der möglicherweise veränderten Liste
	 */
	public ch.rgw.tools.Result<IVerrechenbar> add(IVerrechenbar code, Konsultation kons);
	
	/**
	 * Eine Leistung aus einer Konsultation entfernen; die Liste ggf. anpassen
	 * 
	 * @param code
	 *            der zu enfternende code
	 * @param kons
	 *            die KOnsultation
	 * @return Result mit der möglicherweise veränderten Liste
	 */
	public Result<Verrechnet> remove(Verrechnet code, Konsultation kons);
	
	/**
	 * @return the {@link Verrechnet} that may have been created during
	 *         {@link IOptifier#add(IVerrechenbar, Konsultation)}
	 * @since 3.1.0
	 */
	public @Nullable Verrechnet getCreatedVerrechnet();
	
	/**
	 * Add an object to the context of the {@link IOptifier} implementation. If a object for the
	 * provided key already exists, the value is replaced.
	 * 
	 * @param key
	 * @param value
	 */
	default void putContext(String key, Object value){
		// default do nothing implement in subclass
	}
	
	/**
	 * Add an implementation specific context object. If a object for the provided key already
	 * exists, the value is replaced.
	 */
	default void clearContext(){
		// default do nothing implement in subclass
	}
}
{'fraction_non_alphanumeric': 0.15824124147660476, 'fraction_numerical': 0.008229485069362802, 'mean_word_length': 3.6491803278688524, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, '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': '6744630', 'n_tokens_mistral': 1346, 'n_tokens_neox': 1249, 'n_words': 390}