// Path: src/main/java/org/ihtsdo/otf/snomedboot/domain/ConceptConstants.java
// public interface ConceptConstants {
// 	String ROOT_CONCEPT = "138875005";
// 	String isA = "116680003";
// 	String FSN = "900000000000003001";
// 	String REFSET_CONCEPT = "900000000000455006";
// 	String CORE_MODULE = "900000000000207008";
// 	String MODEL_MODULE = "900000000000012004";
// 	String MODEL_CONCEPT = "900000000000441003";
// 	String GB_EN_LANGUAGE_REFERENCE_SET = "900000000000508004";
// 	String US_EN_LANGUAGE_REFERENCE_SET = "900000000000509007";
// 	String STATED_RELATIONSHIP = "900000000000010007";
// 	String INFERRED_RELATIONSHIP = "900000000000011006";
// }


import org.ihtsdo.otf.snomedboot.domain.ConceptConstants;
import org.ihtsdo.otf.snomedboot.factory.*;
package org.ihtsdo.otf.snomedboot.factory.implementation;


public class HighLevelComponentFactoryAdapterImpl implements ComponentFactory {

	private final LoadingProfile loadingProfile;
	private final HighLevelComponentFactory highLevelFactory;
	private final ComponentFactory delegateComponentFactory;

	public HighLevelComponentFactoryAdapterImpl(final LoadingProfile loadingProfile, HighLevelComponentFactory highLevelComponentFactory, ComponentFactory delegateComponentFactory) {
		this.loadingProfile = loadingProfile;
		this.highLevelFactory = highLevelComponentFactory;
		this.delegateComponentFactory = delegateComponentFactory;
	}

	@Override
	public void preprocessingContent() {
		delegateComponentFactory.preprocessingContent();
	}

	@Override
	public void loadingComponentsStarting() {
		delegateComponentFactory.loadingComponentsStarting();
	}

	@Override
	public void loadingComponentsCompleted() {
		delegateComponentFactory.loadingComponentsCompleted();
	}

	@Override
	public void newConceptState(String conceptId, String effectiveTime, String active, String moduleId, String definitionStatusId) {
		delegateComponentFactory.newConceptState(conceptId, effectiveTime, active, moduleId, definitionStatusId);
	}

	@Override
	public void newDescriptionState(String id, String effectiveTime, String active, String moduleId, String conceptId, String languageCode, String typeId, String term, String caseSignificanceId) {
// Path: src/main/java/org/ihtsdo/otf/snomedboot/domain/ConceptConstants.java
// public interface ConceptConstants {
// 	String ROOT_CONCEPT = "138875005";
// 	String isA = "116680003";
// 	String FSN = "900000000000003001";
// 	String REFSET_CONCEPT = "900000000000455006";
// 	String CORE_MODULE = "900000000000207008";
// 	String MODEL_MODULE = "900000000000012004";
// 	String MODEL_CONCEPT = "900000000000441003";
// 	String GB_EN_LANGUAGE_REFERENCE_SET = "900000000000508004";
// 	String US_EN_LANGUAGE_REFERENCE_SET = "900000000000509007";
// 	String STATED_RELATIONSHIP = "900000000000010007";
// 	String INFERRED_RELATIONSHIP = "900000000000011006";
// }


// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/implementation/HighLevelComponentFactoryAdapterImpl.java
import org.ihtsdo.otf.snomedboot.domain.ConceptConstants;
import org.ihtsdo.otf.snomedboot.factory.*;

package org.ihtsdo.otf.snomedboot.factory.implementation;


public class HighLevelComponentFactoryAdapterImpl implements ComponentFactory {

	private final LoadingProfile loadingProfile;
	private final HighLevelComponentFactory highLevelFactory;
	private final ComponentFactory delegateComponentFactory;

	public HighLevelComponentFactoryAdapterImpl(final LoadingProfile loadingProfile, HighLevelComponentFactory highLevelComponentFactory, ComponentFactory delegateComponentFactory) {
		this.loadingProfile = loadingProfile;
		this.highLevelFactory = highLevelComponentFactory;
		this.delegateComponentFactory = delegateComponentFactory;
	}

	@Override
	public void preprocessingContent() {
		delegateComponentFactory.preprocessingContent();
	}

	@Override
	public void loadingComponentsStarting() {
		delegateComponentFactory.loadingComponentsStarting();
	}

	@Override
	public void loadingComponentsCompleted() {
		delegateComponentFactory.loadingComponentsCompleted();
	}

	@Override
	public void newConceptState(String conceptId, String effectiveTime, String active, String moduleId, String definitionStatusId) {
		delegateComponentFactory.newConceptState(conceptId, effectiveTime, active, moduleId, definitionStatusId);
	}

	@Override
	public void newDescriptionState(String id, String effectiveTime, String active, String moduleId, String conceptId, String languageCode, String typeId, String term, String caseSignificanceId) {
		if (isActive(active) && ConceptConstants.FSN.equals(typeId)) {