/** * <!-- begin-user-doc --> * <!-- end-user-doc --> * @generated NOT */ public ProjectLocale getProjectLocale() { @SuppressWarnings("rawtypes") Resolvable parent = this; while(parent!=null) { if (parent instanceof ProjectLocale) { ProjectLocale locale = (ProjectLocale) parent; return locale; } parent = parent.getParent(); } return null; }
/** * computes something known to us that we can use to construct a proper permission. * e.g. we don't have permissions on per descriptor level, so we need to walk up the * hierarchy until we find something known * @param target * @return */ private static Resolvable<?, ?> getActualTarget(Resolvable<?, ?> target) { Resolvable<?, ?> current = target; while(current!=null && !KNOWN_TARGETS.contains(current.eClass())) current = current.getParent(); return current; }
@Override public String getRequiredPermission() { Resolvable<?, ?> object = getModelObject(); while(object!=null) { if (object instanceof Project) { return CommonPermissions.constructPermissionName(object, CommonPermissions.ACTION_VIEW); } object = object.getParent(); } return null; }
public static PageParameters buildPageParametersFor(Resolvable<?, ?> r) { PageParameters params = new PageParameters(); Deque<String> segments = new ArrayDeque<String>(); Resolvable<?, ?> part = r; while(part!=null) { String name = part.getName(); if(name!=null) segments.push(name); part = part.getParent(); } int count = 0; for (String string : segments) { params.set(count++, string); } return params; }
/** * deletes a folder (and recursively all parents above) if there's only one child left in it * <p> * this is to clean up no longer needed folders when a descriptor is removed * @param parent */ @SuppressWarnings("rawtypes") private static void deleteFolder(ResourceFolder folder) { Resolvable currentParent = folder; Resolvable lastParent = folder; while(currentParent instanceof ResourceFolder) { if(currentParent.getChildren().size()<=1) { lastParent = currentParent; currentParent = currentParent.getParent(); } else break; } EcoreUtil.remove(lastParent); }
private LinkTarget buildLinkTarget(Resolvable<?, ?> resolvable, boolean endsOnSlash) { StringBuilder hrefBuilder = new StringBuilder(); LabelSwitch labelSwitch = new LabelSwitch(getLocale()); StringBuilder name = new StringBuilder(); name.append(labelSwitch.doSwitch(resolvable)); if (resolvable.getParent() == null) hrefBuilder.append("/"); else if (resolvable.getParent() instanceof Workspace) hrefBuilder.append(endsOnSlash ? resolvable.getName() : "workspace/" + resolvable.getName()); else hrefBuilder.append(endsOnSlash ? resolvable.getName() : resolvable.getParent().getName() + "/" + resolvable.getName()); Resolvable<?, ?> folder = resolvable; if(folder instanceof ResourceFolder) { // if it is a folder, squash more children, if there is only one while (folder.getChildren().size() == 1) { folder = folder.getChildren().get(0); hrefBuilder.append("/"); hrefBuilder.append(folder.getName()); name.append("/"); name.append(labelSwitch.doSwitch(folder)); } } LinkTarget target = new LinkTarget(Model.of(name.toString()),hrefBuilder.toString(),folder); return target; }
@Override public String getRequiredPermission() { Resolvable<?, ?> object = getModelObject(); while(object!=null) { if (object instanceof Project) { return CommonPermissions.constructPermissionName(object, CommonPermissions.ACTION_VIEW); } else if (object instanceof Workspace) { return CommonPermissions.constructPermissionName(object, CommonPermissions.ACTION_VIEW); } object = object.getParent(); } return null; }
resolvable = resolvable.getParent(); applicable = DynamicConfigUtil.getApplicableElements(resolvable);