blob: 344bbdd1444f8056ecd6616a8bbb1c6a4793963c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013 Tasktop Technologies 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.internal.gerrit.core.client.rest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gerrit.common.data.ApprovalType;
import com.google.gerrit.reviewdb.ApprovalCategory;
import com.google.gerrit.reviewdb.ApprovalCategoryValue;
public final class ApprovalUtil {
public static final ApprovalType VRIF;
public static final ApprovalType CRVW;
public static final ApprovalType IPCL;
private static final Map<String, ApprovalType> BY_NAME;
static final Map<String, ApprovalType> BY_ID;
static {
ApprovalCategory vrifCategory = new ApprovalCategory(new ApprovalCategory.Id("VRIF"), "Verified"); //$NON-NLS-1$ //$NON-NLS-2$
vrifCategory.setAbbreviatedName("V"); //$NON-NLS-1$
vrifCategory.setPosition((short) 0);
List<ApprovalCategoryValue> vrifValues = new ArrayList<ApprovalCategoryValue>(3);
vrifValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(vrifCategory.getId(), (short) -1),
"Fails")); //$NON-NLS-1$
vrifValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(vrifCategory.getId(), (short) 0),
"No score")); //$NON-NLS-1$
vrifValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(vrifCategory.getId(), (short) 1),
"Verified")); //$NON-NLS-1$
VRIF = new ApprovalType(vrifCategory, vrifValues);
ApprovalCategory crvwCategory = new ApprovalCategory(new ApprovalCategory.Id("CRVW"), "Code Review"); //$NON-NLS-1$ //$NON-NLS-2$
crvwCategory.setAbbreviatedName("R"); //$NON-NLS-1$
crvwCategory.setPosition((short) 1);
List<ApprovalCategoryValue> crvwValues = new ArrayList<ApprovalCategoryValue>(5);
crvwValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(crvwCategory.getId(), (short) -2),
"Do not submit")); //$NON-NLS-1$
crvwValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(crvwCategory.getId(), (short) -1),
"I would prefer that you didn\u0027t submit this")); //$NON-NLS-1$
crvwValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(crvwCategory.getId(), (short) 0),
"No score")); //$NON-NLS-1$
crvwValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(crvwCategory.getId(), (short) 1),
"Looks good to me, but someone else must approve")); //$NON-NLS-1$
crvwValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(crvwCategory.getId(), (short) 2),
"Looks good to me, approved")); //$NON-NLS-1$
CRVW = new ApprovalType(crvwCategory, crvwValues);
ApprovalCategory ipclCategory = new ApprovalCategory(new ApprovalCategory.Id("IPCL"), "IP Clean"); //$NON-NLS-1$ //$NON-NLS-2$
ipclCategory.setAbbreviatedName("I"); //$NON-NLS-1$
ipclCategory.setPosition((short) 2);
List<ApprovalCategoryValue> ipclValues = new ArrayList<ApprovalCategoryValue>(3);
ipclValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(ipclCategory.getId(), (short) -1),
"Unclean IP, do not check in")); //$NON-NLS-1$
ipclValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(ipclCategory.getId(), (short) 0),
"No score")); //$NON-NLS-1$
ipclValues.add(new ApprovalCategoryValue(new ApprovalCategoryValue.Id(ipclCategory.getId(), (short) 1),
"IP review completed")); //$NON-NLS-1$
IPCL = new ApprovalType(ipclCategory, ipclValues);
BY_NAME = new HashMap<String, ApprovalType>(3);
BY_NAME.put(VRIF.getCategory().getName(), VRIF);
BY_NAME.put(CRVW.getCategory().getName(), CRVW);
BY_NAME.put(IPCL.getCategory().getName(), IPCL);
BY_ID = new HashMap<String, ApprovalType>(3);
BY_ID.put(VRIF.getCategory().getId().get(), VRIF);
BY_ID.put(CRVW.getCategory().getId().get(), CRVW);
BY_ID.put(IPCL.getCategory().getId().get(), IPCL);
}
private static ApprovalCategory findCategoryByName(String name) {
if (BY_NAME.containsKey(name)) {
return BY_NAME.get(name).getCategory();
}
return null;
}
static ApprovalCategory findCategoryByNameWithDash(String name) {
return findCategoryByName(name.replace('-', ' '));
}
static ApprovalCategory.Id findCategoryIdByName(String name) {
ApprovalCategory cat = findCategoryByName(name);
if (cat != null) {
return cat.getId();
}
return null;
}
static ApprovalCategory.Id findCategoryIdByNameWithDash(String name) {
return findCategoryIdByName(name.replace('-', ' '));
}
static String findCategoryNameById(String id) {
if (BY_ID.containsKey(id)) {
return BY_ID.get(id).getCategory().getName();
}
return null;
}
public static String toNameWithDash(String name) {
return name.replace(' ', '-');
}
static short parseShort(String s) {
s = s.trim();
// only Java7 handles a plus sign as indication of a positive value
if (s.startsWith("+")) { //$NON-NLS-1$
s = s.substring(1);
}
return Short.parseShort(s);
}
private ApprovalUtil() {
}
}