Java Examples for org.eclipse.emf.codegen.ecore.genmodel.GenModel
The following java examples will help you to understand the usage of org.eclipse.emf.codegen.ecore.genmodel.GenModel. These source code samples are taken from different open source projects.
Example 1
Project: emf-master File: JavaEcoreBuilder.java View source code |
public void computeEPackages(Monitor monitor, ModelImporter modelImporter) throws Exception { IProject project = genModelFile.getProject(); project.open(BasicMonitor.toIProgressMonitor(monitor)); if (!project.hasNature(JavaCore.NATURE_ID) && oldGenModelVersion.getModelDirectory() != null) { project = project.getWorkspace().getRoot().getFolder(new Path(oldGenModelVersion.getModelDirectory())).getProject(); } Collection<IFile> allGenModelFiles = new ArrayList<IFile>(); Collection<IProject> allReferencedProjects = new ArrayList<IProject>(); getAllReferencedProjects(allReferencedProjects, project.getDescription().getReferencedProjects()); getAllReferencedProjects(allReferencedProjects, project.getDescription().getDynamicReferences()); for (IProject referencedProject : allReferencedProjects) { getAllGenModelFiles(allGenModelFiles, referencedProject); } ResourceSet resourceSet = modelImporter.createResourceSet(); for (IFile file : allGenModelFiles) { Resource resource = resourceSet.getResource(modelImporter.createFileURI(file.getFullPath().toString()), true); GenModel genModel = (GenModel) resource.getContents().get(0); externalGenModels.add(genModel); for (GenPackage genPackage : genModel.getGenPackages()) { determineExternalPackages(genPackage, modelImporter); } } // Iterate over all projects to look at the manifests. // List<String> allReferencedPluginIDs = new UniqueEList<String>(); allReferencedProjects.add(project); for (IProject referencedProject : allReferencedProjects) { try { // Determine the required plugins. // URI manifestURI = URI.createURI(referencedProject.getFullPath() + "/META-INF/MANIFEST.MF"); Manifest manifest = new Manifest(resourceSet.getURIConverter().createInputStream(manifestURI)); String requires = manifest.getMainAttributes().getValue("Require-Bundle"); if (requires != null) { ManifestElement[] elements = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, requires); for (int j = 0; j < elements.length; ++j) { // Include each required plugin of the starting project and the exported ones of all the required projects. // ManifestElement element = elements[j]; if (project == referencedProject || "reexport".equals(element.getDirective("visibility"))) { String pluginID = element.getValue(); allReferencedPluginIDs.add(pluginID); } } } } catch (IOException exception) { } } // for (int i = 0; i < allReferencedPluginIDs.size(); ++i) { // Determine the required plugins. // String pluginID = allReferencedPluginIDs.get(i); Bundle bundle = Platform.getBundle(pluginID); if (bundle != null) { // Ignore this for Eclipse 3.5 compatibility. // @SuppressWarnings("cast") String requires = (String) bundle.getHeaders().get(Constants.REQUIRE_BUNDLE); if (requires != null) { ManifestElement[] elements = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, requires); for (int j = 0; j < elements.length; ++j) { // Also add each required plugin for consideration in the loop. // ManifestElement element = elements[j]; String value = element.getValue(); if ("reexport".equals(element.getDirective("visibility"))) { allReferencedPluginIDs.add(value); } } } } } // Determine the inverse map from plugin IDs to their registered GenModel locations. // Map<String, List<URI>> allPluginsWithGenModels = new HashMap<String, List<URI>>(); for (Map.Entry<String, URI> entry : EcorePlugin.getEPackageNsURIToGenModelLocationMap(true).entrySet()) { // If it's a platform plugin URI, include it in the map. // URI genModelLocation = entry.getValue(); if (genModelLocation.isPlatformPlugin()) { List<URI> uris = allPluginsWithGenModels.get(genModelLocation.segment(1)); if (uris == null) { uris = new UniqueEList<URI>(); } uris.add(genModelLocation); allPluginsWithGenModels.put(genModelLocation.segment(1), uris); } } // Keep only the plugins that have GenModels for consideration. // allReferencedPluginIDs.retainAll(allPluginsWithGenModels.keySet()); for (String pluginID : allReferencedPluginIDs) { // for (URI uri : allPluginsWithGenModels.get(pluginID)) { // Load the model and if it's not one already considered, e.g., a local version in the workspace, process its GenPackages. // Resource resource = resourceSet.getResource(uri, true); GenModel genModel = (GenModel) resource.getContents().get(0); if (externalGenModels.add(genModel)) { for (GenPackage genPackage : genModel.getGenPackages()) { determineExternalPackages(genPackage, modelImporter); } } } } IPath targetFragmentRoot = analyzeProject(project); modelImporter.setModelPluginDirectory(targetFragmentRoot.toString()); if (packageNameToEPackageMap.isEmpty()) { error(JavaImporterPlugin.INSTANCE.getString(foundJava ? "_UI_NoModelElementsInJava_message" : "_UI_NoModelElements_message")); } for (EPackage ePackage : packageNameToEPackageMap.values()) { modelImporter.getEPackages().add(ePackage); ModelImporter.EPackageImportInfo ePackageInfo = modelImporter.getEPackageImportInfo(ePackage); ePackageInfo.setPrefix(ePackageToPrefixMap.get(ePackage)); for (Map.Entry<String, EPackage> entry : packageNameToEPackageMap.entrySet()) { if (entry.getValue() == ePackage) { String qualifiedPackageName = entry.getKey(); if (qualifiedPackageName != null) { int index = qualifiedPackageName.lastIndexOf("."); if (index != -1) { ePackageInfo.setBasePackage(qualifiedPackageName.substring(0, index)); } } break; } } } }
Example 2
Project: org.eclipse.emf-master File: JavaEcoreBuilder.java View source code |
public void computeEPackages(Monitor monitor, ModelImporter modelImporter) throws Exception { IProject project = genModelFile.getProject(); project.open(BasicMonitor.toIProgressMonitor(monitor)); if (!project.hasNature(JavaCore.NATURE_ID) && oldGenModelVersion.getModelDirectory() != null) { project = project.getWorkspace().getRoot().getFolder(new Path(oldGenModelVersion.getModelDirectory())).getProject(); } Collection<IFile> allGenModelFiles = new ArrayList<IFile>(); Collection<IProject> allReferencedProjects = new ArrayList<IProject>(); getAllReferencedProjects(allReferencedProjects, project.getDescription().getReferencedProjects()); getAllReferencedProjects(allReferencedProjects, project.getDescription().getDynamicReferences()); for (IProject referencedProject : allReferencedProjects) { getAllGenModelFiles(allGenModelFiles, referencedProject); } ResourceSet resourceSet = modelImporter.createResourceSet(); for (IFile file : allGenModelFiles) { Resource resource = resourceSet.getResource(modelImporter.createFileURI(file.getFullPath().toString()), true); GenModel genModel = (GenModel) resource.getContents().get(0); externalGenModels.add(genModel); for (GenPackage genPackage : genModel.getGenPackages()) { determineExternalPackages(genPackage, modelImporter); } } // Iterate over all projects to look at the manifests. // List<String> allReferencedPluginIDs = new UniqueEList<String>(); allReferencedProjects.add(project); for (IProject referencedProject : allReferencedProjects) { try { // Determine the required plugins. // URI manifestURI = URI.createURI(referencedProject.getFullPath() + "/META-INF/MANIFEST.MF"); Manifest manifest = new Manifest(resourceSet.getURIConverter().createInputStream(manifestURI)); String requires = manifest.getMainAttributes().getValue("Require-Bundle"); if (requires != null) { ManifestElement[] elements = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, requires); for (int j = 0; j < elements.length; ++j) { // Include each required plugin of the starting project and the exported ones of all the required projects. // ManifestElement element = elements[j]; if (project == referencedProject || "reexport".equals(element.getDirective("visibility"))) { String pluginID = element.getValue(); allReferencedPluginIDs.add(pluginID); } } } } catch (IOException exception) { } } // for (int i = 0; i < allReferencedPluginIDs.size(); ++i) { // Determine the required plugins. // String pluginID = allReferencedPluginIDs.get(i); Bundle bundle = Platform.getBundle(pluginID); if (bundle != null) { // Ignore this for Eclipse 3.5 compatibility. // @SuppressWarnings("cast") String requires = (String) bundle.getHeaders().get(Constants.REQUIRE_BUNDLE); if (requires != null) { ManifestElement[] elements = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, requires); for (int j = 0; j < elements.length; ++j) { // Also add each required plugin for consideration in the loop. // ManifestElement element = elements[j]; String value = element.getValue(); if ("reexport".equals(element.getDirective("visibility"))) { allReferencedPluginIDs.add(value); } } } } } // Determine the inverse map from plugin IDs to their registered GenModel locations. // Map<String, List<URI>> allPluginsWithGenModels = new HashMap<String, List<URI>>(); for (Map.Entry<String, URI> entry : EcorePlugin.getEPackageNsURIToGenModelLocationMap().entrySet()) { // If it's a platform plugin URI, include it in the map. // URI genModelLocation = entry.getValue(); if (genModelLocation.isPlatformPlugin()) { List<URI> uris = allPluginsWithGenModels.get(genModelLocation.segment(1)); if (uris == null) { uris = new UniqueEList<URI>(); } uris.add(genModelLocation); allPluginsWithGenModels.put(genModelLocation.segment(1), uris); } } // Keep only the plugins that have GenModels for consideration. // allReferencedPluginIDs.retainAll(allPluginsWithGenModels.keySet()); for (String pluginID : allReferencedPluginIDs) { // for (URI uri : allPluginsWithGenModels.get(pluginID)) { // Load the model and if it's not one already considered, e.g., a local version in the workspace, process its GenPackages. // Resource resource = resourceSet.getResource(uri, true); GenModel genModel = (GenModel) resource.getContents().get(0); if (externalGenModels.add(genModel)) { for (GenPackage genPackage : genModel.getGenPackages()) { determineExternalPackages(genPackage, modelImporter); } } } } IPath targetFragmentRoot = analyzeProject(project); modelImporter.setModelPluginDirectory(targetFragmentRoot.toString()); if (packageNameToEPackageMap.isEmpty()) { error(JavaImporterPlugin.INSTANCE.getString(foundJava ? "_UI_NoModelElementsInJava_message" : "_UI_NoModelElements_message")); } for (EPackage ePackage : packageNameToEPackageMap.values()) { modelImporter.getEPackages().add(ePackage); ModelImporter.EPackageImportInfo ePackageInfo = modelImporter.getEPackageImportInfo(ePackage); ePackageInfo.setPrefix(ePackageToPrefixMap.get(ePackage)); for (Map.Entry<String, EPackage> entry : packageNameToEPackageMap.entrySet()) { if (entry.getValue() == ePackage) { String qualifiedPackageName = entry.getKey(); if (qualifiedPackageName != null) { int index = qualifiedPackageName.lastIndexOf("."); if (index != -1) { ePackageInfo.setBasePackage(qualifiedPackageName.substring(0, index)); } } break; } } } }
Example 3
Project: Xcore-master File: ConvertToXcoreActionDelegate.java View source code |
protected EPackage getInputEPackage(IStructuredSelection structuredSelection) { Object element = structuredSelection.getFirstElement(); if (element instanceof IFile) { IFile file = (IFile) element; XtextResourceSet resourceSet = new XtextResourceSet(); IProject project = file.getProject(); resourceSet.setClasspathURIContext(JavaCore.create(project)); resourceSet.getURIConverter().getURIMap().putAll(EcorePlugin.computePlatformURIMap()); if ("ecore".equals(file.getFullPath().getFileExtension())) { return (EPackage) EcoreUtil.getObjectByType(resourceSet.getResource(URI.createPlatformResourceURI(file.getFullPath().toString(), true), true).getContents(), EcorePackage.Literals.EPACKAGE); } else if ("genmodel".equals(file.getFullPath().getFileExtension())) { GenModel genModel = (GenModel) EcoreUtil.getObjectByType(resourceSet.getResource(URI.createPlatformResourceURI(file.getFullPath().toString(), true), true).getContents(), GenModelPackage.Literals.GEN_MODEL); if (genModel.getGenPackages().size() == 1) { return genModel.getGenPackages().get(0).getEcorePackage(); } } } return null; }
Example 4
Project: cdo-master File: CDOMigratorUtil.java View source code |
public static String adjustGenModel(GenModel genModel, GenDelegationKind featureDelegation) {
StringBuilder builder = new StringBuilder();
if (genModel.getFeatureDelegation() != featureDelegation) {
genModel.setFeatureDelegation(featureDelegation);
//$NON-NLS-1$
builder.append(Messages.getString("CDOMigratorUtil.4"));
//$NON-NLS-1$
builder.append(" ");
builder.append(featureDelegation);
//$NON-NLS-1$
builder.append("\n");
}
if (!ROOT_EXTENDS_CLASS.equals(genModel.getRootExtendsClass())) {
genModel.setRootExtendsClass(ROOT_EXTENDS_CLASS);
//$NON-NLS-1$
builder.append(Messages.getString("CDOMigratorUtil.6"));
//$NON-NLS-1$
builder.append(" ");
builder.append(ROOT_EXTENDS_CLASS);
//$NON-NLS-1$
builder.append("\n");
}
if (!ROOT_EXTENDS_INTERFACE.equals(genModel.getRootExtendsInterface())) {
genModel.setRootExtendsInterface(ROOT_EXTENDS_INTERFACE);
//$NON-NLS-1$
builder.append(Messages.getString("CDOMigratorUtil.8"));
//$NON-NLS-1$
builder.append(" ");
builder.append(ROOT_EXTENDS_INTERFACE);
//$NON-NLS-1$
builder.append("\n");
}
EList<String> pluginVariables = genModel.getModelPluginVariables();
if (!pluginVariables.contains(PLUGIN_VARIABLE)) {
pluginVariables.add(PLUGIN_VARIABLE);
//$NON-NLS-1$
builder.append(Messages.getString("CDOMigratorUtil.10"));
//$NON-NLS-1$
builder.append(" ");
builder.append(PLUGIN_VARIABLE);
//$NON-NLS-1$
builder.append("\n");
}
if (!PROVIDER_ROOT_EXTENDS_CLASS.equals(genModel.getProviderRootExtendsClass())) {
genModel.setProviderRootExtendsClass(PROVIDER_ROOT_EXTENDS_CLASS);
//$NON-NLS-1$
builder.append(Messages.getString("CDOMigratorUtil.9"));
//$NON-NLS-1$
builder.append(" ");
builder.append(PROVIDER_ROOT_EXTENDS_CLASS);
//$NON-NLS-1$
builder.append("\n");
}
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IFolder modelFolder = root.getFolder(new Path(genModel.getModelDirectory()));
IProject modelProject = modelFolder.getProject();
if (!modelProject.exists()) {
try {
modelProject.create(new NullProgressMonitor());
//$NON-NLS-1$ //$NON-NLS-2$
builder.append(Messages.getString("CDOMigratorUtil.12") + "\n");
} catch (CoreException ex) {
throw new WrappedException(ex);
}
}
if (!modelProject.isOpen()) {
try {
modelProject.open(new NullProgressMonitor());
//$NON-NLS-1$ //$NON-NLS-2$
builder.append(Messages.getString("CDOMigratorUtil.13") + "\n");
} catch (CoreException ex) {
throw new WrappedException(ex);
}
}
return builder.length() == 0 ? null : builder.toString();
}
Example 5
Project: eef-master File: EEFLauncher.java View source code |
@Override public EObject getModel() { EObject eObject = super.getModel(); if (eObject instanceof EEFGenModel) { ResourceSet resourceSet = null; for (GenEditionContext context : ((EEFGenModel) eObject).getEditionContexts()) { PropertiesEditionContext propertiesEditionContext = context.getPropertiesEditionContext(); if (propertiesEditionContext != null) { resourceSet = propertiesEditionContext.getModel().eResource().getResourceSet(); Resource resource = resourceSet.getResource(URI.createPlatformPluginURI("org.eclipse.emf.ecore/model/XMLType.genmodel", true), true); if (!resource.getContents().isEmpty() && resource.getContents().get(0) instanceof GenModel) { ((GenModel) resource.getContents().get(0)).reconcile(); } ; propertiesEditionContext.getModel().reconcile(); } } // reconcile all genmodels of the resourceSet if (resourceSet != null) { for (Resource resource : resourceSet.getResources()) { if (!resource.getContents().isEmpty() && resource.getContents().get(0) instanceof GenModel) { ((GenModel) resource.getContents().get(0)).reconcile(); } ; } } } // load return eObject; }
Example 6
Project: emf-loophole-master File: LoopholeActionBarContributor.java View source code |
@Override
public void run() {
generator.requestInitialize();
LoopholeGeneratorOperation operation = new LoopholeGeneratorOperation(activeEditorPart.getSite().getShell());
operation.setRootDiagnosticMessage(getText());
GenModel genModel = null;
GenGapModel genGapModel = null;
Collection<?> selection = ((IStructuredSelection) getActiveEditorSelection()).toList();
for (Object object : selection) {
for (int i = 0; i < projectTypes.length; i++) {
GenBase genBase = null;
if (object instanceof GenGapModel) {
genGapModel = (GenGapModel) object;
genModel = genGapModel.getGenModel();
genBase = genModel;
}
if (object instanceof GenGapPackage) {
genBase = ((GenGapPackage) object).getGenPackage();
genGapModel = ((GenGapPackage) object).getGenGapModel();
genModel = genBase.getGenModel();
}
operation.addGeneratorAndArguments(generator, genBase, projectTypes[i].getType(), projectTypes[i].getName());
}
}
operation.setGenGapModel(genGapModel);
Set<IProject> projects = new HashSet<IProject>();
Set<IWorkingSet> workingSets = new HashSet<IWorkingSet>();
if (genModel != null) {
IProject project = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(genModel.getModelDirectory())).getProject();
if (project != null) {
IWorkbench workbench = PlatformUI.getWorkbench();
for (IWorkingSet workingSet : workbench.getWorkingSetManager().getAllWorkingSets()) {
IAdaptable[] elements = workingSet.getElements();
for (IAdaptable element : elements) {
if (project.equals(element.getAdapter(IProject.class))) {
workingSets.add(workingSet);
continue;
}
}
}
if (!workingSets.isEmpty()) {
for (int i = 0; i < projectTypes.length; i++) {
Object projectType = projectTypes[i].getType();
if (GenBaseGeneratorAdapter.EDIT_PROJECT_TYPE.equals(projectType)) {
IProject editProject = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(genModel.getEditDirectory())).getProject();
if (!editProject.exists()) {
projects.add(editProject);
}
}
if (GenBaseGeneratorAdapter.EDITOR_PROJECT_TYPE.equals(projectType)) {
IProject editorProject = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(genModel.getEditorDirectory())).getProject();
if (!editorProject.exists()) {
projects.add(editorProject);
}
}
if (GenBaseGeneratorAdapter.TESTS_PROJECT_TYPE.equals(projectType)) {
IProject testsProject = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(genModel.getTestsDirectory())).getProject();
if (!testsProject.exists()) {
projects.add(testsProject);
}
}
}
}
}
}
//
try {
new ProgressMonitorDialog(activeEditorPart.getSite().getShell()).run(true, true, operation);
if (!projects.isEmpty()) {
for (IWorkingSet workingSet : workingSets) {
List<IAdaptable> elements = new ArrayList<IAdaptable>(Arrays.asList(workingSet.getElements()));
elements.addAll(projects);
workingSet.setElements(workingSet.adaptElements(elements.toArray(new IAdaptable[elements.size()])));
}
}
} catch (Exception exception) {
GenModelEditPlugin.INSTANCE.log(exception);
}
}
Example 7
Project: genModelAddon-master File: GenerateDevStructure.java View source code |
/**
* This method checks if the genModel has a dynamic templates property and a
* template directory set to projectName/templates
* It also copies the ClassJava.jet from the core project.
* it returns the a String containing the changes that has been done on genmodel.
*/
public String setGenModelTemplates(final GenModel gm, final boolean forceSave) {
final StringBuffer changes = new StringBuffer();
boolean _isDynamicTemplates = gm.isDynamicTemplates();
boolean _not = (!_isDynamicTemplates);
if (_not) {
gm.setDynamicTemplates(true);
changes.append("The dynamic template property must be set to true");
}
gm.setImportOrganizing(true);
final String expectedTemplateDir = (("/" + this.projectName) + "/templates");
final String currentTemplateDir = gm.getTemplateDirectory();
boolean _equals = expectedTemplateDir.equals(currentTemplateDir);
boolean _not_1 = (!_equals);
if (_not_1) {
gm.setTemplateDirectory(expectedTemplateDir);
if (((!Objects.equal(currentTemplateDir, null)) && (currentTemplateDir.length() > 0))) {
changes.append("\nThe template directory must be changed : \n");
changes.append(("\n Previous value was : " + currentTemplateDir));
changes.append(("\n New value is : " + expectedTemplateDir));
} else {
changes.append(("The template directory has been set to : " + expectedTemplateDir));
}
}
final IFile classJavajet = this.project.getFile((expectedTemplateDir + "/model/Class.javajet"));
boolean _exists = classJavajet.exists();
boolean _not_2 = (!_exists);
if (_not_2) {
final EMFPatternExtractor extractor = new EMFPatternExtractor(this.project, this.classPattern, this.interfacePattern);
extractor.run();
this.refreshWorkspace();
changes.append("\nThe Class.javajet has been installed");
}
if (((changes.length() > 0) && forceSave)) {
final Map<Object, Object> opt = new HashMap<Object, Object>();
opt.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER);
opt.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED);
try {
Resource _eResource = gm.eResource();
_eResource.save(opt);
} catch (final Throwable _t) {
if (_t instanceof IOException) {
final IOException e = (IOException) _t;
Class<? extends GenerateDevStructure> _class = this.getClass();
final Bundle bundle = FrameworkUtil.getBundle(_class);
final ILog logger = Platform.getLog(bundle);
String _symbolicName = bundle.getSymbolicName();
Resource _eResource_1 = gm.eResource();
String _plus = ("Unable to save the genModel in : " + _eResource_1);
Status _status = new Status(IStatus.WARNING, _symbolicName, _plus, e);
logger.log(_status);
} else {
throw Exceptions.sneakyThrow(_t);
}
}
}
return changes.toString();
}
Example 8
Project: gmf-tooling-master File: GenEditorGeneratorImpl.java View source code |
/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated */ public GenModel getDomainGenModel() { if (domainGenModel != null && domainGenModel.eIsProxy()) { InternalEObject oldDomainGenModel = (InternalEObject) domainGenModel; domainGenModel = (GenModel) eResolveProxy(oldDomainGenModel); if (domainGenModel != oldDomainGenModel) { if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.RESOLVE, GMFGenPackage.GEN_EDITOR_GENERATOR__DOMAIN_GEN_MODEL, oldDomainGenModel, domainGenModel)); } } return domainGenModel; }
Example 9
Project: ocl-master File: PivotMetamodelManager.java View source code |
@Override @Nullable public GenPackage getGenPackage(@NonNull String nsURI) { if (genPackageMap != null) { GenPackage genPackage = genPackageMap.get(nsURI); if (genPackage != null) { return genPackage; } } ResourceSet externalResourceSet = environmentFactory.getResourceSet(); URI uri = EMF_2_9.EcorePlugin.getEPackageNsURIToGenModelLocationMap(false).get(nsURI); if (uri != null) { Resource resource = externalResourceSet.getResource(uri, true); for (EObject eObject : resource.getContents()) { if (eObject instanceof GenModel) { GenModel genModel = (GenModel) eObject; genModel.reconcile(); for (GenPackage genPackage : genModel.getGenPackages()) { if (genPackage != null) { return genPackage; } } } } } return null; }
Example 10
Project: spray-master File: GenModelHelper.java View source code |
protected GenClass getGenClass(EClass eClass) {
GenModel genModel = getGenModel(eClass);
for (GenPackage pck : genModel.getAllGenPackagesWithClassifiers()) {
for (GenClass genClass : pck.getGenClasses()) {
EClass c = genClass.getEcoreClass();
// As a workaround we compute the qualified names of the EClasses. This workaround should be removed later when possible.
if (qualifiedNameProvider.getFullyQualifiedName(eClass).equals(qualifiedNameProvider.getFullyQualifiedName(c))) {
return genClass;
}
}
}
return null;
}
Example 11
Project: UML-Designer-master File: ProfileDiagramServices.java View source code |
/**
* Export profile.
*
* @param rootProfile
* Profile
*/
public void exportProfile(final Profile rootProfile) {
final Shell activeShell = PlatformUI.getWorkbench().getDisplay().getActiveShell();
final boolean isProfile = isProfileRoot(rootProfile);
if (isProfile && validateUmlElementWithProgress(rootProfile)) {
if (initParameters(rootProfile) == IDialogConstants.OK_ID && ProfileServices.INSTANCE.defineAllProfiles(rootProfile)) {
GenericUMLProfileTools.save(rootProfile);
final IProject profilePlugin = createPluginProjectWithProgress(profilePluginName);
// the following code is OK.
final IFolder modelFolder = //$NON-NLS-1$
profilePlugin.getFolder(//$NON-NLS-1$
"model");
try {
modelFolder.create(false, true, null);
} catch (final CoreException e) {
LogServices.INSTANCE.error("exportProfile(" + rootProfile.getClass() + ") not handled", e);
}
// make a copy of the profile into the new plug-in used for the
// creation of static profile
final IFile profileCopyIFile = modelFolder.getFile(//$NON-NLS-1$
profileName + //$NON-NLS-1$
"." + UMLResource.FILE_EXTENSION);
final IFile rootProfileIFile = GenericUMLProfileTools.resourceToIFile(rootProfile.eResource());
try {
rootProfileIFile.copy(profileCopyIFile.getFullPath(), true, new NullProgressMonitor());
} catch (final CoreException e) {
LogServices.INSTANCE.error("exportProfile(" + rootProfile.getClass() + ") not handled", e);
}
final Resource profileCopyResource = new ResourceSetImpl().createResource(URI.createURI(profileCopyIFile.getFullPath().toString()));
final Profile profileCopy = (Profile) GenericUMLProfileTools.load(profileCopyResource.getURI());
initEPackageStereotype(profileCopy);
final UmlToEcore umlToEcore = new UmlToEcore();
final Resource profileEcoreResource = umlToEcore.umlToEcore(profileCopy);
if (validateEObjectWithProgress(profileEcoreResource.getContents().get(0))) {
final EcoreToGenmodel ecoreToGenmodel = new EcoreToGenmodel();
final GenModel genModel = ecoreToGenmodel.ecoreToGenmodel(profileEcoreResource);
final GenerateModelCode generateModelCode = new GenerateModelCode();
generateModelCode.generateModelCode(genModel);
addProfileExtensions(profilePlugin, modelFolder, profileCopy);
// }
try {
profilePlugin.build(IncrementalProjectBuilder.FULL_BUILD, new NullProgressMonitor());
} catch (final CoreException e) {
LogServices.INSTANCE.error("exportProfile(" + rootProfile.getClass() + ") not handled", e);
}
final IWorkbenchWizard wizard = new PluginExportWizard();
final StructuredSelection selection = new StructuredSelection(profilePlugin);
wizard.init(PlatformUI.getWorkbench(), selection);
final WizardDialog wd = new ResizableWizardDialog(PDEPlugin.getActiveWorkbenchShell(), wizard);
wd.create();
wd.open();
// ecore.ecore that confused Acceleo in the VP.
try {
profilePlugin.close(new NullProgressMonitor());
} catch (final CoreException e) {
e.printStackTrace();
}
} else {
MessageDialog.openError(activeShell, "Exportation error", "Due to the error, the exportation will be stopped.");
}
} else {
MessageDialog.openInformation(activeShell, "Exportation canceled", "Exportation canceled by user.");
}
} else {
if (!isProfile) {
MessageDialog.openError(activeShell, "Exportation error", "The root element of this model is not a profile. Due to the error, the exportation will be stopped.");
} else {
MessageDialog.openError(activeShell, "Exportation error", "Due to the error, the exportation will be stopped.");
}
}
}
Example 12
Project: EMF-IncQuery-master File: NewEiqGenmodelPage.java View source code |
/** * Create contents of the wizard. * * @param parent */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NULL); setControl(container); container.setLayout(new GridLayout(1, false)); if (displayCreateComposite) { Section sctnGenmodel = formToolkit.createSection(container, Section.EXPANDED | Section.TITLE_BAR); sctnGenmodel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); formToolkit.paintBordersFor(sctnGenmodel); sctnGenmodel.setText("Genmodel"); Composite composite = formToolkit.createComposite(sctnGenmodel, SWT.NONE); formToolkit.paintBordersFor(composite); sctnGenmodel.setClient(composite); composite.setLayout(new GridLayout(3, false)); new Label(composite, SWT.NONE); new Label(composite, SWT.NONE); btnInitializeGeneratorModel = formToolkit.createButton(composite, "Initialize Generator Model", SWT.CHECK); new Label(composite, SWT.NONE); formToolkit.createLabel(composite, "Filename", SWT.NONE); formToolkit.createLabel(composite, "generator.eiqgen", SWT.NONE); } Section sctnReferencedEmfGenerator = formToolkit.createSection(container, Section.EXPANDED | Section.TITLE_BAR); sctnReferencedEmfGenerator.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); formToolkit.paintBordersFor(sctnReferencedEmfGenerator); sctnReferencedEmfGenerator.setText("Referenced EMF Generator models"); referencedGenmodels = formToolkit.createTree(sctnReferencedEmfGenerator, SWT.NONE); referencedGenmodels.setEnabled(false); formToolkit.paintBordersFor(referencedGenmodels); sctnReferencedEmfGenerator.setClient(referencedGenmodels); referencedGenmodels.setHeaderVisible(true); referencedGenmodels.setLinesVisible(true); genModelViewer = new TreeViewer(referencedGenmodels); genModelViewer.setContentProvider(new ITreeContentProvider() { List<GenModel> genmodels; @SuppressWarnings("unchecked") @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { if (newInput instanceof List<?>) { genmodels = (List<GenModel>) newInput; } } @Override public void dispose() { } @Override public boolean hasChildren(Object element) { return element instanceof GenModel && !((GenModel) element).getGenPackages().isEmpty(); } @Override public Object getParent(Object element) { if (element instanceof GenPackage) { return ((GenPackage) element).getGenModel(); } return null; } @Override public Object[] getElements(Object inputElement) { return genmodels.toArray(new GenModel[genmodels.size()]); } @Override public Object[] getChildren(Object parentElement) { if (parentElement instanceof GenModel) { List<GenPackage> packages = ((GenModel) parentElement).getGenPackages(); return packages.toArray(new GenPackage[packages.size()]); } return null; } }); genModelViewer.setLabelProvider(new LabelProvider() { }); TreeViewerColumn resourcePathColumn = new TreeViewerColumn(genModelViewer, SWT.LEFT); resourcePathColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof GenModel) { return ((GenModel) element).eResource().getURI().toPlatformString(true); } else if (element instanceof GenPackage) { return ((GenPackage) element).getNSURI(); } return super.getText(element); } }); TreeViewerColumn packageURIColumn = new TreeViewerColumn(genModelViewer, SWT.LEFT); packageURIColumn.setLabelProvider(new ColumnLabelProvider() { @Override public String getText(Object element) { if (element instanceof GenModel) { return String.format("Plug-in dependency: %s", ((GenModel) element).getModelPluginID()); } else if (element instanceof GenPackage) { return ""; } return super.getText(element); } }); TableLayout tableLayout = new TableLayout(); tableLayout.addColumnData(new ColumnWeightData(50, true)); tableLayout.addColumnData(new ColumnWeightData(50, true)); referencedGenmodels.setLayout(tableLayout); genModelViewer.setInput(selectedGenmodels); Composite composite_1 = formToolkit.createComposite(sctnReferencedEmfGenerator, SWT.NONE); formToolkit.paintBordersFor(composite_1); sctnReferencedEmfGenerator.setTextClient(composite_1); composite_1.setLayout(new RowLayout(SWT.HORIZONTAL)); addGenmodel = formToolkit.createButton(composite_1, "Add", SWT.NONE); addGenmodel.setEnabled(false); addGenmodel.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { selectGenmodelFromWorkspace(); } }); if (displayCreateComposite) { /* m_bindingContext = */ initDataBindings(); } }
Example 13
Project: mwe-master File: EcoreGenerator.java View source code |
public void invoke(IWorkflowContext ctx) { ResourceSet resSet = getResourceSet(); Resource resource = resSet.getResource(URI.createURI(genModel), true); final GenModel genModel = (GenModel) resource.getContents().get(0); genModel.setCanGenerate(true); genModel.reconcile(); createGenModelSetup().registerGenModel(genModel); Generator generator = new Generator() { @Override public JControlModel getJControlModel() { return new JControlModel() { @Override public boolean canMerge() { return false; } }; } }; log.info("generating EMF code for " + this.genModel); generator.getAdapterFactoryDescriptorRegistry().addDescriptor(GenModelPackage.eNS_URI, new GeneratorAdapterDescriptor(getTypeMapper(), getLineDelimiter())); generator.setInput(genModel); Diagnostic diagnostic = generator.generate(genModel, GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE, new BasicMonitor()); if (diagnostic.getSeverity() != Diagnostic.OK) log.info(diagnostic); if (generateEdit) { Diagnostic editDiag = generator.generate(genModel, GenBaseGeneratorAdapter.EDIT_PROJECT_TYPE, new BasicMonitor()); if (editDiag.getSeverity() != Diagnostic.OK) log.info(editDiag); } if (generateEditor) { Diagnostic editorDiag = generator.generate(genModel, GenBaseGeneratorAdapter.EDITOR_PROJECT_TYPE, new BasicMonitor()); if (editorDiag.getSeverity() != Diagnostic.OK) log.info(editorDiag); } }
Example 14
Project: dresdenocl-master File: PivotAdapterGeneratorUtil.java View source code |
/**
* Determines the common superclass of all DSL types that are mapped to Pivot
* Model types.
*
* @param genModel
* @return the common superclass of the all DSL types
*/
public static String getCommonSuperType(GenModel genModel) {
if (dSL2PivotModel == null)
createAnnotatedElements(genModel);
Iterator<GenClass> dslTypeIter = dSL2PivotModel.keySet().iterator();
EClass commonSuperType = null;
// find the first common super type
if (dslTypeIter.hasNext()) {
GenClass dslTypeGenClass = dslTypeIter.next();
commonSuperType = dslTypeGenClass.getEcoreClass();
} else
// no elements are annotated, so no common super type can be found
return "Object";
while (dslTypeIter.hasNext()) {
commonSuperType = getCommonSuperType(commonSuperType, dslTypeIter.next().getEcoreClass());
if (commonSuperType.getName().equals("EObject")) {
return "Object";
}
}
return genModel.findGenPackage(commonSuperType.getEPackage()).getInterfacePackageName() + "." + commonSuperType.getName();
}
Example 15
Project: ecoretools-master File: DesignServices.java View source code |
public EObject enableCDOGen(EObject cur, Set<GenModel> genmodels) throws IOException { for (GenModel genModel : genmodels) { if (isNotFromPluginsOrRegistry(genModel)) { genModel.getModelPluginVariables().add("CDO=org.eclipse.emf.cdo"); genModel.setRootExtendsInterface("org.eclipse.emf.cdo.CDOObject"); genModel.setRootExtendsClass("org.eclipse.emf.internal.cdo.CDOObjectImpl"); genModel.setFeatureDelegation(GenDelegationKind.REFLECTIVE_LITERAL); genModel.setProviderRootExtendsClass("org.eclipse.emf.cdo.edit.CDOItemProviderAdapter"); if (genModel.eResource().getURI().isPlatformResource()) { URI cdoMFURI = getCDOMFUri(genModel); if (!URIConverter.INSTANCE.exists(cdoMFURI, Collections.EMPTY_MAP)) { try (OutputStream out = URIConverter.INSTANCE.createOutputStream(cdoMFURI, Collections.EMPTY_MAP)) { new PrintWriter(out).write("This is a marker file for bundles with CDO native models."); } } } } } return cur; }
Example 16
Project: Neo4EMF-master File: Neo4emfMigratorUtil.java View source code |
public static String adjustGenModel(GenModel genModel) {
StringBuilder builder = new StringBuilder();
if (!ROOT_EXTENDS_CLASS.equals(genModel.getRootExtendsClass())) {
genModel.setRootExtendsClass(ROOT_EXTENDS_CLASS);
builder.append("Set Root Extends Class = ");
builder.append(ROOT_EXTENDS_CLASS);
builder.append("\n");
}
if (!ROOT_EXTENDS_INTERFACE.equals(genModel.getRootExtendsInterface())) {
genModel.setRootExtendsInterface(ROOT_EXTENDS_INTERFACE);
builder.append("Set Root Extends Interface = ");
builder.append(ROOT_EXTENDS_INTERFACE);
builder.append("\n");
}
if (!DYNAMIC_TEMPLATES.equals(genModel.isDynamicTemplates())) {
genModel.setDynamicTemplates(DYNAMIC_TEMPLATES);
builder.append("Set Dynamic Templates = ");
builder.append(DYNAMIC_TEMPLATES);
builder.append("\n");
}
if (!TEMPLATE_DIRECTORY.equals(genModel.getTemplateDirectory())) {
genModel.setTemplateDirectory(TEMPLATE_DIRECTORY);
;
builder.append("Set Template Directory = ");
builder.append(TEMPLATE_DIRECTORY);
builder.append("\n");
}
EList<String> pluginVariables = genModel.getModelPluginVariables();
if (!pluginVariables.contains(PLUGIN_VARIABLE_NEO4EMF)) {
pluginVariables.add(PLUGIN_VARIABLE_NEO4J);
pluginVariables.add(PLUGIN_VARIABLE_NEO4EMF);
builder.append("Added Model Plugin Variables = ");
builder.append(PLUGIN_VARIABLE_NEO4J);
builder.append(", ");
builder.append(PLUGIN_VARIABLE_NEO4EMF);
builder.append("\n");
}
EList<String> templatePluginVariables = genModel.getTemplatePluginVariables();
if (!templatePluginVariables.contains(TEMPLATE_PLUGIN_VARIABLE)) {
templatePluginVariables.add(TEMPLATE_PLUGIN_VARIABLE);
builder.append("Added Template Plugin Variables = ");
builder.append(TEMPLATE_PLUGIN_VARIABLE);
builder.append("\n");
}
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
IFolder modelFolder = root.getFolder(new Path(genModel.getModelDirectory()));
IProject modelProject = modelFolder.getProject();
if (!modelProject.exists()) {
try {
modelProject.create(new NullProgressMonitor());
//$NON-NLS-2$
builder.append(//$NON-NLS-2$
"Created target model project" + "\n");
} catch (CoreException ex) {
throw new WrappedException(ex);
}
}
if (!modelProject.isOpen()) {
try {
modelProject.open(new NullProgressMonitor());
//$NON-NLS-2$
builder.append(//$NON-NLS-2$
"Opened target model project" + "\n");
} catch (CoreException ex) {
throw new WrappedException(ex);
}
}
return builder.length() == 0 ? null : builder.toString();
}
Example 17
Project: emap-master File: EClassLookupServiceImpl.java View source code |
private GenModel loadGenModel(URI uri) { if (debug) System.err.println("loadGenModel! " + uri); // final ResourceSet rs = new ResourceSetImpl(); Resource resource; try { resource = masterResourceSet.getResource(uri, true); if (resource.getContents().isEmpty()) { throw new Exception(); } } catch (Exception e) { System.err.println("Loading from resource"); uri = URI.createURI(uri.toString().replaceFirst("resource", "plugin")); resource = masterResourceSet.getResource(uri, true); } if (!resource.getContents().isEmpty()) { final GenModel model = (GenModel) resource.getContents().get(0); // model.reconcile(); // for (GenPackage gp : model.getGenPackages()) { // fixAllInstanceClassNames(gp); // } genModelCache.put(uri, model); return model; } else { System.err.println("COULD NOT LOAD GENMODEL!!!!!! " + uri); return null; } }
Example 18
Project: k3-master File: GenerateGenModelCode.java View source code |
public String getBasePackage(String genModelFile) { Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("genmodel", new org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl()); ResourceSet resourceSet = new ResourceSetImpl(); resourceSet.getURIConverter().getURIMap().putAll(EcorePlugin.computePlatformURIMap()); URI genModelURI = URI.createFileURI(genModelFile); Resource resource = resourceSet.getResource(genModelURI, true); GenModel eltGenModel = (GenModel) resource.getContents().get(0); return eltGenModel.getGenPackages().get(0).getBasePackage(); }
Example 19
Project: openflexo-eclipse-master File: EMFMetaModelUtility.java View source code |
public static List<EMFMetaModel> getEMFMetaModels() { List<EMFMetaModel> result = new ArrayList<EMFMetaModel>(); for (Entry<String, Object> ePackageEntry : EPackage.Registry.INSTANCE.entrySet()) { try { String ePackageUri = ePackageEntry.getKey(); EPackage ePackage = null; if (ePackageEntry.getValue() instanceof EPackage.Descriptor) { ePackage = ((EPackage.Descriptor) ePackageEntry.getValue()).getEPackage(); } else { ePackage = (EPackage) ePackageEntry.getValue(); } if (ePackage != null) { URI genModelLocation = EcorePlugin.getEPackageNsURIToGenModelLocationMap().get(ePackageUri); if (genModelLocation != null) { Resource.Factory genModelFactory = Resource.Factory.Registry.INSTANCE.getFactory(genModelLocation); if (genModelFactory != null) { Resource genModelResource = genModelFactory.createResource(genModelLocation); genModelResource.load(null); EList<EObject> genModelContents = genModelResource.getContents(); if (genModelContents.size() == 1 && genModelContents.get(0) instanceof GenModel) { GenModel genModel = (GenModel) genModelContents.get(0); if (genModel != null) { EList<GenPackage> genPackages = genModel.getGenPackages(); if (genPackages.size() == 1) { GenPackage genPackage = genPackages.get(0); String fileExtension = genPackage.getFileExtension(); Object resourceFactoryObject = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().get(fileExtension); if (resourceFactoryObject == null) { resourceFactoryObject = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().get("*"); } Resource.Factory resourceFactory = null; if (resourceFactoryObject instanceof Resource.Factory.Descriptor) { resourceFactory = ((Resource.Factory.Descriptor) resourceFactoryObject).createFactory(); } else { resourceFactory = (Resource.Factory) resourceFactoryObject; } Class<?>[] interfaces = ePackage.getClass().getInterfaces(); if (interfaces.length == 1 && interfaces[0].isInterface() && EPackage.class.isAssignableFrom(interfaces[0])) { EMFMetaModel emfMetaModel = new EMFMetaModel(fileExtension, ePackageUri, ePackage, resourceFactory); result.add(emfMetaModel); } } } } } } } } catch (IOException e) { e.printStackTrace(); } } return result; }
Example 20
Project: org.eclipselab.emf.ecore.protobuf-master File: ProtobufPackageGeneratorAdapter.java View source code |
@Override protected Diagnostic generateModel(Object object, Monitor monitor) { boolean addedPluginDependecies = false; GenModel genModel = (GenModel) object; for (GenPackage genPackage : genModel.getGenPackages()) { EPackage ePackage = genPackage.getEcorePackage(); if (EPackageAnnotation.get(ePackage).generate()) { if (!addedPluginDependecies) { // TODO: maybe don't hardcode those plugin ids here genModel.getModelPluginVariables().add("org.eclipselab.emf.ecore.protobuf"); genModel.getModelPluginVariables().add("com.google.protobuf"); addedPluginDependecies = true; } DescriptorProtos.FileDescriptorSet.Builder files = DescriptorProtos.FileDescriptorSet.newBuilder(); MapperRegistry mappers = new MapperRegistry(new DefaultNamingStrategy()); mappers.find(ePackage).map(ePackage, files); DescriptorProtos.FileDescriptorProto.Builder file = files.getFileBuilder(0); file.getOptionsBuilder().setJavaPackage(genPackage.getReflectionPackageName()).setJavaOuterClassname(genPackage.getPrefix() + "Protos"); Descriptors.FileDescriptor file2; try { file2 = Descriptors.FileDescriptor.buildFrom(file.build(), new Descriptors.FileDescriptor[0]); } catch (DescriptorValidationException e) { return BasicDiagnostic.toDiagnostic(e); } URI srcDirectory = toURI(genModel.getModelDirectory()); URI targetDirectory = srcDirectory.appendSegments(genPackage.getReflectionPackageName().split("\\.")); URI targetFile = targetDirectory.appendSegment(file.getPackage() + ".proto"); ensureContainerExists(targetDirectory, createMonitor(monitor, 1)); try { Writer writer = new OutputStreamWriter(createOutputStream(targetFile)); writer.write(new DescriptorDebugStringBuilder().build(file2)); writer.close(); } catch (Exception e) { return BasicDiagnostic.toDiagnostic(e); } srcDirectory = srcDirectory.appendSegment(""); String workingDirectory = toAbsoluteFilesystemPath(srcDirectory) + File.separator; String protoFile = toPlatformResourceURI(targetFile).deresolve(toPlatformResourceURI(srcDirectory)).toFileString(); if (protobufCompiler.isAvailable()) { try { protobufCompiler.invoke(workingDirectory, protoFile, workingDirectory); } catch (Throwable t) { return BasicDiagnostic.toDiagnostic(t); } } URI utilDirectory = toURI(genModel.getModelDirectory()).appendSegments(genPackage.getUtilitiesPackageName().split("\\.")); try { GenerateProtobufUtilities generateProtobufUtilities = new GenerateProtobufUtilities(genPackage, new File(toAbsoluteFilesystemPath(utilDirectory)), Collections.emptyList()); generateProtobufUtilities.generate(monitor); } catch (IOException e) { return BasicDiagnostic.toDiagnostic(e); } } } return Diagnostic.OK_INSTANCE; }
Example 21
Project: xtext-sandbox-master File: XcoreGenericTypeTest.java View source code |
@Test public void testXcoreGenericTypeWithoutValidation() throws Exception { XcoreStandaloneSetup.doSetup(); loadModel(URI.createURI("classpath:/model/Ecore.ecore"), true); loadModel(URI.createURI("classpath:/model/Ecore.genmodel"), true); // index 0 has xtext AST model; index 1 has what we want GenModel genModel = (GenModel) loadModelFromFile("src/XcoreGenericType/TestModel2.xcore", false).get(1); final GenPackage genPackage = genModel.getGenPackages().get(0); Assert.assertEquals("testmodel2", genPackage.getNSName()); final GenClass genClass = genPackage.getGenClasses().get(0); GenFeature genFeature = genClass.getGenFeatures().get(0); EStructuralFeature feature = genFeature.getEcoreFeature(); EAttribute attribute = (EAttribute) feature; Assert.assertEquals("age", attribute.getName()); Assert.assertEquals("EInt", attribute.getEType().getName()); }
Example 22
Project: BuildBoost-master File: HeadlessCodeGenerator.java View source code |
private void run(String pathToGenModel, String projectName, String projectPath, List<String> pluginPaths) throws Exception {
ResourceSet rs = new ResourceSetImpl();
registerFactoriesAndPackages(rs);
registerURIMappings(rs, pluginPaths);
EcorePlugin.getPlatformResourceMap().put(projectName, URI.createFileURI(projectPath + File.separator));
GenModel genModel = loadGenModel(pathToGenModel, rs);
if (genModel == null) {
return;
}
registerCodeGenAdapter();
generateCode(genModel, projectPath);
}
Example 23
Project: ecore-master File: GenUtils.java View source code |
public static GenPackage createGenModel(final EPackage rootPackage, final String ecoreLocation, String basePackage, Collection<GenPackage> usedGenPackages) throws IOException {
GenModel genModel = GenModelFactory.eINSTANCE.createGenModel();
genModel.setComplianceLevel(GenJDKLevel.JDK70_LITERAL);
genModel.setCopyrightText("Copyright (c) 2015-2016 Obeo, Inria\n" + "All rights reserved. This program and the accompanying materials\n" + "are made available under the terms of the Eclipse Public License v1.0\n" + "which accompanies this distribution, and is available at\n" + "http://www.eclipse.org/legal/epl-v10.html\n" + " \n" + "Contributors:\n" + "- William Piers <william.piers@obeo.fr>\n" + "- Philippe Merle <philippe.merle@inria.fr>");
String modelPluginId = new Path(ecoreLocation).removeLastSegments(2).lastSegment().toString();
String editPluginId = modelPluginId + ".edit";
String editorPluginId = modelPluginId + ".editor";
String testsPluginId = modelPluginId + ".tests";
genModel.setModelDirectory('/' + modelPluginId + "/src-gen");
genModel.setEditDirectory('/' + editPluginId + "/src-gen");
genModel.setEditorDirectory('/' + editorPluginId + "/src-gen");
genModel.setTestsDirectory('/' + testsPluginId + "/src");
genModel.getForeignModel().add(new Path(ecoreLocation).lastSegment());
genModel.setModelName(ConverterUtils.toU1Case(rootPackage.getName()));
genModel.setModelPluginID(modelPluginId);
genModel.setEditPluginID(editPluginId);
genModel.setEditorPluginID(editorPluginId);
genModel.setTestsPluginID(testsPluginId);
genModel.setRootExtendsInterface("org.eclipse.emf.ecore.EObject");
// Activate code generation for Ecore reflective and dynamic invocation of OCCI actions.
genModel.setOperationReflection(true);
genModel.getUsedGenPackages().addAll(usedGenPackages);
genModel.initialize(Collections.singleton(rootPackage));
GenPackage genPackage = genModel.getGenPackages().get(0);
genPackage.setPrefix(ConverterUtils.toU1Case(rootPackage.getNsPrefix()));
genPackage.setBasePackage(basePackage);
URI genModelURI = URI.createFileURI(new Path(ecoreLocation).removeFileExtension().addFileExtension("genmodel").toString());
final XMIResourceImpl genModelResource = new XMIResourceImpl(genModelURI);
genModelResource.getContents().add(genModel);
genModelResource.save(Collections.EMPTY_MAP);
return genPackage;
}
Example 24
Project: EMFTools-master File: EcoreWrapper.java View source code |
private static EMap<EList<String>, GenPackage> findGenPackagesInScope(EPackageWrapper context) { Resource eJavaResource = context.eResource(); if (eJavaResource == null) { return ECollections.emptyEMap(); } ResourceSet rs = eJavaResource.getResourceSet(); if (rs == null) { return ECollections.emptyEMap(); } EMap<EList<String>, GenPackage> result = new BasicEMap<EList<String>, GenPackage>(); String fileName = context.getNamespaces().get(0) + ".genmodel"; URI ecoreURI = eJavaResource.getURI().trimSegments(1 + context.getNamespaces().size()).appendSegment(fileName); try { Resource genModelResource = rs.getResource(ecoreURI, true); EcoreUtil.resolveAll(genModelResource); } catch (Exception e) { throw new RuntimeException(e); } // we need to create a copy of the list of resource, because the resource // set is expanded while iterating over the resources. List<Resource> copy = new ArrayList<Resource>(); copy.addAll(rs.getResources()); for (Resource r : copy) { if (!r.getContents().isEmpty() && r.getContents().get(0) instanceof GenModel) { GenModel genModel = (GenModel) r.getContents().get(0); for (GenPackage genPackage : genModel.getGenPackages()) { collectGenPackages(genPackage, new BasicEList<String>(), result); } for (GenPackage genPackage : genModel.getUsedGenPackages()) { if (genPackage.eIsProxy()) { // TODO add error String message = "Can't find used generator package for " + genPackage.toString(); addError(context.eResource(), message); continue; } collectGenPackages(genPackage, new BasicEList<String>(), result); } } } return result; }
Example 25
Project: FURCAS-master File: RoseImporter.java View source code |
@Override
protected void adjustGenModel(Monitor monitor) {
super.adjustGenModel(monitor);
GenModel genModel = getGenModel();
String projectName = getModelProjectName();
IPath genModelPath = getGenModelPath();
URI modelURI = getModelLocationURIs().get(0);
URI genModelURI = getGenModel().eResource().getURI();
genModel.getForeignModel().add(makeRelative(modelURI, genModelURI).toFileString());
IPath projectLocation = getWorkspaceRoot().getProject(projectName).getLocation();
if (projectLocation != null) {
projectLocation = projectLocation.removeLastSegments(1);
} else {
projectLocation = getGenModelProjectLocation();
}
for (Map.Entry<String, String> entry : getPathMap().entrySet()) {
String value = entry.getValue();
if (value != null) {
genModel.getForeignModel().add(entry.getKey());
if (new Path(value).equals(projectLocation)) {
value = "..";
for (int depth = genModelPath.segmentCount(); depth > 2; --depth) {
value += "/..";
}
genModel.getForeignModel().add(value);
} else {
genModel.getForeignModel().add(value);
}
}
}
}
Example 26
Project: Reuseware-master File: CompositionSystemGenerator.java View source code |
public static void processAll(ICompositionSystemContext systemContext, IExtensionContext extensionContext) throws CoreException, IOException {
processLanguageExtension(extensionContext);
generateEcoreFile(extensionContext);
GenModel genModel = CompositionSystemGenerator.getGenModel(extensionContext);
// generateModelCode(genModel,new BasicMonitor());
IJavaProject project = createComponentModelProject(systemContext.getBaseLanguageBasePackageName());
processProjectInfrastructure(project, systemContext, extensionContext);
processComponentModel(project, systemContext);
processCompositionAlgebra(project, systemContext);
}
Example 27
Project: mylyn.docs.intent.main-master File: CopyImageUtils.java View source code |
/** * Searches for an edit plugin corresponding to the given EObject and tries to retrieve its associated * image. * * @param metamodelURI * the {@link URI} * @param classifier * the {@link EObject} to get the image from * @return the URL of the image associated to the given classifier (if any found) */ private static URL doGetImageFromWorkspace(URI metamodelURI, EClassifier classifier) { URL imageURL = null; if (metamodelURI != null && metamodelURI.toString().replace("\"", "").endsWith("ecore")) { URI genModelURI = URI.createURI(metamodelURI.toString().replace("\"", "").replace("ecore", "genmodel")); try { Resource resource = getResourceSet().getResource(genModelURI, true); if (resource.getContents().isEmpty() || !(resource.getContents().iterator().next() instanceof GenModel)) { return null; } String editIconsDirectory = ((GenModel) resource.getContents().iterator().next()).getEditIconsDirectory(); IFolder folder = ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path(editIconsDirectory + "/full/obj16")); if (folder.exists()) { for (String imageExtension : new String[] { "gif", "png" }) { if (folder.getFile(classifier.getName() + "." + imageExtension).exists()) { imageURL = new URL("file:/" + folder.getFile(classifier.getName() + "." + imageExtension).getLocation().toString()); } } } // CHECKSTYLE:OFF } catch (RuntimeException e) { IntentUiLogger.logInfo("Cannot find genmodel at " + genModelURI + ". Default image will be use to display " + classifier.getName()); } catch (MalformedURLException e) { IntentUiLogger.logError(e); } } return imageURL; }
Example 28
Project: ArchStudio5-master File: DataBindingGeneratorImpl.java View source code |
// projectName = e.g., "org.archstudio.xadl3.bindings"
public synchronized List<DataBindingGenerationStatus> generateBindings(List<String> schemaURIStrings, List<Xadl3SchemaLocation> schemaLocations, final String projectName) {
List<DataBindingGenerationStatus> statusList = new ArrayList<DataBindingGenerationStatus>();
try {
// Map available schema for offline use.
for (SchemaRecord schemaRecord : schemaRecords.values()) {
URIConverter.URI_MAP.put(schemaRecord.nsUri, URI.createURI(schemaRecord.xsdFileUrl.toURI().toString()));
}
final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
XSDImporter importer = new XSDImporter() {
/*
* Note: XSDImporter seems to not support non-local files (e.g., projects imported from an external
* folder, linked files, etc.). This is a problem because, in such cases, the generated resources are
* saved in the wrong location. Later, when searching for the resources, they cannot be found and the
* process fails. To resolve this, we extend the base class and move the resources to the correct
* location before saving them.
*/
@Override
protected List<Resource> computeResourcesToBeSaved() {
List<Resource> resources = super.computeResourcesToBeSaved();
// Move these resources to the correct location.
for (Resource resource : resources) {
URI uri = resource.getURI();
IFile newFile = project.getFile(uri.lastSegment());
resource.setURI(URI.createURI(newFile.getLocationURI().toString()));
}
return resources;
}
};
importer.setUsePlatformURI(false);
importer.setCreateEcoreMap(true);
// We still have to assign some value here, even though it doesn't work.
importer.setGenModelContainerPath(project.getFullPath());
importer.setGenModelFileName("xadl.genmodel");
String subfolder = "src";
final IPath subfolderPath = project.getFolder(subfolder).getFullPath();
importer.setModelPluginID(projectName);
importer.setModelPluginDirectory("/" + projectName + "/" + subfolder);
StringBuilder combinedModelURIs = new StringBuilder();
for (String modelURIString : schemaURIStrings) {
combinedModelURIs.append(modelURIString);
}
for (Xadl3SchemaLocation schemaLocation : schemaLocations) {
if (!schemaLocation.isCopyLocally()) {
combinedModelURIs.append(schemaLocation.getUrl().toString()).append(" ");
}
}
importer.setModelLocation(combinedModelURIs.toString());
boolean computePackagesSucceeded = false;
try {
importer.computeEPackages(emfMonitor);
computePackagesSucceeded = true;
// Fix names of external packages.
Multimap<String, EPackage> packages = Multimaps.index(importer.getEPackages(), new Function<EPackage, String>() {
@Override
public String apply(EPackage input) {
return input.getNsURI();
}
});
for (SchemaRecord record : schemaRecords.values()) {
if (record.packageName != null && packages.get(record.nsUri.toString()).size() > 0) {
EPackage e = packages.get(record.nsUri.toString()).iterator().next();
e.setName(record.packageName);
}
}
} catch (Exception e) {
e.printStackTrace();
statusList.add(new DataBindingGenerationStatus(null, Status.FAILURE, "Error computing packages for schemas: " + importer.getModelLocation(), e));
return statusList;
}
if (!computePackagesSucceeded) {
statusList.add(new DataBindingGenerationStatus(null, Status.FAILURE, "Computing packages unsuccessful for schema: " + importer.getModelLocation(), null));
return statusList;
}
// to generate bindings. We assume these are living in other schema projects.
for (EPackage ePackage : importer.getEPackages()) {
EPackageConvertInfo ePackageConvertInfo = importer.getEPackageConvertInfo(ePackage);
if (ePackage.getNsURI().equals(EcorePackage.eNS_URI)) {
// Don't convert the Ecore dependency; this seems to get included automagically.
ePackageConvertInfo.setConvert(false);
continue;
}
ePackageConvertInfo.setConvert(true);
}
// This causes the code to be generated with generics and such.
GenModel genModel = importer.getGenModel();
genModel.setComplianceLevel(GenJDKLevel.JDK70_LITERAL);
// Inscrutable EMF Magic: Note that this has to be done before the below loop through
// referenced packages or it will throw a NullPointerException when adding packages to the
// ResourceSet.
importer.adjustEPackages(emfMonitor);
importer.prepareGenModelAndEPackages(emfMonitor);
boolean modelSaveSucceeded = false;
try {
importer.saveGenModelAndEPackages(emfMonitor);
modelSaveSucceeded = true;
} catch (Exception e) {
e.printStackTrace();
statusList.add(new DataBindingGenerationStatus(null, Status.FAILURE, "Error saving generated content for schema: " + importer.getModelLocation(), e));
return statusList;
}
if (!modelSaveSucceeded) {
statusList.add(new DataBindingGenerationStatus(null, Status.FAILURE, "Error saving generated content for schema: " + importer.getModelLocation(), null));
return statusList;
}
try {
genModel.setCanGenerate(true);
Generator codeGenerator = new Generator();
codeGenerator.setInput(genModel);
// Find the gen package for the targeted schema.
for (GenPackage genPackage : genModel.getGenPackages()) {
// Only generate code for the schema in this project.
if (namedSchemaRecords.get(projectName).contains(genPackage.getNSURI())) {
codeGenerator.generate(genPackage, GenBaseGeneratorAdapter.MODEL_PROJECT_TYPE, emfMonitor);
}
}
} catch (Exception e) {
e.printStackTrace();
statusList.add(new DataBindingGenerationStatus(null, Status.FAILURE, "Error generating content for schema: " + importer.getModelLocation(), e));
return statusList;
}
// Update plugin's dependencies to include referenced schema.
BundleContext context = Activator.getSingleton().getContext();
final IBundleProjectService service = OSGiUtils.getServiceReference(context, IBundleProjectService.class);
IBundleProjectDescription description = service.getDescription(project);
Map<String, IRequiredBundleDescription> requiredBundles = new HashMap<>();
for (IRequiredBundleDescription requiredBundle : SystemUtils.emptyIfNull(description.getRequiredBundles())) {
requiredBundles.put(requiredBundle.getName(), requiredBundle);
}
requiredBundles.put("org.eclipse.emf.ecore", service.newRequiredBundle("org.eclipse.emf.ecore", null, false, true));
requiredBundles.put("org.eclipse.emf.ecore.xmi", service.newRequiredBundle("org.eclipse.emf.ecore.xmi", null, false, true));
requiredBundles.put("org.archstudio.dblgen", service.newRequiredBundle("org.archstudio.dblgen", null, false, true));
for (String nsUri : SystemUtils.emptyIfNull(namedSchemaRecords.get(projectName))) {
if (schemaRecords.containsKey(nsUri)) {
for (String importedNsUri : schemaRecords.get(nsUri).imports) {
if (schemaRecords.containsKey(importedNsUri)) {
String name = schemaRecords.get(importedNsUri).name;
if (!projectName.equals(name)) {
requiredBundles.put(name, service.newRequiredBundle(name, null, false, true));
}
}
}
}
}
description.setRequiredBundles(requiredBundles.values().toArray(new IRequiredBundleDescription[requiredBundles.size()]));
// Updated plugin's exported packages to include the java packages created. Actually, only
// export created packages.
final Map<String, IPackageExportDescription> packageExports = new HashMap<>();
project.getFolder(subfolder).accept(new IResourceVisitor() {
@Override
public boolean visit(IResource resource) throws CoreException {
try {
if (resource instanceof IFile) {
IFile file = (IFile) resource;
IPath path = file.getParent().getFullPath();
String packageName = path.makeRelativeTo(subfolderPath).toString().replace('/', '.');
packageExports.put(packageName, service.newPackageExport(packageName, null, true, null));
}
} catch (Exception e) {
throw new CoreException(new org.eclipse.core.runtime.Status(IStatus.ERROR, "org.archstudio.dblgen.core", "Error visiting " + resource.toString(), e));
}
return true;
}
});
description.setPackageExports(packageExports.values().toArray(new IPackageExportDescription[packageExports.size()]));
// Update plugin's bin includes to include the model folder.
Set<IPath> binIncludes = Sets.newHashSet(SystemUtils.emptyIfNull(description.getBinIncludes()));
binIncludes.add(new Path("model/"));
List<IPath> binIncludesSorted = Lists.newArrayList(binIncludes);
Collections.sort(binIncludesSorted, new Comparator<IPath>() {
@Override
public int compare(IPath o1, IPath o2) {
return o1.toString().compareTo(o2.toString());
}
});
description.setBinIncludes(binIncludesSorted.toArray(new IPath[binIncludesSorted.size()]));
// Make sure that extensions are allowed.
description.setExtensionRegistry(true);
// Store the changes.
description.apply(null);
project.refreshLocal(IResource.DEPTH_INFINITE, null);
// Add the package and parser extensions to the plugin.
IFile manifestFile = project.getFile("META-INF/MANIFEST.MF");
manifestFile.refreshLocal(IResource.DEPTH_ONE, null);
IFile pluginFile = project.getFile("plugin.xml");
pluginFile.refreshLocal(IResource.DEPTH_ONE, null);
WorkspaceBundlePluginModel pluginModel = new WorkspaceBundlePluginModel(manifestFile, pluginFile);
IExtensionsModelFactory pluginFactory = pluginModel.getFactory();
// The workspace extensions are not loaded by default, so manually copy them.
IPluginModelBase existingPluginModel = PluginRegistry.findModel(project);
if (existingPluginModel != null) {
IExtensions extensions = existingPluginModel.getExtensions();
if (extensions != null) {
for (IPluginExtension pluginExtension : extensions.getExtensions()) {
pluginModel.getExtensions().add(copyPluginExtensions(pluginFactory, pluginExtension));
}
}
}
// Remove existing generated extensions.
for (IPluginExtension extension : Lists.newArrayList(pluginModel.getExtensions().getExtensions())) {
if ("org.eclipse.emf.ecore.generated_package".equals(extension.getPoint())) {
pluginModel.getExtensions().remove(extension);
}
if ("org.eclipse.emf.ecore.extension_parser".equals(extension.getPoint())) {
pluginModel.getExtensions().remove(extension);
}
if ("org.archstudio.dblgen.processedSchema".equals(extension.getPoint())) {
pluginModel.getExtensions().remove(extension);
}
}
// Add the generated package extensions.
for (GenPackage genPackage : genModel.getGenPackages()) {
// Only generate code for the schema in this project.
if (namedSchemaRecords.get(projectName).contains(genPackage.getNSURI())) {
String nsURI = genPackage.getNSURI();
String packageClassName = "" + genPackage.getBasePackage() + "." + genPackage.getPackageName() + "." + genPackage.getPackageInterfaceName();
IPluginExtension extension = pluginModel.createExtension();
extension.setPoint("org.eclipse.emf.ecore.generated_package");
IPluginElement element = pluginModel.createElement(extension);
element.setName("package");
element.setAttribute("uri", nsURI);
element.setAttribute("class", packageClassName);
extension.add(element);
pluginModel.getExtensions().add(extension);
}
}
// Add an entry for each processed schema.
for (String nsUri : namedSchemaRecords.get(projectName)) {
SchemaRecord schemaRecord = schemaRecords.get(nsUri);
IPluginExtension extension = pluginModel.createExtension();
extension.setPoint("org.archstudio.dblgen.processedSchema");
IPluginElement element = pluginModel.createElement(extension);
element.setName("Schema");
element.setAttribute("nsURI", nsUri);
if (schemaRecord.schemaPath != null) {
element.setAttribute("file", schemaRecord.schemaPath);
}
if (schemaRecord.schemaUrl != null) {
element.setAttribute("url", schemaRecord.schemaUrl);
}
extension.add(element);
pluginModel.getExtensions().add(extension);
}
// Save plug-in model.
pluginModel.save();
// Format generated files.
CodeGeneration.formatCode(project);
SortManifests.sortManifest(project);
} catch (Exception e) {
e.printStackTrace();
statusList.add(new DataBindingGenerationStatus(null, Status.FAILURE, "Error processing schema: " + e.getMessage(), e));
return statusList;
}
return statusList;
}