/*-
 * ~~~~~~licensing~~~~~~
 * object-runtime-core
 * ==========
 * Copyright (C) 2020 - 2025 EmDev LLC
 * ==========
 * You may not use this file except in accordance with the License Terms of the Copyright
 * Holder located at: https://entaxy.ru/eula . All copyrights, all intellectual property
 * rights to the Software and any copies are the property of the Copyright Holder. Unless
 * it is explicitly allowed the Copyright Holder, the User is prohibited from using the
 * Software for commercial purposes to provide services to third parties.
 * 
 * The Copyright Holder hereby declares that the Software is provided on an "AS IS".
 * Under no circumstances does the Copyright Holder guarantee or promise that the
 * Software provided by him will be suitable or not suitable for the specific purposes
 * of the User, that the Software will meet all commercial and personal subjective
 * expectations of the User, that the Software will work properly, without technical
 * errors, quickly and uninterruptedly.
 * 
 * Under no circumstances shall the Copyright Holder or its Affiliates is not liable
 * to the User for any direct or indirect losses of the User, his expenses or actual
 * damage, including, downtime; loss of bussines; lost profit; lost earnings; loss
 * or damage to data, property, etc.
 * ~~~~~~/licensing~~~~~~
 */
package ru.entaxy.platform.objects.runtime.impl.manager;

import java.util.HashMap;
import java.util.Map;

import ru.entaxy.platform.objects.runtime.EntaxyRuntimeObjectManager.ENTAXY_RUNTIME_OBJECT_OPERATION;
import ru.entaxy.platform.objects.runtime.EntaxyRuntimeObjectManager.OperationConfig;

public class OperationConfigImpl implements OperationConfig {

	String objectFullId;
	
	boolean isForced = false;
	boolean isSoft = false;
	boolean isAffected = false;
	
	final Map<String, ENTAXY_RUNTIME_OBJECT_OPERATION> affected = new HashMap<>();
	
	public OperationConfigImpl(String objectFullId) {
		super();
		setObjectFullId(objectFullId);
	}
	
	// OperationConfig
	
	@Override
	public String getObjectFullId() {
		return objectFullId;
	}

	@Override
	public boolean isForced() {
		return isForced;
	}

	@Override
	public boolean isSoft() {
		return isSoft;
	}

	@Override
	public Map<String, ENTAXY_RUNTIME_OBJECT_OPERATION> getAffected() {
		return affected;
	}

	// others

	public OperationConfigImpl forced(boolean forcedValue) {
		this.setForced(forcedValue);
		return this;
	};
	
	public OperationConfigImpl soft(boolean softValue) {
		this.setSoft(softValue);
		return this;
	};
	
	public OperationConfigImpl affectedOperation(boolean affectedValue) {
        this.setIsAffected(affectedValue);
        return this;
    };
	
	public OperationConfigImpl objectFullId(String objectFullIdValue) {
		this.setObjectFullId(objectFullIdValue);
		return this;
	};
	
	public void setObjectFullId(String objectFullId) {
		this.objectFullId = objectFullId;
	}

	public void setForced(boolean isForced) {
		this.isForced = isForced;
	}

	public void setSoft(boolean isSoft) {
		this.isSoft = isSoft;
	}
	
	public void setIsAffected(boolean isAffected) {
        this.isAffected = isAffected;
    }

    @Override
    public boolean isAffected() {
        return isAffected;
    }

}
