/*******************************************************************************
* 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.services.favorites;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.eclipse.skalli.commons.UUIDList;
import org.eclipse.skalli.model.EntityBase;
import org.eclipse.skalli.model.PropertyName;
public class Favorites extends EntityBase {
@PropertyName
public static final String PROPERTY_USERID = "userId"; //$NON-NLS-1$
@PropertyName
public static final String PROPERTY_PROJECTS = "projects"; //$NON-NLS-1$
private String userId = ""; //$NON-NLS-1$
// XStream by default is not able to unmarshal ArrayList<UUID>, so we
// need a special converter for that, see UUIDListConverter
private UUIDList projects = new UUIDList();
public Favorites() {
}
public Favorites(String userId) {
this.userId = userId;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public List<UUID> getProjects() {
if (projects == null) {
projects = new UUIDList();
}
return projects;
}
public void setProjects(UUIDList projects) {
this.projects = projects != null ? new UUIDList(projects) : null;
}
public boolean hasProject(UUID project) {
return project != null ? getProjects().contains(project) : false;
}
public void addProject(UUID project) {
if (project != null) {
List<UUID> list = getProjects();
if (!list.contains(project)) {
list.add(project);
}
}
}
public void removeProject(UUID project) {
if (project != null && projects != null && projects.size() > 0) {
projects.remove(project);
}
}
public void moveUp(UUID project) {
if (project != null && projects != null && projects.size() > 1) {
List<UUID> list = getProjects();
int idx = list.indexOf(project);
if (idx > 0) {
list.remove(idx);
list.add(idx - 1, project);
}
}
}
public void moveDown(UUID project) {
if (project != null && projects != null && projects.size() > 1) {
List<UUID> list = getProjects();
int idx = list.indexOf(project);
if (idx >= 0 && idx < list.size() - 1) {
list.remove(idx);
list.add(idx + 1, project);
}
}
}
public Map<String, UUID> asMap() {
List<UUID> uuids = getProjects();
HashMap<String, UUID> result = new HashMap<String, UUID>();
for (UUID uuid : uuids) {
result.put(uuid.toString(), uuid);
}
return result;
}
}