blob: 34411d2745fd6294998c123987837b20f691924f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2015 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.help.internal.criteria;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
import org.eclipse.help.ICriteria;
import org.eclipse.help.internal.HelpPlugin;
/**
* A class represents one criterion, which has the name and values
*
* @since 3.5
*/
public class CriterionResource {
private String criterionName;
private List criterionValues;
public CriterionResource(String criterionName){
this(criterionName, null);
}
public CriterionResource (String criterionName, List criterionValues){
this.criterionName = criterionName;
this.criterionValues = new ArrayList();
if(null != criterionValues) {
this.addCriterionValues(criterionValues);
}
}
public String getCriterionName(){
return this.criterionName;
}
public List getCriterionValues(){
return this.criterionValues;
}
public void addCriterionValue(String criterionValue){
if(null != criterionValue && 0 != criterionValue.length() && !criterionValues.contains(criterionValue)){
criterionValues.add(criterionValue);
}
}
public void addCriterionValues(List criterionValues){
for(Iterator iterator = criterionValues.iterator(); iterator.hasNext();){
String criterionValue = (String) iterator.next();
this.addCriterionValue(criterionValue);
}
}
public static CriterionResource[] toCriterionResource(ICriteria[] criteriaElements) {
List criteriaList = new ArrayList();
outer: for (int i = 0; i < criteriaElements.length; ++i) {
String elementName = criteriaElements[i].getName();
String elementValue = criteriaElements[i].getValue();
if (null != elementName && 0 != elementName.length() && null != elementValue
&& 0 != elementValue.length()) {
if (HelpPlugin.getCriteriaManager().isSupportedCriterion(elementName)) {
elementName = elementName.toLowerCase();
StringTokenizer tokenizer = new StringTokenizer(elementValue, ","); //$NON-NLS-1$
List values = new ArrayList();
while (tokenizer.hasMoreTokens()) {
values.add(tokenizer.nextToken().trim());
}
for(int j = 0; j < criteriaList.size(); ++j){
CriterionResource criterion = (CriterionResource) criteriaList.get(j);
if(elementName.equals(criterion.getCriterionName())){
criterion.addCriterionValues(values);
continue outer;
}
}
CriterionResource criterionResource = new CriterionResource(elementName, values);
criteriaList.add(criterionResource);
}
}
}
CriterionResource[] criteria = new CriterionResource[criteriaList.size()];
criteriaList.toArray(criteria);
return criteria;
}
}