// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMPrimitiveProperty.java
// public interface CDMPrimitiveProperty extends CDMProperty, ReadableCDMPrimitiveProperty {
// 	
// 	public void setType(PrimitiveDataType type);
// 	
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMReferenceProperty.java
// public interface CDMReferenceProperty extends CDMProperty, ReadableCDMReferenceProperty {
// 	
// 	public void setTargetDataType(CanonicalDataType type);
// 	
// 	public CDMReferenceProperty withTargetDataType(CanonicalDataType type);
// 	
// 	public void setInverseProperty(CDMReferenceProperty inverse);
// 	
// 	public CDMReferenceProperty withInverseProperty(CDMReferenceProperty inverse);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMFactory.java
// public interface CDMFactory {
// 	
// 	public static CDMFactory INSTANCE = new NativeCDMFactory();
// 	
// 	public CanonicalDataType createDataType(String name);
// 	
// 	public CDMPrimitiveProperty createPrimitiveProperty(String name, PrimitiveDataType type);
// 	
// 	public CDMPrimitiveProperty createPrimitiveProperty(String name, PrimitiveDataType type, Cardinality cardinality);
// 	
// 	public CDMReferenceProperty createReferenceProperty(String name, CanonicalDataType targetType);
// 	
// 	public CDMReferenceProperty createReferenceProperty(String name, CanonicalDataType targetType, Cardinality cardinality);
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CanonicalDataType.java
// public interface CanonicalDataType {
// 	
// 	public String getName();
// 	
// 	public void setName(String name);
// 	
// 	public Iterable<CDMProperty> getProperties();
// 	
// 	public CDMProperty getProperty(String propName);
// 	
// 	public boolean hasProperty(CDMProperty property);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type, Cardinality cardinality);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type, Cardinality cardinality);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/Cardinality.java
// public enum Cardinality {
// 	ONE, ZERO_OR_ONE, ONE_OR_MORE, ZERO_OR_MORE
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/PrimitiveDataType.java
// public enum PrimitiveDataType {
// 	STRING, INTEGER, FLOAT, DECIMAL, BOOLEAN, DATE
// }


import com.modelsolv.kaboom.model.canonical.CDMPrimitiveProperty;
import com.modelsolv.kaboom.model.canonical.CDMReferenceProperty;
import com.modelsolv.kaboom.model.canonical.CDMFactory;
import com.modelsolv.kaboom.model.canonical.CanonicalDataType;
import com.modelsolv.kaboom.model.canonical.Cardinality;
import com.modelsolv.kaboom.model.canonical.PrimitiveDataType;
/*******************************************************************************
 * Copyright (c) 2014 ModelSolv, Inc. and others.
 * 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:
 *     ModelSolv, Inc. - initial API and implementation.
 *******************************************************************************/
package com.modelsolv.kaboom.model.canonical.nativeImpl;


public class NativeCDMFactory implements CDMFactory {

	@Override
	public CanonicalDataType createDataType(String name) {
		return new CanonicalDataTypeImpl(name);
	}

	@Override
	public CDMPrimitiveProperty createPrimitiveProperty(String name,
			PrimitiveDataType type) {
		return new CDMPrimitivePropertyImpl(name, type);
	}

	@Override
	public CDMPrimitiveProperty createPrimitiveProperty(String name,
			PrimitiveDataType type, Cardinality cardinality) {
		return new CDMPrimitivePropertyImpl(name, type, cardinality);
	}

	@Override
	public CDMReferenceProperty createReferenceProperty(String name,
			CanonicalDataType targetType) {
		return new CDMReferencePropertyImpl(name, targetType);
	}

	@Override
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMPrimitiveProperty.java
// public interface CDMPrimitiveProperty extends CDMProperty, ReadableCDMPrimitiveProperty {
// 	
// 	public void setType(PrimitiveDataType type);
// 	
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMReferenceProperty.java
// public interface CDMReferenceProperty extends CDMProperty, ReadableCDMReferenceProperty {
// 	
// 	public void setTargetDataType(CanonicalDataType type);
// 	
// 	public CDMReferenceProperty withTargetDataType(CanonicalDataType type);
// 	
// 	public void setInverseProperty(CDMReferenceProperty inverse);
// 	
// 	public CDMReferenceProperty withInverseProperty(CDMReferenceProperty inverse);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMFactory.java
// public interface CDMFactory {
// 	
// 	public static CDMFactory INSTANCE = new NativeCDMFactory();
// 	
// 	public CanonicalDataType createDataType(String name);
// 	
// 	public CDMPrimitiveProperty createPrimitiveProperty(String name, PrimitiveDataType type);
// 	
// 	public CDMPrimitiveProperty createPrimitiveProperty(String name, PrimitiveDataType type, Cardinality cardinality);
// 	
// 	public CDMReferenceProperty createReferenceProperty(String name, CanonicalDataType targetType);
// 	
// 	public CDMReferenceProperty createReferenceProperty(String name, CanonicalDataType targetType, Cardinality cardinality);
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CanonicalDataType.java
// public interface CanonicalDataType {
// 	
// 	public String getName();
// 	
// 	public void setName(String name);
// 	
// 	public Iterable<CDMProperty> getProperties();
// 	
// 	public CDMProperty getProperty(String propName);
// 	
// 	public boolean hasProperty(CDMProperty property);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type, Cardinality cardinality);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type, Cardinality cardinality);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/Cardinality.java
// public enum Cardinality {
// 	ONE, ZERO_OR_ONE, ONE_OR_MORE, ZERO_OR_MORE
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/PrimitiveDataType.java
// public enum PrimitiveDataType {
// 	STRING, INTEGER, FLOAT, DECIMAL, BOOLEAN, DATE
// }


// Path: src/main/java/com/modelsolv/kaboom/model/canonical/nativeImpl/NativeCDMFactory.java
import com.modelsolv.kaboom.model.canonical.CDMPrimitiveProperty;
import com.modelsolv.kaboom.model.canonical.CDMReferenceProperty;
import com.modelsolv.kaboom.model.canonical.CDMFactory;
import com.modelsolv.kaboom.model.canonical.CanonicalDataType;
import com.modelsolv.kaboom.model.canonical.Cardinality;
import com.modelsolv.kaboom.model.canonical.PrimitiveDataType;

/*******************************************************************************
 * Copyright (c) 2014 ModelSolv, Inc. and others.
 * 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:
 *     ModelSolv, Inc. - initial API and implementation.
 *******************************************************************************/
package com.modelsolv.kaboom.model.canonical.nativeImpl;


public class NativeCDMFactory implements CDMFactory {

	@Override
	public CanonicalDataType createDataType(String name) {
		return new CanonicalDataTypeImpl(name);
	}

	@Override
	public CDMPrimitiveProperty createPrimitiveProperty(String name,
			PrimitiveDataType type) {
		return new CDMPrimitivePropertyImpl(name, type);
	}

	@Override
	public CDMPrimitiveProperty createPrimitiveProperty(String name,
			PrimitiveDataType type, Cardinality cardinality) {
		return new CDMPrimitivePropertyImpl(name, type, cardinality);
	}

	@Override
	public CDMReferenceProperty createReferenceProperty(String name,
			CanonicalDataType targetType) {
		return new CDMReferencePropertyImpl(name, targetType);
	}

	@Override
	public CDMReferenceProperty createReferenceProperty(String name,