public static Criteria parseCriteria(String criteria, String value, FieldOperator fieldOperator) {
try {
if (BYNARY_TYPE.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new BinaryTypeCriteria(value);
} else if (ITEM_CREATION_DATE.equals(criteria)) {
return new ItemCreationDateCriteria(value, fieldOperator);
} else if (ITEM_INITIAL_PUBLISH_DATE.equals(criteria)) {
return new ItemInitialPublishDateCriteria(value, fieldOperator);
} else if (ITEM_LAST_PUBLISHED_DATE.equals(criteria)) {
return new ItemLastPublishedDateCriteria(value, fieldOperator);
} else if (ITEM_MODIFICATION_DATE.equals(criteria)) {
return new ItemModificationDateCriteria(value, fieldOperator);
} else if (ITEM_REFERENCE.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new ItemReferenceCriteria(Integer.parseInt(value));
} else if (ITEM_SCHEMA.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new ItemSchemaCriteria(Integer.parseInt(value));
} else if (ITEM_TITLE.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new ItemTitleCriteria(value);
} else if (MULTIMEDIA.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new MultimediaCriteria(Boolean.parseBoolean(value));
} else if (PAGE_TEMPLATE.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new PageTemplateCriteria(Integer.parseInt(value));
} else if (PAGE_URL.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new PageURLCriteria(value);
} else if (PUBLICATION.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new PublicationCriteria(Integer.parseInt(value));
} else if (SCHEMA_TITLE.equals(criteria)) {
return new SchemaTitleCriteria(value, fieldOperator);
// Publication stuff
} else if (PUBLICATION_KEY.equals(criteria)) {
return new PublicationKeyCriteria(value, fieldOperator);
} else if (PUBLICATION_MULTIMEDIA_PATH.equals(criteria)) {
return new PublicationMultimediaPathCriteria(value, fieldOperator);
} else if (PUBLICATION_MULTIMEDIA_URL.equals(criteria)) {
return new PublicationMultimediaURLCriteria(value, fieldOperator);
} else if (PUBLICATION_PATH.equals(criteria)) {
return new PublicationPathCriteria(value, fieldOperator);
} else if (PUBLICATION_TITLE.equals(criteria)) {
return new PublicationTitleCriteria(value, fieldOperator);
} else if (PUBLICATION_URL.equals(criteria)) {
return new PublicationURLCriteria(value, fieldOperator);
// Structure Group stuff
} else if (STRUCTURE_GROUP.equals(criteria)) {
return new StructureGroupCriteria(value);
} else if (STRUCTURE_GROUP_DIRECTORY.equals(criteria)) {
return new StructureGroupDirectoryCriteria(value, fieldOperator);
} else if (STRUCTURE_GROUP_TITLE.equals(criteria)) {
return new StructureGroupTitleCriteria(value, fieldOperator);
// Taxonomy stuff
} else if (TAXONOMY.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new TaxonomyCriteria(value);
} else if (TAXONOMY_USED_FOR_IDENTIFICATION.equals(criteria)) {
if (fieldOperator != FieldOperator.EQUAL) {
throw new ParserException("Illegal FieldOperator " + fieldOperator + " for criteria " + criteria);
}
return new TaxonomyUsedForIdentificationCriteria(Boolean.parseBoolean(value));
// Custom meta stuff
} else if (CUSTOM_META_KEY.equals(criteria)) {
return new CustomMetaKeyCriteria(value, fieldOperator);
} else if (CUSTOM_META_VALUE.equals(criteria)) {
return new CustomMetaValueCriteria(value, fieldOperator);
}
} catch (NumberFormatException nfe) {
String messsage = "NumberFormatException occurred: " + nfe.getMessage();
log.error(messsage, nfe);
throw new ParserException(messsage, nfe);
} catch (CriteriaException ce) {
String messsage = "CriteriaException occurred: " + ce.getMessage();
log.error(messsage, ce);
throw new ParserException(messsage, ce);
}
throw new ParserException("Unknown criteria " + criteria);
}