| Save Failed Attempted to beginRule: does not match outer scope rule [message #1077211] |
Thu, 01 August 2013 07:28  |
Eclipse User |
|
|
|
Hi all ,
I try split two xtext editor.one elements is created one editor ,created element's related attribute must created automatically in the other editor.but I receive an error I do not solved this problem :
Save Failed
Attempted to beginRule: L/deneme/user.user, does not match outer scope rule: L/deneme/contentdeneme.content
I share my code :
package com.mdd4cca.msf.content.content.util;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.transaction.util.TransactionUtil;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.PlatformUI;
import org.eclipse.xtext.resource.SaveOptions;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.resource.XtextResourceSet;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.mdd4cca.msf.content.ContentStandaloneSetup;
import com.mdd4cca.msf.content.content.Web;
import com.mdd4cca.msf.user.UserRuntimeModule;
import com.mdd4cca.msf.user.UserStandaloneSetup;
import com.mdd4cca.msf.user.user.BasePermission;
import com.mdd4cca.msf.user.user.Group;
import com.mdd4cca.msf.user.user.RoleAssignment;
import com.mdd4cca.msf.user.user.RoleDefinition;
import com.mdd4cca.msf.user.user.SitePermission;
import com.mdd4cca.msf.user.user.UserFactory;
import com.mdd4cca.msf.user.user.UserModel;
import com.mdd4cca.msf.user.user.UserPackage;
import com.mdd4cca.msf.user.user.util.UserConstant;
public class SitePermissionUtil {
public static SitePermission createDefaultSitePermission(String webName,
String webGuID,UserModel userModel) {
// Initialize the model
UserPackage.eINSTANCE.eClass();
// Retrieve the default factory singleton
UserFactory factory = UserFactory.eINSTANCE;
// SitePermission
SitePermission sitePermission = factory.createSitePermission();
sitePermission.setName(webName);
sitePermission.setWebGUID(webGuID);
// Owners Group
Group ownerGroup = UserFactory.eINSTANCE.createGroup();
ownerGroup.setName("Owners");
sitePermission.getOwnedGroup().add(ownerGroup);
// Members Group
Group memberGroup = UserFactory.eINSTANCE.createGroup();
memberGroup.setName("Members");
sitePermission.getOwnedGroup().add(memberGroup);
// Visitors Group
Group visitorsGroup = UserFactory.eINSTANCE.createGroup();
visitorsGroup.setName("Visitors");
sitePermission.getOwnedGroup().add(visitorsGroup);
// Viewers Group
Group viewersGroup = UserFactory.eINSTANCE.createGroup();
viewersGroup.setName("Viewers");
sitePermission.getOwnedGroup().add(viewersGroup);
// viewersRoleDefinitions
RoleDefinition viewerRole = UserFactory.eINSTANCE.createRoleDefinition();
viewerRole.setName("viewerRoleDefinition");
viewerRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
viewerRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
viewerRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
viewerRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
viewerRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
viewerRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
viewerRole.getBasePermissions().add(
BasePermission.USE_CLIENT_INTEGRATION);
viewerRole.getBasePermissions().add(BasePermission.OPEN);
sitePermission.getOwnedRoleDefinition().add(viewerRole);
// ownerRoleDefinitions
RoleDefinition ownerRole = UserFactory.eINSTANCE.createRoleDefinition();
ownerRole.setName("ownerRoleDefinition");
List<BasePermission> permissions = BasePermission.VALUES;
for (Iterator<BasePermission> iterator = permissions.iterator(); iterator
.hasNext();) {
BasePermission basePermission = (BasePermission) iterator.next();
ownerRole.getBasePermissions().add(basePermission);
}
sitePermission.getOwnedRoleDefinition().add(ownerRole);
// memberRoleDefinition
RoleDefinition memberRole = UserFactory.eINSTANCE.createRoleDefinition();
memberRole.setName("memberRoleDefinition");
memberRole.getBasePermissions().add(BasePermission.ADD_LIST_ITEMS);
memberRole.getBasePermissions().add(BasePermission.EDIT_LIST_ITEMS);
memberRole.getBasePermissions().add(BasePermission.DELETE_LIST_ITEMS);
memberRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
memberRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
memberRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
memberRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
memberRole.getBasePermissions().add(BasePermission.BROWSE_DIRECTORIES);
memberRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
memberRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
memberRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
memberRole.getBasePermissions().add(
BasePermission.USE_CLIENT_INTEGRATION);
memberRole.getBasePermissions().add(BasePermission.OPEN);
memberRole.getBasePermissions().add(BasePermission.EDIT_MY_USER_INFO);
memberRole.getBasePermissions().add(
BasePermission.MANAGE_PERSONAL_VIEWS);
memberRole.getBasePermissions().add(
BasePermission.ADD_DEL_PRIVATE_WEB_PARTS);
memberRole.getBasePermissions().add(
BasePermission.UPDATE_PERSONAL_WEB_PARTS);
sitePermission.getOwnedRoleDefinition().add(memberRole);
// visitor Role Definition.
RoleDefinition VisitorsRole = UserFactory.eINSTANCE.createRoleDefinition();
VisitorsRole.setName("visitorsRoleDefinition");
VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
VisitorsRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
VisitorsRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
VisitorsRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
VisitorsRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
VisitorsRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
VisitorsRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
VisitorsRole.getBasePermissions().add(
BasePermission.USE_CLIENT_INTEGRATION);
VisitorsRole.getBasePermissions().add(BasePermission.OPEN);
sitePermission.getOwnedRoleDefinition().add(VisitorsRole);
// Full Control Assignment
RoleAssignment ownerRoleAssignment = UserFactory.eINSTANCE
.createRoleAssignment();
ownerRoleAssignment.setName("FullControl");
ownerRoleAssignment.setMember(ownerGroup);
ownerRoleAssignment.getRoleDefinitionBindings().add(ownerRole);
sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
// Contribute Assignment
RoleAssignment memeberRoleAssignment = UserFactory.eINSTANCE
.createRoleAssignment();
memeberRoleAssignment.setName("Contribute");
memeberRoleAssignment.setMember(memberGroup);
memeberRoleAssignment.getRoleDefinitionBindings().add(memberRole);
sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
// Read Assignment
RoleAssignment visitorsRoleAssignment = UserFactory.eINSTANCE
.createRoleAssignment();
visitorsRoleAssignment.setName("Read");
visitorsRoleAssignment.setMember(visitorsGroup);
visitorsRoleAssignment.getRoleDefinitionBindings().add(VisitorsRole);
sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
// Full Control Assignment
RoleAssignment viewersRoleAssignment = UserFactory.eINSTANCE
.createRoleAssignment();
viewersRoleAssignment.setName("ViewOnly");
viewersRoleAssignment.setMember(viewersGroup);
viewersRoleAssignment.getRoleDefinitionBindings().add(viewerRole);
sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
// Add Role Assignment to web
sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
return sitePermission;
}
public static SitePermission loadAndAddSitePermission(String webName,
String webGuID){
ContentStandaloneSetup.doSetup();
SitePermission sitePermission = null;
Injector injector = Guice.createInjector(new UserRuntimeModule());
XtextResourceSet resourceSet = injector.getInstance(XtextResourceSet.class);
resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
Resource resource = resourceSet.getResource(URI.createURI(getUserFileLocationURI()), true);
UserModel model = (UserModel) resource.getContents().get(0);
sitePermission = createDefaultSitePermission(webName, webGuID, model);
// model.getSitePermissions().add(s);
// System.out.println( model.getSitePermissions().add(s));
// resource.getContents().add(s);
try {
Map options = new HashMap();
SaveOptions.defaultOptions().addTo(options);
resource.save(options);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sitePermission;
}
public static String getUserFileLocationURI() {
IEditorPart editorPart = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (editorPart != null) {
IFileEditorInput input = (IFileEditorInput) editorPart
.getEditorInput();
IFile file = input.getFile();
String path = "";
int segmentCount = file.getProjectRelativePath().segmentCount();
if(segmentCount != 1){
for (int i = 0; i < segmentCount -1; i++) {
path += file.getProjectRelativePath().segment(i) + "/";
}
}
return "platform:/resource/" + file.getProject().getName() + "/" + path + UserConstant.USER_FILE_NAME;
}
return "";
}
}
When I save editor,I called above class
Best regards
|
|
|
| Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1081406 is a reply to message #1077211] |
Wed, 07 August 2013 03:35   |
Eclipse User |
|
|
|
Hi,
first of all: Never use a standalone setup in Eclipse. It will brick you
currently running instance in all sorts of horrible and unpredictable
ways. The same applies for Guice.createInjector(new XYZRuntimeModule());
If you really want to modify different files on save, you'll have to
override XtextDocumentProvider.getSaveRule(..)
Please have a look at the workspace concepts especially on scheduling
rules for details.
Regards,
Sebastian
--
Looking for professional support for Xtext, Xtend or Eclipse Modeling?
Go visit: http://xtext.itemis.com
Am 01.08.13 13:29, schrieb junior developer:
> Hi all ,
>
> I try split two xtext editor.one elements is created one editor ,created
> element's related attribute must created automatically in the other
> editor.but I receive an error I do not solved this problem :
>
> Save Failed
> Attempted to beginRule: L/deneme/user.user, does not match outer scope
> rule: L/deneme/contentdeneme.content
>
> I share my code :
>
>
>
> package com.mdd4cca.msf.content.content.util;
>
> import java.io.IOException;
> import java.util.ArrayList;
> import java.util.HashMap;
> import java.util.Iterator;
> import java.util.List;
> import java.util.Map;
>
> import org.eclipse.core.resources.IFile;
> import org.eclipse.emf.common.util.URI;
> import org.eclipse.emf.ecore.EObject;
> import org.eclipse.emf.ecore.resource.Resource;
> import org.eclipse.emf.ecore.resource.ResourceSet;
> import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
> import org.eclipse.emf.transaction.util.TransactionUtil;
> import org.eclipse.ui.IEditorPart;
> import org.eclipse.ui.IFileEditorInput;
> import org.eclipse.ui.PlatformUI;
> import org.eclipse.xtext.resource.SaveOptions;
> import org.eclipse.xtext.resource.XtextResource;
> import org.eclipse.xtext.resource.XtextResourceSet;
>
> import com.google.inject.Guice;
> import com.google.inject.Injector;
> import com.mdd4cca.msf.content.ContentStandaloneSetup;
> import com.mdd4cca.msf.content.content.Web;
> import com.mdd4cca.msf.user.UserRuntimeModule;
> import com.mdd4cca.msf.user.UserStandaloneSetup;
> import com.mdd4cca.msf.user.user.BasePermission;
> import com.mdd4cca.msf.user.user.Group;
> import com.mdd4cca.msf.user.user.RoleAssignment;
> import com.mdd4cca.msf.user.user.RoleDefinition;
> import com.mdd4cca.msf.user.user.SitePermission;
> import com.mdd4cca.msf.user.user.UserFactory;
> import com.mdd4cca.msf.user.user.UserModel;
> import com.mdd4cca.msf.user.user.UserPackage;
> import com.mdd4cca.msf.user.user.util.UserConstant;
>
> public class SitePermissionUtil {
>
> public static SitePermission createDefaultSitePermission(String
> webName,
> String webGuID,UserModel userModel) {
> // Initialize the model
> UserPackage.eINSTANCE.eClass();
> // Retrieve the default factory singleton
> UserFactory factory = UserFactory.eINSTANCE;
> // SitePermission
> SitePermission sitePermission = factory.createSitePermission();
> sitePermission.setName(webName);
> sitePermission.setWebGUID(webGuID);
>
> // Owners Group
> Group ownerGroup = UserFactory.eINSTANCE.createGroup();
> ownerGroup.setName("Owners");
> sitePermission.getOwnedGroup().add(ownerGroup);
> // Members Group
> Group memberGroup = UserFactory.eINSTANCE.createGroup();
> memberGroup.setName("Members");
> sitePermission.getOwnedGroup().add(memberGroup);
> // Visitors Group
> Group visitorsGroup = UserFactory.eINSTANCE.createGroup();
> visitorsGroup.setName("Visitors");
> sitePermission.getOwnedGroup().add(visitorsGroup);
> // Viewers Group
> Group viewersGroup = UserFactory.eINSTANCE.createGroup();
> viewersGroup.setName("Viewers");
> sitePermission.getOwnedGroup().add(viewersGroup);
> // viewersRoleDefinitions
> RoleDefinition viewerRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> viewerRole.setName("viewerRoleDefinition");
>
> viewerRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
> viewerRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
> viewerRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
>
> viewerRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
>
> viewerRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
>
> viewerRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
> viewerRole.getBasePermissions().add(
> BasePermission.USE_CLIENT_INTEGRATION);
> viewerRole.getBasePermissions().add(BasePermission.OPEN);
> sitePermission.getOwnedRoleDefinition().add(viewerRole);
> // ownerRoleDefinitions
> RoleDefinition ownerRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> ownerRole.setName("ownerRoleDefinition");
> List<BasePermission> permissions = BasePermission.VALUES;
> for (Iterator<BasePermission> iterator =
> permissions.iterator(); iterator
> .hasNext();) {
> BasePermission basePermission = (BasePermission)
> iterator.next();
> ownerRole.getBasePermissions().add(basePermission);
> }
> sitePermission.getOwnedRoleDefinition().add(ownerRole);
> // memberRoleDefinition
> RoleDefinition memberRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> memberRole.setName("memberRoleDefinition");
>
> memberRole.getBasePermissions().add(BasePermission.ADD_LIST_ITEMS);
>
> memberRole.getBasePermissions().add(BasePermission.EDIT_LIST_ITEMS);
>
> memberRole.getBasePermissions().add(BasePermission.DELETE_LIST_ITEMS);
>
> memberRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
> memberRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
> memberRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
> memberRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
>
> memberRole.getBasePermissions().add(BasePermission.BROWSE_DIRECTORIES);
>
> memberRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
>
> memberRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
>
> memberRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
> memberRole.getBasePermissions().add(
> BasePermission.USE_CLIENT_INTEGRATION);
> memberRole.getBasePermissions().add(BasePermission.OPEN);
>
> memberRole.getBasePermissions().add(BasePermission.EDIT_MY_USER_INFO);
> memberRole.getBasePermissions().add(
> BasePermission.MANAGE_PERSONAL_VIEWS);
> memberRole.getBasePermissions().add(
> BasePermission.ADD_DEL_PRIVATE_WEB_PARTS);
> memberRole.getBasePermissions().add(
> BasePermission.UPDATE_PERSONAL_WEB_PARTS);
> sitePermission.getOwnedRoleDefinition().add(memberRole);
> // visitor Role Definition.
> RoleDefinition VisitorsRole =
> UserFactory.eINSTANCE.createRoleDefinition();
> VisitorsRole.setName("visitorsRoleDefinition");
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
> VisitorsRole.getBasePermissions().add(BasePermission.OPEN_ITEMS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_VERSIONS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.CREATE_ALERTS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_FORM_PAGES);
>
> VisitorsRole.getBasePermissions().add(BasePermission.VIEW_LIST_ITEMS);
>
> VisitorsRole.getBasePermissions().add(BasePermission.BROWSE_USER_INFO);
>
> VisitorsRole.getBasePermissions().add(BasePermission.USE_REMOTE_AP_IS);
> VisitorsRole.getBasePermissions().add(
> BasePermission.USE_CLIENT_INTEGRATION);
> VisitorsRole.getBasePermissions().add(BasePermission.OPEN);
> sitePermission.getOwnedRoleDefinition().add(VisitorsRole);
> // Full Control Assignment
> RoleAssignment ownerRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> ownerRoleAssignment.setName("FullControl");
> ownerRoleAssignment.setMember(ownerGroup);
> ownerRoleAssignment.getRoleDefinitionBindings().add(ownerRole);
> sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
> // Contribute Assignment
> RoleAssignment memeberRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> memeberRoleAssignment.setName("Contribute");
> memeberRoleAssignment.setMember(memberGroup);
> memeberRoleAssignment.getRoleDefinitionBindings().add(memberRole);
>
> sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
> // Read Assignment
> RoleAssignment visitorsRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> visitorsRoleAssignment.setName("Read");
> visitorsRoleAssignment.setMember(visitorsGroup);
>
> visitorsRoleAssignment.getRoleDefinitionBindings().add(VisitorsRole);
>
> sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
> // Full Control Assignment
> RoleAssignment viewersRoleAssignment = UserFactory.eINSTANCE
> .createRoleAssignment();
> viewersRoleAssignment.setName("ViewOnly");
> viewersRoleAssignment.setMember(viewersGroup);
> viewersRoleAssignment.getRoleDefinitionBindings().add(viewerRole);
>
> sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
> // Add Role Assignment to web
>
> sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
> sitePermission.getOwnedRoleAssignments().add(ownerRoleAssignment);
>
> sitePermission.getOwnedRoleAssignments().add(memeberRoleAssignment);
>
> sitePermission.getOwnedRoleAssignments().add(visitorsRoleAssignment);
>
> sitePermission.getOwnedRoleAssignments().add(viewersRoleAssignment);
>
> return sitePermission;
> }
>
> public static SitePermission loadAndAddSitePermission(String webName,
> String webGuID){
> ContentStandaloneSetup.doSetup();
> SitePermission sitePermission = null;
>
> Injector injector = Guice.createInjector(new UserRuntimeModule());
> XtextResourceSet resourceSet =
> injector.getInstance(XtextResourceSet.class);
> resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL,
> Boolean.TRUE);
>
> Resource resource =
> resourceSet.getResource(URI.createURI(getUserFileLocationURI()), true);
>
> UserModel model = (UserModel) resource.getContents().get(0);
>
> sitePermission = createDefaultSitePermission(webName, webGuID,
> model);
> // model.getSitePermissions().add(s);
> // System.out.println( model.getSitePermissions().add(s));
> // resource.getContents().add(s);
> try {
> Map options = new HashMap();
> SaveOptions.defaultOptions().addTo(options);
> resource.save(options);
> } catch (IOException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
>
>
>
> return sitePermission;
>
> }
>
> public static String getUserFileLocationURI() {
> IEditorPart editorPart = PlatformUI.getWorkbench()
>
> .getActiveWorkbenchWindow().getActivePage().getActiveEditor();
>
> if (editorPart != null) {
> IFileEditorInput input = (IFileEditorInput) editorPart
> .getEditorInput();
> IFile file = input.getFile();
>
> String path = "";
> int segmentCount =
> file.getProjectRelativePath().segmentCount();
> if(segmentCount != 1){
> for (int i = 0; i < segmentCount -1; i++) {
> path += file.getProjectRelativePath().segment(i) +
> "/";
> }
> }
>
> return "platform:/resource/" + file.getProject().getName() + "/" + path
> + UserConstant.USER_FILE_NAME;
>
> }
> return "";
> }
> }
>
>
>
>
> When I save editor,I called above class
>
> Best regards
|
|
|
| Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1085171 is a reply to message #1081406] |
Mon, 12 August 2013 10:53   |
Eclipse User |
|
|
|
Hi Sebastian,
I used XtextDocumentProvider in my project already.
public class SitePermission7 {
@Inject
Provider<XtextResourceSet> rsp;
public File userFile;
public static SitePermission createDefaultSitePermission(String webName,String webGuID,
UserModel userModel) {
// Initialize the model
MyDsl2Package.eINSTANCE.eClass();
// Retrieve the default factory singleton
MyDsl2Factory factory = MyDsl2Factory.eINSTANCE;
// SitePermission
SitePermission sitePermission = factory.createSitePermission();
sitePermission.setName(webName);
sitePermission.setWebGUID(webGuID);
// Owners Group
Group ownerGroup = MyDsl2Factory.eINSTANCE.createGroup();
ownerGroup.setName("Owners");
sitePermission.getOwnedGroup().add(ownerGroup);
userModel.getSitePermissions().add(sitePermission);
return sitePermission;
}
public SitePermission loadForCreateSitePermission(String webName,String webGuID) {
SitePermission sitePermission = null;
XtextResourceSet resourceSet = rsp.get();
resourceSet.addLoadOption(XtextResource.OPTION_RESOLVE_ALL, Boolean.TRUE);
Resource resource = resourceSet.getResource(URI.createURI(getUserFileLocationURI()), true);
System.out.println(resource);
UserModel eobject = (UserModel) resource.getContents().get(0);
sitePermission = createDefaultSitePermission(webName,webGuID, eobject);
try {
resource.save(null);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sitePermission;
}
public String getUserFileLocationURI() {
IEditorPart editorPart = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage().getActiveEditor();
if (editorPart != null) {
IFileEditorInput input = (IFileEditorInput) editorPart
.getEditorInput();
IFile file = input.getFile();
String path = "";
int segmentCount = file.getProjectRelativePath().segmentCount();
if(segmentCount != 1){
for (int i = 0; i < segmentCount -1; i++) {
path += file.getProjectRelativePath().segment(i) + "/";
}
}
return "platform:/resource/" + file.getProject().getName() + "/" + path + UserConstant.USER_FILE_NAME;
}
return "";
}
I call above util class in the XtextDocumentProvider.doSaveDocument.
public class AutoEdit extends XtextDocumentProvider{
final static List<String> contentUnitNames = new ArrayList<String>();
@Inject
SitePermission7 sitepermission6;
@Override
protected void doSaveDocument(IProgressMonitor monitor, Object element,
IDocument document, boolean overwrite) throws CoreException {
super.doSaveDocument(monitor, element, document, overwrite);
List<String> keywords = Arrays.asList("Web", "ContentModel");
StringBuilder sb = new StringBuilder();
for (String s : keywords) {
sb.append(s);
sb.append("|");
}
/*
* En sondaki | karakterini sil.
*/
String keywordsString = sb.deleteCharAt(sb.length() - 1).toString();
String pattern = String.format("\\b(%s)\\b((\\w|\\s|\\.)+)[{]",
keywordsString);
Pattern compile = Pattern.compile(pattern);
String alldocument = document.get();
String alldocumentWithoutComment = XtextResourceUtil1
.returnStringWithoutComments(alldocument);
java.util.regex.Matcher matcher = compile
.matcher(alldocumentWithoutComment);
final List<String> contentUnitNames = new ArrayList<String>();
while (matcher.find()) {
String kelime = matcher.group(2).trim();
contentUnitNames.add(kelime);
}
((IXtextDocument) document).
modify(new IUnitOfWork<Void, XtextResource>() {
@Override
public java.lang.Void exec(XtextResource state)
throws Exception {
int index = 0;
ContentModel mymodel = (ContentModel) state
.getContents().get(0);
// System.out.println(mymodel.getName());
if (mymodel.getDisplayName() == null
|| mymodel.getDisplayName().equals(""))
mymodel.setDisplayName(contentUnitNames.get(index));
mymodel.setName(contentUnitNames.get(index).trim()
.replace(" ", ""));
index++;
Web rootWeb = mymodel.getOwnedWeb();
if (rootWeb.getDisplayName() == null
|| rootWeb.getDisplayName().equals("")){
rootWeb.setDisplayName(contentUnitNames.get(index));
rootWeb.setName(contentUnitNames.get(index).trim()
.replace(" ", ""));
String guid =rootWeb.getGuID();
sitepermission6.loadForCreateSitePermission(contentUnitNames.get(index),guid);
/* SitePermission s=sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),
guid);
sitepermission6.loadAndAddSitePermission(rootWeb, s);
rootWeb.setSitePermission(s);*/
}
index++;
// System.out.println(index);
// Webleri dolas
EList<Web> ownedwebs = rootWeb.getOwnedWeb();
for (Iterator<Web> iterator6 = ownedwebs.iterator(); iterator6
.hasNext();) {
Web w = (Web) iterator6.next();
index = setRecursivelyWebsDisplayName(w, index,
contentUnitNames);
}
return null;
}
});
super.doSaveDocument(monitor, element, document, overwrite);
}
public int setRecursivelyWebsDisplayName(Web web, int index,
List<String> contentUnitNames) {
if (web.getDisplayName() == null || web.getDisplayName().equals("")){
web.setDisplayName(contentUnitNames.get(index));
web.setName(contentUnitNames.get(index).trim().replace(" ", ""));
// System.out.println(web.getName());
String guid =web.getGuID();
//EObject root =web.eContainer();
//SitePermission s= SitePermissionUtil.createDefaultSitePermission(contentUnitNames.get(index),guid);
//sitepermission6.loadForCreateSitePermission(contentUnitNames.get(index),guid);
// System.out.println( s);
sitepermission6.loadForCreateSitePermission(contentUnitNames.get(index),guid);
/*SitePermission s=sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),
guid);
sitepermission6.loadAndAddSitePermission(web, s);
web.setSitePermission(web.getSitePermission());*/
}
index++;
if (!web.getOwnedWeb().isEmpty()) {
EList<Web> webs = web.getOwnedWeb();
for (Iterator<Web> iterator = webs.iterator(); iterator.hasNext();) {
Web w = (Web) iterator.next();
// System.out.println(w);
index = setRecursivelyWebsDisplayName(w, index,
contentUnitNames);
}
}
return index;
}
}
But I receive IlegalArgumentException.How Can I use SaveGetRule() method and I do not find related example this topic 
Best Regards
|
|
|
|
|
|
| Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086381 is a reply to message #1085719] |
Wed, 14 August 2013 02:37   |
Eclipse User |
|
|
|
Hi Christian,
I override getsaverule() method.
I call my own util class with GertSaveRule().but not enter this function
I debug my code,not enter How can I call my util class? please help me .really I do not understand my problem
My XtextDocumnetProvider class:
public class AutoEdit extends XtextDocumentProvider{
final static List<String> contentUnitNames = new ArrayList<String>();
@Inject
Sitepermission6 sitepermission6;
@Override
protected ISchedulingRule getSaveRule(Object element) {
if(element instanceof Web){
System.out.println("olartıkkkk");
sitepermission6.loadForCreateSitePermission(((Web) element).getName().toString(),((Web) element).getGuID().toString());
}
return super.getSaveRule(element);
}
@Override
protected void doSaveDocument(IProgressMonitor monitor, Object element,
IDocument document, boolean overwrite) throws CoreException {
super.doSaveDocument(monitor, element, document, overwrite);
List<String> keywords = Arrays.asList("Web", "ContentModel");
StringBuilder sb = new StringBuilder();
for (String s : keywords) {
sb.append(s);
sb.append("|");
}
/*
* En sondaki | karakterini sil.
*/
String keywordsString = sb.deleteCharAt(sb.length() - 1).toString();
String pattern = String.format("\\b(%s)\\b((\\w|\\s|\\.)+)[{]",
keywordsString);
Pattern compile = Pattern.compile(pattern);
String alldocument = document.get();
String alldocumentWithoutComment = XtextResourceUtil1
.returnStringWithoutComments(alldocument);
java.util.regex.Matcher matcher = compile
.matcher(alldocumentWithoutComment);
final List<String> contentUnitNames = new ArrayList<String>();
while (matcher.find()) {
String kelime = matcher.group(2).trim();
contentUnitNames.add(kelime);
}
((IXtextDocument) document).
modify(new IUnitOfWork<Void, XtextResource>() {
@Override
public java.lang.Void exec(XtextResource state)
throws Exception {
int index = 0;
ContentModel mymodel = (ContentModel) state
.getContents().get(0);
// System.out.println(mymodel.getName());
if (mymodel.getDisplayName() == null
|| mymodel.getDisplayName().equals(""))
mymodel.setDisplayName(contentUnitNames.get(index));
mymodel.setName(contentUnitNames.get(index).trim()
.replace(" ", ""));
index++;
Web rootWeb = mymodel.getOwnedWeb();
if (rootWeb.getDisplayName() == null
|| rootWeb.getDisplayName().equals("")){
rootWeb.setDisplayName(contentUnitNames.get(index));
rootWeb.setName(contentUnitNames.get(index).trim()
.replace(" ", ""));
String guid =rootWeb.getGuID();
}
index++;
// System.out.println(index);
// Webleri dolas
EList<Web> ownedwebs = rootWeb.getOwnedWeb();
for (Iterator<Web> iterator6 = ownedwebs.iterator(); iterator6
.hasNext();) {
Web w = (Web) iterator6.next();
index = setRecursivelyWebsDisplayName(w, index,
contentUnitNames);
}
return null;
}
});
super.doSaveDocument(monitor, element, document, overwrite);
}
public int setRecursivelyWebsDisplayName(Web web, int index,
List<String> contentUnitNames) {
if (web.getDisplayName() == null || web.getDisplayName().equals("")){
web.setDisplayName(contentUnitNames.get(index));
web.setName(contentUnitNames.get(index).trim().replace(" ", ""));
// System.out.println(web.getName());
String guid =web.getGuID();
//EObject root =web.eContainer();
}
index++;
if (!web.getOwnedWeb().isEmpty()) {
EList<Web> webs = web.getOwnedWeb();
for (Iterator<Web> iterator = webs.iterator(); iterator.hasNext();) {
Web w = (Web) iterator.next();
// System.out.println(w);
index = setRecursivelyWebsDisplayName(w, index,
contentUnitNames);
}
}
return index;
}
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Re: Save Failed Attempted to beginRule: does not match outer scope rule [message #1086867 is a reply to message #1086631] |
Wed, 14 August 2013 17:14   |
Eclipse User |
|
|
|
Hi Christian,
I solved my problem, I return null
@Override
protected ISchedulingRule getSaveRule(Object element) {
return null;
}
My problem is solved thank you very much really 
But I ask one question :
Now,I created SitePermission in the other editor (I do not have a problem) but I want to give automatically cross reference for Web's sitePermission attribute BUT
I receive an error 
Save Failed
No EObjectDescription could be found in Scope Web.sitePermission for UserModel'UM'.sitePermissions[8]->SitePermission'EEEEE'
Semantic Object: ContentModel'CT'.ownedWeb->Web'EEEEE
I use crossreference in the Web's sitePermission attribute.I want to do automatically reference for sitePermission.
in the grammar :
Web returns Web:
'Web'
name=QualifiedName
'{' 'guID' '=' guID=STRING
'displayName' '=' displayName=STRING
('description' '=' description=STRING)?
('sitePermission' '=' sitePermission = [user::SitePermission|QualifiedName])?
('Webs' '{' ownedWeb+=Web (ownedWeb+=Web)* '}' )?
'}';
I share my related code :
related part :SitePermission s= sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),guid);
sitepermission6.loadForCreateSitePermission(rootWeb, s);
rootWeb.setSitePermission(s);
if I use rootWeb.setSitePermission(s); I receive
No EObjectDescription could be found in Scope Web.sitePermission for UserModel'UM'.sitePermissions[8]->SitePermission'EEEEE'
Semantic Object: ContentModel'CT'.ownedWeb->Web'EEEEE error
how can I give cross reference ?
public class AutoEdit extends XtextDocumentProvider{
final static List<String> contentUnitNames = new ArrayList<String>();
@Inject
SitePermission7 sitepermission6;
@Override
protected ISchedulingRule getSaveRule(Object element) {
return null;
}
@Override
protected void doSaveDocument(IProgressMonitor monitor, Object element,
IDocument document, boolean overwrite) throws CoreException {
super.doSaveDocument(monitor, element, document, overwrite);
List<String> keywords = Arrays.asList("Web", "ContentModel");
StringBuilder sb = new StringBuilder();
for (String s : keywords) {
sb.append(s);
sb.append("|");
}
/*
* En sondaki | karakterini sil.
*/
String keywordsString = sb.deleteCharAt(sb.length() - 1).toString();
String pattern = String.format("\\b(%s)\\b((\\w|\\s|\\.)+)[{]",
keywordsString);
Pattern compile = Pattern.compile(pattern);
String alldocument = document.get();
String alldocumentWithoutComment = XtextResourceUtil1
.returnStringWithoutComments(alldocument);
java.util.regex.Matcher matcher = compile
.matcher(alldocumentWithoutComment);
final List<String> contentUnitNames = new ArrayList<String>();
while (matcher.find()) {
String kelime = matcher.group(2).trim();
contentUnitNames.add(kelime);
}
((IXtextDocument) document).
modify(new IUnitOfWork<Void, XtextResource>() {
@Override
public java.lang.Void exec(XtextResource state)
throws Exception {
int index = 0;
ContentModel mymodel = (ContentModel) state
.getContents().get(0);
if (mymodel.getDisplayName() == null
|| mymodel.getDisplayName().equals(""))
mymodel.setDisplayName(contentUnitNames.get(index));
mymodel.setName(contentUnitNames.get(index).trim().replace(" ", ""));
index++;
Web rootWeb = mymodel.getOwnedWeb();
if (rootWeb.getDisplayName() == null
|| rootWeb.getDisplayName().equals("")){
rootWeb.setDisplayName(contentUnitNames.get(index));
rootWeb.setName(contentUnitNames.get(index).trim().replace(" ", ""));
String guid =rootWeb.getGuID();
SitePermission s= sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),guid);
sitepermission6.loadForCreateSitePermission(rootWeb, s);
rootWeb.setSitePermission(s);
}
index++;
// Webleri dolas
EList<Web> ownedwebs = rootWeb.getOwnedWeb();
for (Iterator<Web> iterator6 = ownedwebs.iterator(); iterator6.hasNext();) {
Web w = (Web) iterator6.next();
index = setRecursivelyWebsDisplayName(w, index,contentUnitNames);
}
return null;
}
});
super.doSaveDocument(monitor, element, document, overwrite);
}
public int setRecursivelyWebsDisplayName(Web web, int index,
List<String> contentUnitNames) {
if (web.getDisplayName() == null || web.getDisplayName().equals("")){
web.setDisplayName(contentUnitNames.get(index));
web.setName(contentUnitNames.get(index).trim().replace(" ", ""));
String guid =web.getGuID();
SitePermission s= sitepermission6.createDefaultSitePermission(contentUnitNames.get(index),guid);
sitepermission6.loadForCreateSitePermission(web, s);
web.setSitePermission(s);
}
index++;
if (!web.getOwnedWeb().isEmpty()) {
EList<Web> webs = web.getOwnedWeb();
for (Iterator<Web> iterator = webs.iterator(); iterator.hasNext();) {
Web w = (Web) iterator.next();
// System.out.println(w);
index = setRecursivelyWebsDisplayName(w, index,
contentUnitNames);
}
}
return index;
}
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|