// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/FactoryUtils.java
// public class FactoryUtils {
// 
// 	public static final String ACTIVE = "1";
// 
// 	public static boolean parseActive(String active) {
// 		return ACTIVE.equals(active);
// 	}
// 
// 	public static boolean isConceptId(String componentId) {
// 		if (componentId != null) {
// 			final int length = componentId.length();
// 			return length > 3 && componentId.charAt(length - 2) == '0';
// 		}
// 		return false;
// 	}
// 
// 	public static boolean isDescriptionId(String componentId) {
// 		if (componentId != null) {
// 			final int length = componentId.length();
// 			return length > 3 && componentId.charAt(length - 2) == '1';
// 		}
// 		return false;
// 	}
// }
// 
// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/HighLevelComponentFactory.java
// public interface HighLevelComponentFactory extends ComponentFactory {
// 
// 	void addConceptFSN(String conceptId, String term);
// 
// 	void addInferredConceptParent(String sourceId, String parentId);
// 
// 	void addStatedConceptParent(String sourceId, String parentId);
// 
// 	void removeInferredConceptParent(String sourceId, String destinationId);
// 
// 	void removeStatedConceptParent(String sourceId, String destinationId);
// 
// 	void addInferredConceptAttribute(String sourceId, String typeId, String valueId);
// 
// 	void addInferredConceptConcreteAttribute(String sourceId, String typeId, String value);
// 
// 	void addStatedConceptAttribute(String sourceId, String typeId, String valueId);
// 
// 	void addConceptReferencedInRefsetId(String refsetId, String conceptId);
// 	
// 	void addInferredConceptChild(String sourceId, String destinationId);
// 	
// 	void addStatedConceptChild(String sourceId, String destinationId);
// 	
// 	void removeInferredConceptChild(String sourceId, String destinationId);
// 
// 	void removeStatedConceptChild(String sourceId, String destinationId);
// }
// 
// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/ImpotentComponentFactory.java
// public class ImpotentComponentFactory implements ComponentFactory {
// 
// 	@Override
// 	public void preprocessingContent() {
// 
// 	}
// 
// 	@Override
// 	public void loadingComponentsStarting() {
// 
// 	}
// 
// 	@Override
// 	public void loadingComponentsCompleted() {
// 
// 	}
// 
// 	@Override
// 	public void newConceptState(String conceptId, String effectiveTime, String active, String moduleId, String definitionStatusId) {
// 
// 	}
// 
// 	@Override
// 	public void newDescriptionState(String id, String effectiveTime, String active, String moduleId, String conceptId, String languageCode, String typeId, String term, String caseSignificanceId) {
// 
// 	}
// 
// 	@Override
// 	public void newRelationshipState(String id, String effectiveTime, String active, String moduleId, String sourceId, String destinationId, String relationshipGroup, String typeId, String characteristicTypeId, String modifierId) {
// 
// 	}
// 
// 	@Override
// 	public void newConcreteRelationshipState(String id, String effectiveTime, String active, String moduleId, String sourceId, String value, String relationshipGroup, String typeId, String characteristicTypeId, String modifierId) {
// 
// 	}
// 
// 	@Override
// 	public void newReferenceSetMemberState(String[] fieldNames, String id, String effectiveTime, String active, String moduleId, String refsetId, String referencedComponentId, String... otherValues) {
// 
// 	}
// 
// }


import org.ihtsdo.otf.snomedboot.factory.FactoryUtils;
import org.ihtsdo.otf.snomedboot.factory.HighLevelComponentFactory;
import org.ihtsdo.otf.snomedboot.factory.ImpotentComponentFactory;
package org.ihtsdo.otf.snomedboot.factory.implementation.standard;


public class ComponentStoreComponentFactoryImpl extends ImpotentComponentFactory implements HighLevelComponentFactory {

	private final ComponentStore componentStore;

	public ComponentStoreComponentFactoryImpl(ComponentStore componentStore) {
		this.componentStore = componentStore;
	}

	@Override
	public void newConceptState(String conceptId, String effectiveTime, String active, String moduleId, String definitionStatusId) {
// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/FactoryUtils.java
// public class FactoryUtils {
// 
// 	public static final String ACTIVE = "1";
// 
// 	public static boolean parseActive(String active) {
// 		return ACTIVE.equals(active);
// 	}
// 
// 	public static boolean isConceptId(String componentId) {
// 		if (componentId != null) {
// 			final int length = componentId.length();
// 			return length > 3 && componentId.charAt(length - 2) == '0';
// 		}
// 		return false;
// 	}
// 
// 	public static boolean isDescriptionId(String componentId) {
// 		if (componentId != null) {
// 			final int length = componentId.length();
// 			return length > 3 && componentId.charAt(length - 2) == '1';
// 		}
// 		return false;
// 	}
// }
// 
// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/HighLevelComponentFactory.java
// public interface HighLevelComponentFactory extends ComponentFactory {
// 
// 	void addConceptFSN(String conceptId, String term);
// 
// 	void addInferredConceptParent(String sourceId, String parentId);
// 
// 	void addStatedConceptParent(String sourceId, String parentId);
// 
// 	void removeInferredConceptParent(String sourceId, String destinationId);
// 
// 	void removeStatedConceptParent(String sourceId, String destinationId);
// 
// 	void addInferredConceptAttribute(String sourceId, String typeId, String valueId);
// 
// 	void addInferredConceptConcreteAttribute(String sourceId, String typeId, String value);
// 
// 	void addStatedConceptAttribute(String sourceId, String typeId, String valueId);
// 
// 	void addConceptReferencedInRefsetId(String refsetId, String conceptId);
// 	
// 	void addInferredConceptChild(String sourceId, String destinationId);
// 	
// 	void addStatedConceptChild(String sourceId, String destinationId);
// 	
// 	void removeInferredConceptChild(String sourceId, String destinationId);
// 
// 	void removeStatedConceptChild(String sourceId, String destinationId);
// }
// 
// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/ImpotentComponentFactory.java
// public class ImpotentComponentFactory implements ComponentFactory {
// 
// 	@Override
// 	public void preprocessingContent() {
// 
// 	}
// 
// 	@Override
// 	public void loadingComponentsStarting() {
// 
// 	}
// 
// 	@Override
// 	public void loadingComponentsCompleted() {
// 
// 	}
// 
// 	@Override
// 	public void newConceptState(String conceptId, String effectiveTime, String active, String moduleId, String definitionStatusId) {
// 
// 	}
// 
// 	@Override
// 	public void newDescriptionState(String id, String effectiveTime, String active, String moduleId, String conceptId, String languageCode, String typeId, String term, String caseSignificanceId) {
// 
// 	}
// 
// 	@Override
// 	public void newRelationshipState(String id, String effectiveTime, String active, String moduleId, String sourceId, String destinationId, String relationshipGroup, String typeId, String characteristicTypeId, String modifierId) {
// 
// 	}
// 
// 	@Override
// 	public void newConcreteRelationshipState(String id, String effectiveTime, String active, String moduleId, String sourceId, String value, String relationshipGroup, String typeId, String characteristicTypeId, String modifierId) {
// 
// 	}
// 
// 	@Override
// 	public void newReferenceSetMemberState(String[] fieldNames, String id, String effectiveTime, String active, String moduleId, String refsetId, String referencedComponentId, String... otherValues) {
// 
// 	}
// 
// }


// Path: src/main/java/org/ihtsdo/otf/snomedboot/factory/implementation/standard/ComponentStoreComponentFactoryImpl.java
import org.ihtsdo.otf.snomedboot.factory.FactoryUtils;
import org.ihtsdo.otf.snomedboot.factory.HighLevelComponentFactory;
import org.ihtsdo.otf.snomedboot.factory.ImpotentComponentFactory;

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


public class ComponentStoreComponentFactoryImpl extends ImpotentComponentFactory implements HighLevelComponentFactory {

	private final ComponentStore componentStore;

	public ComponentStoreComponentFactoryImpl(ComponentStore componentStore) {
		this.componentStore = componentStore;
	}

	@Override
	public void newConceptState(String conceptId, String effectiveTime, String active, String moduleId, String definitionStatusId) {
		componentStore.addConcept(new ConceptImpl(conceptId, effectiveTime, FactoryUtils.parseActive(active), moduleId, definitionStatusId));