package org.eclipse.emf.texo.test.model.samples.forum;
import java.util.List;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.texo.model.AbstractModelFeatureMapEntry;
import org.eclipse.emf.texo.model.ModelFactory;
import org.eclipse.emf.texo.model.ModelFeatureMapEntry;
import org.eclipse.emf.texo.model.ModelObject;
import org.eclipse.emf.texo.model.ModelPackage;
import org.eclipse.emf.texo.test.model.base.identifiable.IdentifiableModelFactory;
/**
* The <b>{@link ModelFactory}</b> for the types of this model: org.eclipse.emf.texo.test.model.samples.forum. It
* contains code to create instances {@link ModelObject} wrappers and instances for EClasses and convert objects back
* and forth from their String (XML) representation. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public class ForumModelFactory implements ModelFactory {
/**
* Creates an instance for an {@link EClass} <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param eClass
* creates a Object instance for this EClass
* @return an object representing the eClass
* @generated
*/
public Object create(EClass eClass) {
switch (eClass.getClassifierID()) {
case ForumModelPackage.FORUM_CLASSIFIER_ID:
return createForum();
case ForumModelPackage.MEMBER_CLASSIFIER_ID:
return createMember();
case ForumModelPackage.TOPIC_CLASSIFIER_ID:
return createTopic();
case ForumModelPackage.POST_CLASSIFIER_ID:
return createPost();
default:
throw new IllegalArgumentException("The EClass '" + eClass.getName()
+ "' is not a valid EClass for this EPackage");
}
}
/**
* Wraps an object in a {@link ModelObject}. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param eClass
* the EClass of the object
* @param adaptee
* the object being wrapped/adapted
* @return the wrapper {@link ModelObject}
* @generated
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public <T> ModelObject<T> createModelObject(EClass eClass, T adaptee) {
ModelObject<Object> modelObject = null;
switch (eClass.getClassifierID()) {
case ForumModelPackage.FORUM_CLASSIFIER_ID:
modelObject = new ForumModelObject();
break;
case ForumModelPackage.MEMBER_CLASSIFIER_ID:
modelObject = new MemberModelObject();
break;
case ForumModelPackage.TOPIC_CLASSIFIER_ID:
modelObject = new TopicModelObject();
break;
case ForumModelPackage.POST_CLASSIFIER_ID:
modelObject = new PostModelObject();
break;
default:
throw new IllegalArgumentException("The EClass '" + eClass + "' is not defined in this EPackage");
}
modelObject.setTarget(adaptee);
return (ModelObject<T>) modelObject;
}
/**
* Creates a feature map entry instance for a certain EStructuralFeature.
*
* @param eFeature
* the feature map feature
* @return the pojo feature map entry
* @generated
*/
public Object createFeatureMapEntry(EStructuralFeature eFeature) {
throw new IllegalArgumentException("The EStructuralFeature '" + eFeature
+ "' is not a valid feature map in this EPackage");
}
/**
* Wraps a feature map entry pojo in a {@link AbstractModelFeatureMapEntry}. If the feature map entry is null then a
* new one is created and <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param eFeature
* the feature map feature of the object
* @param adaptee
* the pojo feature map entry being wrapped/adapted
* @return the wrapper {@link ModelFeatureMapEntry}
* @generated
*/
public ModelFeatureMapEntry<?> createModelFeatureMapEntry(EStructuralFeature eFeature, Object adaptee) {
throw new IllegalArgumentException("The EStructuralFeature '" + eFeature
+ "' is not a valid feature map in this EPackage");
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @return an instance of the model object representing the EClass Forum
* @generated
*/
public Forum createForum() {
return new Forum();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @return an instance of the model object representing the EClass Member
* @generated
*/
public Member createMember() {
return new Member();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @return an instance of the model object representing the EClass Topic
* @generated
*/
public Topic createTopic() {
return new Topic();
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @return an instance of the model object representing the EClass Post
* @generated
*/
public Post createPost() {
return new Post();
}
/**
* Converts an instance of an {@link EDataType} to a String. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param eDataType
* the {@link EDataType} defining the type
* @param value
* the object to convert, if the value is null then null is returned.
* @generated
*/
public Object createFromString(EDataType eDataType, String value) {
switch (eDataType.getClassifierID()) {
case ForumModelPackage.TOPICCATEGORY_CLASSIFIER_ID:
return createTopicCategoryFromString(value);
case ForumModelPackage.TOPICCATEGORYOBJECT_CLASSIFIER_ID:
return createTopicCategoryObjectFromString(value);
default:
throw new IllegalArgumentException("The EDatatype '" + eDataType + "' is not defined in this EPackage");
}
}
/**
* Converts an instance of an {@link EDataType} to a String. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param eDataType
* the {@link EDataType} defining the type
* @param value
* the object to convert, if value == null then null is returned
* @generated
*/
public String convertToString(EDataType eDataType, Object value) {
switch (eDataType.getClassifierID()) {
case ForumModelPackage.TOPICCATEGORY_CLASSIFIER_ID:
return convertTopicCategoryToString((TopicCategory) value);
case ForumModelPackage.TOPICCATEGORYOBJECT_CLASSIFIER_ID:
return convertTopicCategoryObjectToString((TopicCategory) value);
default:
throw new IllegalArgumentException("The EDatatype '" + eDataType + "' is not defined in this EPackage.");
}
}
/**
* Converts the EDataType: TopicCategory to a String. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param value
* the object to convert
* @return the String representing the value, if value == null then null is returned
* @generated
*/
public String convertTopicCategoryToString(TopicCategory value) {
if (value == null) {
return null;
}
return value.toString();
}
/**
* Creates an instance of the EDataType: TopicCategory from a String. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param value
* the string value to convert to an object
* @return the instance of the data type, if value == null then null is returned
* @generated
*/
public TopicCategory createTopicCategoryFromString(String value) {
if (value == null) {
return null;
}
return TopicCategory.get(value);
}
/**
* Converts the EDataType: TopicCategoryObject to a String. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param value
* the object to convert
* @return the String representing the value, if value == null then null is returned
* @generated
*/
public String convertTopicCategoryObjectToString(TopicCategory value) {
if (value == null) {
return null;
}
return convertTopicCategoryToString(value);
}
/**
* Creates an instance of the EDataType: TopicCategoryObject from a String. <!-- begin-user-doc --> <!-- end-user-doc
* -->
*
* @param value
* the string value to convert to an object
* @return the instance of the data type, if value == null then null is returned
* @generated
*/
public TopicCategory createTopicCategoryObjectFromString(String value) {
if (value == null) {
return null;
}
return createTopicCategoryFromString(value);
}
/**
* The adapter/wrapper for the EClass '<em><b>Forum</b></em>'.
*
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param <E>
* the domain model java class
*
* @generated
*/
public static class ForumModelObject<E extends Forum> extends IdentifiableModelFactory.IdentifiableModelObject<E> {
/**
* @generated
*/
@Override
public EClass eClass() {
return ForumModelPackage.INSTANCE.getForumEClass();
}
/**
* @generated
*/
@Override
public ModelPackage getModelPackage() {
return ForumModelPackage.INSTANCE;
}
/**
* @generated
*/
@Override
public Class<?> getTargetClass() {
return Forum.class;
}
/**
* @generated
*/
@Override
public Object eGet(EStructuralFeature eStructuralFeature) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.FORUM_DB_ID_FEATURE_ID:
return getTarget().getDb_Id();
case ForumModelPackage.FORUM_DB_VERSION_FEATURE_ID:
return getTarget().getDb_version();
case ForumModelPackage.FORUM_TITLE_FEATURE_ID:
return getTarget().getTitle();
case ForumModelPackage.FORUM_MEMBERS_FEATURE_ID:
return getTarget().getMembers();
case ForumModelPackage.FORUM_TOPICS_FEATURE_ID:
return getTarget().getTopics();
default:
return super.eGet(eStructuralFeature);
}
}
/**
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.FORUM_TITLE_FEATURE_ID:
getTarget().setTitle((String) value);
return;
case ForumModelPackage.FORUM_MEMBERS_FEATURE_ID:
getTarget().setMembers((List<Member>) value);
return;
case ForumModelPackage.FORUM_TOPICS_FEATURE_ID:
getTarget().setTopics((List<Topic>) value);
return;
default:
super.eSet(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eAddTo(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.FORUM_MEMBERS_FEATURE_ID:
return getTarget().getMembers().add((Member) value);
case ForumModelPackage.FORUM_TOPICS_FEATURE_ID:
return getTarget().getTopics().add((Topic) value);
default:
return super.eAddTo(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eRemoveFrom(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.FORUM_MEMBERS_FEATURE_ID:
return getTarget().getMembers().remove(value);
case ForumModelPackage.FORUM_TOPICS_FEATURE_ID:
return getTarget().getTopics().remove(value);
default:
return super.eRemoveFrom(eStructuralFeature, value);
}
}
}
/**
* The adapter/wrapper for the EClass '<em><b>Member</b></em>'.
*
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param <E>
* the domain model java class
*
* @generated
*/
public static class MemberModelObject<E extends Member> extends IdentifiableModelFactory.IdentifiableModelObject<E> {
/**
* @generated
*/
@Override
public EClass eClass() {
return ForumModelPackage.INSTANCE.getMemberEClass();
}
/**
* @generated
*/
@Override
public ModelPackage getModelPackage() {
return ForumModelPackage.INSTANCE;
}
/**
* @generated
*/
@Override
public Class<?> getTargetClass() {
return Member.class;
}
/**
* @generated
*/
@Override
public Object eGet(EStructuralFeature eStructuralFeature) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.MEMBER_DB_ID_FEATURE_ID:
return getTarget().getDb_Id();
case ForumModelPackage.MEMBER_DB_VERSION_FEATURE_ID:
return getTarget().getDb_version();
case ForumModelPackage.MEMBER_NICKNAME_FEATURE_ID:
return getTarget().getNickname();
case ForumModelPackage.MEMBER_POSTS_FEATURE_ID:
return getTarget().getPosts();
case ForumModelPackage.MEMBER_CREATED_FEATURE_ID:
return getTarget().getCreated();
default:
return super.eGet(eStructuralFeature);
}
}
/**
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.MEMBER_NICKNAME_FEATURE_ID:
getTarget().setNickname((String) value);
return;
case ForumModelPackage.MEMBER_POSTS_FEATURE_ID:
getTarget().setPosts((List<Post>) value);
return;
case ForumModelPackage.MEMBER_CREATED_FEATURE_ID:
getTarget().setCreated((List<Topic>) value);
return;
default:
super.eSet(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eAddTo(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.MEMBER_POSTS_FEATURE_ID:
return getTarget().getPosts().add((Post) value);
case ForumModelPackage.MEMBER_CREATED_FEATURE_ID:
return getTarget().getCreated().add((Topic) value);
default:
return super.eAddTo(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eRemoveFrom(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.MEMBER_POSTS_FEATURE_ID:
return getTarget().getPosts().remove(value);
case ForumModelPackage.MEMBER_CREATED_FEATURE_ID:
return getTarget().getCreated().remove(value);
default:
return super.eRemoveFrom(eStructuralFeature, value);
}
}
}
/**
* The adapter/wrapper for the EClass '<em><b>Topic</b></em>'.
*
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param <E>
* the domain model java class
*
* @generated
*/
public static class TopicModelObject<E extends Topic> extends IdentifiableModelFactory.IdentifiableModelObject<E> {
/**
* @generated
*/
@Override
public EClass eClass() {
return ForumModelPackage.INSTANCE.getTopicEClass();
}
/**
* @generated
*/
@Override
public ModelPackage getModelPackage() {
return ForumModelPackage.INSTANCE;
}
/**
* @generated
*/
@Override
public Class<?> getTargetClass() {
return Topic.class;
}
/**
* @generated
*/
@Override
public Object eGet(EStructuralFeature eStructuralFeature) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.TOPIC_DB_ID_FEATURE_ID:
return getTarget().getDb_Id();
case ForumModelPackage.TOPIC_DB_VERSION_FEATURE_ID:
return getTarget().getDb_version();
case ForumModelPackage.TOPIC_TITLE_FEATURE_ID:
return getTarget().getTitle();
case ForumModelPackage.TOPIC_CATEGORY_FEATURE_ID:
return getTarget().getCategory();
case ForumModelPackage.TOPIC_CREATOR_FEATURE_ID:
return getTarget().getCreator();
case ForumModelPackage.TOPIC_POSTS_FEATURE_ID:
return getTarget().getPosts();
default:
return super.eGet(eStructuralFeature);
}
}
/**
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.TOPIC_TITLE_FEATURE_ID:
getTarget().setTitle((String) value);
return;
case ForumModelPackage.TOPIC_CATEGORY_FEATURE_ID:
getTarget().setCategory((TopicCategory) value);
return;
case ForumModelPackage.TOPIC_CREATOR_FEATURE_ID:
getTarget().setCreator((Member) value);
return;
case ForumModelPackage.TOPIC_POSTS_FEATURE_ID:
getTarget().setPosts((List<Post>) value);
return;
default:
super.eSet(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eAddTo(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.TOPIC_POSTS_FEATURE_ID:
return getTarget().getPosts().add((Post) value);
default:
return super.eAddTo(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eRemoveFrom(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.TOPIC_POSTS_FEATURE_ID:
return getTarget().getPosts().remove(value);
default:
return super.eRemoveFrom(eStructuralFeature, value);
}
}
}
/**
* The adapter/wrapper for the EClass '<em><b>Post</b></em>'.
*
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @param <E>
* the domain model java class
*
* @generated
*/
public static class PostModelObject<E extends Post> extends IdentifiableModelFactory.IdentifiableModelObject<E> {
/**
* @generated
*/
@Override
public EClass eClass() {
return ForumModelPackage.INSTANCE.getPostEClass();
}
/**
* @generated
*/
@Override
public ModelPackage getModelPackage() {
return ForumModelPackage.INSTANCE;
}
/**
* @generated
*/
@Override
public Class<?> getTargetClass() {
return Post.class;
}
/**
* @generated
*/
@Override
public Object eGet(EStructuralFeature eStructuralFeature) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.POST_DB_ID_FEATURE_ID:
return getTarget().getDb_Id();
case ForumModelPackage.POST_DB_VERSION_FEATURE_ID:
return getTarget().getDb_version();
case ForumModelPackage.POST_COMMENT_FEATURE_ID:
return getTarget().getComment();
case ForumModelPackage.POST_AUTHOR_FEATURE_ID:
return getTarget().getAuthor();
case ForumModelPackage.POST_TOPIC_FEATURE_ID:
return getTarget().getTopic();
default:
return super.eGet(eStructuralFeature);
}
}
/**
* @generated
*/
@Override
public void eSet(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
case ForumModelPackage.POST_COMMENT_FEATURE_ID:
getTarget().setComment((String) value);
return;
case ForumModelPackage.POST_AUTHOR_FEATURE_ID:
getTarget().setAuthor((Member) value);
return;
case ForumModelPackage.POST_TOPIC_FEATURE_ID:
getTarget().setTopic((Topic) value);
return;
default:
super.eSet(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eAddTo(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
default:
return super.eAddTo(eStructuralFeature, value);
}
}
/**
* @generated
*/
@Override
public boolean eRemoveFrom(EStructuralFeature eStructuralFeature, Object value) {
final int featureID = eClass().getFeatureID(eStructuralFeature);
switch (featureID) {
default:
return super.eRemoveFrom(eStructuralFeature, value);
}
}
}
}