private static Set<String> getUsedProjectNames(IModel<Project> model) { Workspace workspace = model.getObject().getParent(); if(workspace==null) { if (model instanceof AttachableModel<?>) { AttachableModel<?> a = (AttachableModel<?>) model; Object parent = a.getParent().getObject(); if (parent instanceof Workspace) { workspace = (Workspace) parent; } } } Set<String> usedNames = new HashSet<String>(); if(workspace!=null) { for (Project project : workspace.getChildren()) { if(project!=model.getObject()) usedNames.add(project.getName()); } } return usedNames; }
@Override public void saveProperties(PropertyFileDescriptor descriptor, PropertyFile file, boolean autoTranslate) { if(!active) { logger.error("Received save request while not active"); throw new IllegalStateException("The PropertiesPersistanceService is deactivated"); } try { PropertyFileDescriptor adaptedDescriptor = workspace.cdoView().getObject(descriptor); PropertyFile writeCopy = createCopy(file); // create a write copy to be independent of future writes queue.put(new PropertyTuple(adaptedDescriptor, writeCopy, autoTranslate)); } catch (InterruptedException e) { throw new RuntimeException("Interrupted while trying to save " + descriptor.fullPath(), e); } }
@Override public void run() { long time = System.currentTimeMillis(); workspace.eAdapters().add(new ListeningAdapter()); LOGGER.info("Installed EContentAdapter in {} seconds",(System.currentTimeMillis()-time)/1000); } },"Install Persistence Listener").start();
protected Resolvable getObject(String path) throws IOException { String info = path; if (info == null) info = ""; //FIXME: this is for backwards compatibility. Unify this with URI resolver if(info.startsWith("/workspace")) info = info.replaceFirst("/workspace", ""); org.eclipse.emf.common.util.URI uri = org.eclipse.emf.common.util.URI.createURI(info); return workspace.resolveChild(uri); }
@Override public String getRequiredPermission() { String projectName = null; if(getDomainObject()!=null) projectName = getDomainObject().getName(); return CommonPermissions.constructPermission(CommonPermissions.WORKSPACE,projectName,CommonPermissions.ACTION_CONFIG); } }
private void initializeWorkspace(CDOTransaction transaction) throws CommitException { CDOResource resource = null; if (transaction.hasResource(ServerConstants.WORKSPACE_RESOURCE)) { resource = transaction.getResource(ServerConstants.WORKSPACE_RESOURCE); } else { resource = transaction.createResource(ServerConstants.WORKSPACE_RESOURCE); Workspace workspace = PropertiesFactory.eINSTANCE.createWorkspace(); resource.getContents().add(workspace); } //even if workspace was already present, let's initialize the root again in case we got copied around Workspace workspace = (Workspace) resource.getContents().get(0); URI uri = URI.createFileURI(ServerConstants.WORKSPACE_DIR); logger.debug("Adjust workspace to root: "+uri.toFileString()); File root = new File(ServerConstants.WORKSPACE_DIR); if (!root.exists()) root.mkdirs(); workspace.setRoot(uri); transaction.commit(); }
/** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated NOT */ public URI absolutPath() { EObject object = this; while ((object != null) && !(object instanceof Workspace)) object = object.eContainer(); if (object instanceof Workspace) { Workspace workspace = (Workspace) object; URI root = workspace.getRoot(); if (root == null) return null; if (root.isRelative()) { File f = new File(""); URI workingDir = URI.createFileURI(f.getAbsolutePath()); root = workingDir.appendSegments(root.segments()); } return root.appendSegments(fullPath().segments()); } return null; }
@Override public Workspace apply(Workspace object) { Project child = PropertiesFactory.eINSTANCE.createProject(); child.setName(uri.lastSegment()); object.getChildren().add(child); return object; } });
public void unbindRepositoryConnector(RepositoryConnector repositoryConnector) { this.repositoryConnector = null; if(workspace!=null) { CDOView view = workspace.cdoView(); org.eclipse.emf.cdo.session.CDOSession session = view.getSession(); LifecycleUtil.deactivate(view); LifecycleUtil.deactivate(session); session = null; } }
public List<String> computePossiblePermissions(UserManagement management) { Workspace workspace = (Workspace) resolver.resolve(ApplicationConstants.WORKSPACE_NAME); Set<String> permissions = new TreeSet<String>(); EList<Permission> available = management.getPermissions(); for (Permission permission : available) { permissions.add(permission.getName()); } EList<Project> children = workspace.getChildren(); for (Project project : children) { String name = project.getName(); permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, name, CommonPermissions.ACTION_CONFIG)); permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, name, CommonPermissions.ACTION_EDIT)); permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, name, CommonPermissions.ACTION_SUGGEST)); permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, name, CommonPermissions.ACTION_VIEW)); } permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, "*", CommonPermissions.ACTION_CONFIG)); permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, "*", CommonPermissions.ACTION_EDIT)); permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, "*", CommonPermissions.ACTION_SUGGEST)); permissions.add(CommonPermissions.constructPermissionName(CommonPermissions.PROJECT, "*", CommonPermissions.ACTION_VIEW)); return new ArrayList<String>(permissions); }
} else if (oldValue instanceof CDOID) { CDOID id = (CDOID) oldValue; removeAdapter(workspace.cdoView().getObject(id)); CDOID id = (CDOID) oldContentValue; try { removeAdapter(workspace.cdoView().getObject(id)); } catch (ObjectNotFoundException e) { logger.warn("REMOVE_MANY object ID not found: "+notification,e);
EList<Project> children = workspace.getChildren(); for (Project other : children) { if(other==object)
try { if (transaction == null) transaction = workspace.cdoView().getSession().openTransaction();
private static void indexWorkspace(Workspace workspace, IndexWriter writer, IProgressMonitor monitor) throws CorruptIndexException, IOException { EList<Project> projects = workspace.getChildren(); SubMonitor submon = SubMonitor.convert(monitor,"Rebuilding Index", projects.size()*10); PropertyFileAnalyzer analyzer = new PropertyFileAnalyzer();
@Override protected void onAfterSubmit(AjaxRequestTarget target, Form<?> form) { Project project = model.getObject(); CDOTransaction transaction = Activator.getDefault().getRepositoryConnector().openTransaction(); project = transaction.getObject(project); Preferences preferences = PreferencesUtil.scopeFor(project); try { PreferencesUtil.deleteNode(preferences); File directory = new File(project.absolutPath().toFileString()); FileUtil.delete(directory); project.getParent().getChildren().remove(project); transaction.commit(); setResponsePage(SettingsPage.class, getPage().getPageParameters()); } catch (CommitException e) { logger.error("Commit failed",e); getSession().error(e.getMessage()); } catch (BackingStoreException e) { logger.error("Failed to delete project preferences",e); getSession().error(e.getMessage()); } finally { transaction.close(); } }