private MenuSchema serializeMenuTree(final MenuItem rootMenuItem) { final MenuSchema menuSchema = new MenuSchema(); menuSchema.setDescription(rootMenuItem.getDescription()); if (isReport(rootMenuItem) || isView(rootMenuItem) || isDashboard(rootMenuItem)) { menuSchema.setId(rootMenuItem.getReferencedElementId().intValue()); } else if (rootMenuItem.getId() != null) { menuSchema.setId(rootMenuItem.getId().intValue()); } menuSchema.setMenuType(rootMenuItem.getType().getValue().toLowerCase()); if (isClass(rootMenuItem) || (isProcess(rootMenuItem) && isProcessUsable(rootMenuItem.getReferedClassName()))) { final CMClass menuEntryClass = dataAccessLogic.findClass(rootMenuItem.getReferedClassName()); menuSchema.setId(menuEntryClass.getId().intValue()); menuSchema.setDefaultToDisplay(isStartingClass(menuEntryClass)); menuSchema.setClassname(menuEntryClass.getIdentifier().getLocalName()); final PrivilegeType privilege = getPrivilegeFor(menuEntryClass); menuSchema.setPrivilege(privilege.toString()); } final List<MenuSchema> children = new ArrayList<MenuSchema>(); MenuSchema childMenuSchema = new MenuSchema(); for (final MenuItem childMenuItem : rootMenuItem.getChildren()) { childMenuSchema = serializeMenuTree(childMenuItem); children.add(childMenuSchema); } menuSchema.setChildren(children.toArray(new MenuSchema[children.size()])); return menuSchema; }
public MenuSchema serializeVisibleClassesFromRoot(final CMClass root) { final MenuSchema menuSchema = new MenuSchema(); menuSchema.setId(root.getId().intValue()); menuSchema.setDescription(root.getDescription()); menuSchema.setClassname(root.getIdentifier().getLocalName()); // FIXME: add metadata serialization... wth are metadata for a class? setMenuTypeFromTypeAndChildren(menuSchema, false, root.isSuperclass()); menuSchema.setPrivilege(getPrivilegeFor(root).getGrantType()); menuSchema.setDefaultToDisplay(isStartingClass(root)); final List<MenuSchema> children = new ArrayList<MenuSchema>(); if (Iterables.size(root.getChildren()) > 0) { for (final CMClass childClass : root.getChildren()) { children.add(serializeVisibleClassesFromRoot(childClass)); } } menuSchema.setChildren(children.toArray(new MenuSchema[children.size()])); return menuSchema; }