<%@ jet package="compiledtemplates" 
imports="java.util.* util.EcoreGenerationHelper org.eclipse.emf.ecore.*
org.eclipse.emf.codegen.util.*"
class="BasicClass" %>
<%
%>
<%EClass eClass = (EClass) argument;
EcoreGenerationHelper h = new EcoreGenerationHelper();
h.makeImportManager(eClass.getEPackage());
%>
<%@ include file="Header.jetinc"%>
package <%=h.getQualifiedName(eClass.getEPackage())%>;
<%
StringBuffer importStringBuffer = stringBuffer;
int importInsertionPoint = stringBuffer.length();
h.getImportManager().addCompilationUnitImports(stringBuffer.toString());
%>

/**
* <!-- begin-user-doc -->
* An implementation of the model object '<em><b><%=h.getName(eClass)%></b></em>'.
* <!-- end-user-doc -->
*
* @generated
*/
<%=h.getVisibility(eClass) %><%if (eClass.isAbstract()) {%>abstract <%}%>class <%=
h.getName(eClass)%> <%=h.getExtendsAndImplementsLitteral(eClass)%> {

<%for (EAttribute attribute : h.getAttributes(eClass)) {%>
/** @generated */
private <%=h.getTypeName(attribute)%> <%=h.getName(attribute)%>;
<%}%>

<%for (EReference ref : h.getAllOneReferences(eClass)) {%>
/** @generated */
private <%=h.getTypeName(ref)%> <%=h.getName(ref)%>;
<%}%>

<%for (EReference ref : h.getAllManyReferences(eClass)) {%>
<%
h.getImportManager().addImport("java.util." + h.getCollectionInterfaceType(ref));
h.getImportManager().addImport("java.util." + h.getCollectionImplType(ref));
%>
/** @generated */
private <%=h.getCollectionInterfaceType(ref)%><<%=h.getTypeName(ref)%>> <%=h.getName(ref)
%> = new <%=h.getCollectionImplType(ref)%><<%=h.getTypeName(ref)%>>();
<%}%>

/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%=h.getVisibility(eClass) %> <%=h.getName(eClass)%>() {
}

<%for (EAttribute attribute : h.getAttributes(eClass)) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%=h.getVisibility(attribute) %><%=h.getTypeName(attribute)%> <%=h.getGetAccessor(attribute)%>() {
return <%=h.getName(attribute)%>;
}
<%if (attribute.isChangeable()) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%=h.getVisibility(attribute) %>void set<%=h.capName(h.getName(attribute))%>(<%=
h.getTypeName(attribute)%> a<%=h.capName(h.getName(attribute))%>) {
this.<%=h.getName(attribute)%> = a<%=h.capName(h.getName(attribute))%>;
}
<%}%>
<%}%>

<%for (EReference ref : h.getAllOneReferences(eClass)) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%=h.getVisibility(ref) %><%=h.getTypeName(ref)%> <%=h.getGetAccessor(ref)%>() {
return <%=h.getName(ref)%>;
}
<%if (ref.isChangeable()) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%=h.getVisibility(ref) %>void set<%=h.capName(h.getName(ref))%>(<%=
h.getTypeName(ref)%> a<%=h.capName(h.getName(ref))%>) {
this.<%=h.getName(ref)%> = a<%=h.capName(h.getName(ref))%>;
}
<%}%>
<%}%>

<%for (EReference ref : h.getAllManyReferences(eClass)) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%=h.getVisibility(ref) %><%=h.getCollectionInterfaceType(ref)%><<%=
h.getTypeName(ref)%>> <%=h.getGetAccessor(ref)%>() {
return <%=h.getName(ref)%>;
}
<%if (ref.isChangeable()) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
void set<%=h.capName(h.getName(ref))%>(<%=h.getCollectionInterfaceType(ref)%><<%=
h.getTypeName(ref)%>> a<%=h.capName(h.getName(ref))%>) {
this.<%=h.getName(ref)%> = a<%=h.capName(h.getName(ref))%>;
}
<%}%>
<%}%>

<%for (EOperation op : h.getOperations(eClass)) {%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
<%=h.getVisibility(op) %><%=h.getTypeName(op)%> <%=h.getName(op)%>(<%=
h.getParameterList(op)%>)<%=h.getThrows(op)%> {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("<%=h.getName(op)%> not implemented");
}

<%}%>

<%@ include file="equals.jetinc"%>

<%@ include file="hashCode.jetinc"%>

<%@ include file="toString.jetinc"%>

}
<%importStringBuffer.insert(importInsertionPoint, h.getImportManager().computeSortedImports());%>