blob: cab014ddcaf5a1cfa3845aa6eb1aab16adc9449b [file] [log] [blame]
package org.eclipse.emf.parsley.examples.cdo.company.handler;
import java.io.IOException;
import java.util.Collections;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.parsley.examples.cdo.company.Company;
import org.eclipse.emf.parsley.examples.cdo.company.CompanyFactory;
import org.eclipse.emf.parsley.examples.cdo.company.app.Activator;
import org.eclipse.emf.parsley.resource.ResourceLoader;
import com.google.inject.Injector;
public abstract class AbstractAddCompanyChildrenHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
//Using Injector from Parsley
Injector injector = Activator.getDefault().getInjector();
ResourceLoader reourceLoader=injector.getInstance(ResourceLoader.class);
AdapterFactoryEditingDomain editingDomain=injector.getInstance(AdapterFactoryEditingDomain.class);
//Getting resource
Resource resource = reourceLoader.getResource(editingDomain, URI.createURI("cdo://localhost/repo1/testResource")).getResource();
Company rcpVisionCompany=null;
if(resource.getContents().size()==0){
//Creating a new Company as main container
rcpVisionCompany= CompanyFactory.eINSTANCE.createCompany();
rcpVisionCompany.setName("RCP Vision");
resource.getContents().add(rcpVisionCompany);
}else{
rcpVisionCompany=(Company) resource.getContents().get(0);
}
populateChildren(rcpVisionCompany);
try {
resource.save(Collections.EMPTY_MAP);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
protected abstract void populateChildren(Company rcpVisionCompany);
}