Searching for projects is similar to searching for other object types. The following example illustrates how to search among projects for the following criteria: a given project phase, and given main assignee (by their user name).
protected ProjectRepository projectRepository;
public void searchProjects() throws Exception {
StringFieldCriterion fieldCriterion1 = new StringFieldCriterion();
fieldCriterion.setComparator(StringComparator.EQUALS_ENFORCE_CASE);
LegacySearchFieldPathExpression fieldPathExpression1 = new LegacySearchFieldPathExpression();
fieldPathExpression1.setSearchKeyPath("currentPhase.storedValue");
fieldCriterion1.setFieldPath(fieldPathExpression1);
//need clarification if unique key or name
//if unique key, then filtering for projects that are in phase, Closed
fieldCriterion.getValues().add("CLOS");
FieldSearchClause searchCriteria = new FieldSearchClause();
searchCriteria.setOperator(LogicOperator.AND);
searchCriteria.getCriteria().add(fieldCriterion1);
//the following section defines a second fieldCriterion item for
StringFieldCriterion fieldCriterion2 = new StringFieldCriterion();
fieldCriterion.setComparator(StringComparator.EQUALS);
LegacySearchFieldPathExpression fieldPathExpression2 = new LegacySearchFieldPathExpression();
fieldPathExpression2.setSearchKeyPath("mainAssignee.user.username");
fieldCriterion2.setFieldPath(fieldPathExpression2);
fieldCriterion.getValue().add("JohnDoe");
searchCriteria.getCriteria().add(fieldCriterion2);
List<Project> projects = projectRepository.readProjectsByCriteria(searchCriteria, 100,
getPropertiesToRead());
}
private List<String> getPropertiesToRead() {
List<String> properties = new List<String>();
properties.add("name");
properties.add("idNumber");
return properties;
}