/******************************************************************************* * Copyright (c) 2010-2014 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * SAP AG - initial API and implementation *******************************************************************************/ package org.eclipse.skalli.core.extension; import java.util.HashSet; import java.util.Set; import java.util.TreeSet; import org.eclipse.skalli.model.Member; import org.eclipse.skalli.model.Project; import org.eclipse.skalli.model.User; import org.eclipse.skalli.services.Services; import org.eclipse.skalli.services.extension.IndexerBase; import org.eclipse.skalli.services.role.RoleProvider; import org.eclipse.skalli.services.user.UserService; import org.eclipse.skalli.services.user.UserServices; public class ProjectIndexer extends IndexerBase<Project> { private static final String MEMBERS_DISPLAY_NAME = "membersDisplayName"; //$NON-NLS-1$ private static final String ALL_MEMBERS = "allMembers"; //$NON-NLS-1$ @Override protected void indexFields(Project project) { TreeSet<Member> members = new TreeSet<Member>(); for (RoleProvider roleProvider : Services.getServices(RoleProvider.class)) { members.addAll(roleProvider.getMembers(project)); } addField(Project.PROPERTY_UUID, project.getUuid().toString(), true, true); addField(Project.PROPERTY_PROJECTID, project.getProjectId(), true, true); addField(Project.PROPERTY_NAME, project.getName(), true, true); addField(Project.PROPERTY_DESCRIPTION, project.getDescription(), true, true); addField(ALL_MEMBERS, members, true, true); if (project.getParentEntityId() != null) { addField(Project.PROPERTY_PARENT_PROJECT, project.getParentEntityId().toString(), true, true); } addField(Project.PROPERTY_TEMPLATEID, project.getProjectTemplateId(), true, true); Set<String> userIds = new HashSet<String>(); for (Member member : members) { userIds.add(member.getUserID()); } UserService userService = UserServices.getUserService(); if (userService != null) { Set<User> users = userService.getUsersById(userIds); for (User user: users) { addField(MEMBERS_DISPLAY_NAME, user.getDisplayName(), false, true); } } } @Override public Set<String> getDefaultSearchFields() { Set<String> ret = new HashSet<String>(); ret.add(Project.PROPERTY_UUID); ret.add(Project.PROPERTY_PROJECTID); ret.add(Project.PROPERTY_NAME); ret.add(Project.PROPERTY_DESCRIPTION); ret.add(ALL_MEMBERS); ret.add(MEMBERS_DISPLAY_NAME); return ret; } }