<%@ jet package="compiledtemplates"
imports="java.util.* util.EcoreGenerationHelper org.eclipse.emf.ecore.* org.eclipse.emf.codegen.util.*"
class="ConcreteFactory" %>
<%
%>
<%EClass eClass = (EClass) argument;
EPackage ePackage = eClass.getEPackage();
if (!eClass.getName().endsWith("Repository")) {
throw new IllegalArgumentException("Expect name of class argument to end with \"Repository\"");
}
String baseName = eClass.getName().substring(0, eClass.getName().length() - "Repository".length());
String productType = "Access";
EcoreGenerationHelper h = new EcoreGenerationHelper();
String apiPackageName = h.getQualifiedName(ePackage.getESuperPackage()) + ".accessapi";
String implPackageName = h.getQualifiedName(ePackage.getESuperPackage()) + ".accessimpl";
String fwApiPackageName = h.getQualifiedName(ePackage.getESuperPackage().getESuperPackage()) + ".framework.accessapi";
String fwImplPackageName = h.getQualifiedName(ePackage.getESuperPackage().getESuperPackage()) + ".framework.accessimpl";
h.makeImportManager(implPackageName);
%>
<%@ include file="Header.jetinc"%>
package <%=implPackageName%>;
<%
StringBuffer importStringBuffer = stringBuffer;
int importInsertionPoint = stringBuffer.length();
h.getImportManager().addCompilationUnitImports(stringBuffer.toString());
h.addImport(apiPackageName + "." + baseName + productType + "Factory");
h.addImport(apiPackageName + ".*");
h.addImport(fwApiPackageName + ".*");
h.addImport(fwImplPackageName + ".*");
%>
/**
* <p>
* Concrete Factory that creates <%=baseName%> <%=productType%> objects.
* </p>
* <p>
* Abstract factory design pattern.
* </p>
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
public class <%=baseName%><%=productType%>FactoryImpl extends <%=baseName%><%=productType%>Factory {
<%for (EOperation op : h.getOperations(eClass)) {
if (h.getAnnotation(op, "noaccessobject") != null) continue;
String mappedOpName = h.getMappedOperationName(op);
%>
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public <%=h.capName(mappedOpName)%><%=productType%><%=h.getGenericType(op)%> create<%=h.capName(mappedOpName)%><%=productType%>() {
<%if (mappedOpName.equals("findById")) {%>
return new <%=h.capName(mappedOpName)%><%=productType%>Impl<%=h.getGenericType(op)%>(getPersistentClass());
<%} else if (mappedOpName.equals("findAll") ||
mappedOpName.equals("findByExample")) {%>
return new <%=h.capName(mappedOpName)%><%=productType%>Impl<%=h.getGenericType(op)%>(getPersistentClass());
<%} else if (mappedOpName.equals("findByQuery")) {%>
return new <%=h.capName(mappedOpName)%><%=productType%>Impl<%=h.getGenericType(op)%>();
<%} else if (mappedOpName.equals("create") ||
mappedOpName.equals("update") ||
mappedOpName.equals("delete")) {%>
return new <%=h.capName(mappedOpName)%><%=productType%>Impl<%=h.getGenericType(op)%>();
<%} else {%>
return new <%=h.capName(mappedOpName)%><%=productType%>Impl<%=h.getGenericType(op)%>();
<%}%>
}
<%}%>
}
<%importStringBuffer.insert(importInsertionPoint, h.getImportManager().computeSortedImports());%>