package br.ufrgs.inf.dsmoura.repository.controller.solr;
public enum SolrField {
ASSET_PK("asset_pk"),
ID("id", SolrFieldBoost.ID_BOOST),
NAME("name", SolrFieldBoost.NAME_BOOST),
TYPE("type", SolrFieldBoost.MEDIUM_BOOST),
OTHER_TYPE("other_type", SolrFieldBoost.MEDIUM_BOOST),
STATE("state"),
DATE("date"),
CREATION_DATE("creation_date"),
VERSION("version"),
SOFTWARE_LICENSE_ASSET("software_license_asset"),
OTHER_SOFTWARE_LICENSE_ASSET("other_software_license_asset"),
SHORT_DESCRIPTION("short_description", SolrFieldBoost.MEDIUM_BOOST),
DESCRIPTION("description", SolrFieldBoost.MEDIUM_BOOST),
USAGE_DESCRIPTION("usage_description", SolrFieldBoost.MEDIUM_BOOST),
AUTHOR_USERNAME("author_username", SolrFieldBoost.HIGH_BOOST),
AUTHOR_NAME("author_name", SolrFieldBoost.HIGH_BOOST),
CREATOR_NAME("creator_name", SolrFieldBoost.HIGH_BOOST),
CERTIFIER_USERNAME("certifier_username"),
CERTIFIER_NAME("certifier_name"),
CERTIFICATION_DATE("certification_date"),
CONSUMER_USERNAME("consumer_username", SolrFieldBoost.MEDIUM_BOOST),
CONSUMER_NAME("consumer_name", SolrFieldBoost.MEDIUM_BOOST),
ADJUSTMENT_DESCRIPTION("adjustment_description", SolrFieldBoost.LOW_BOOST),
USER_COMMENT("user_comment", SolrFieldBoost.LOW_BOOST),
USER_COMMENT_USERNAME("user_comment_username", SolrFieldBoost.MEDIUM_BOOST),
USER_COMMENT_USER_NAME("user_comment_user_name", SolrFieldBoost.MEDIUM_BOOST),
SCORE("score"),
AVERAGE_SCORE("average_score"),
REUSE_COUNTER("reuse_counter"),
APPLICATION_DOMAIN("application_domain", SolrFieldBoost.HIGH_BOOST),
OTHER_APPLICATION_DOMAIN("other_application_domain", SolrFieldBoost.HIGH_BOOST),
APPLICATION_SUBDOMAIN("application_subdomain", SolrFieldBoost.HIGH_BOOST),
OTHER_APPLICATION_SUBDOMAIN("other_application_subdomain", SolrFieldBoost.HIGH_BOOST),
ORGANIZATION("organization", SolrFieldBoost.MEDIUM_BOOST),
PROJECT("project", SolrFieldBoost.HIGH_BOOST),
TAG("tag", SolrFieldBoost.VERY_HIGH_BOOST),
FUNCTIONAL_REQUIREMENT_TYPE("functional_requirement_type", SolrFieldBoost.MEDIUM_BOOST),
NON_FUNCTIONAL_REQUIREMENT_TYPE("non_functional_requirement_type", SolrFieldBoost.MEDIUM_BOOST),
LANGUAGE("language", SolrFieldBoost.MEDIUM_BOOST),
OPERATIONAL_SYSTEM("operational_system", SolrFieldBoost.MEDIUM_BOOST),
DESCRIPTOR_GROUP("descriptor_group", SolrFieldBoost.HIGH_BOOST),
DESCRIPTOR_NAME("descriptor_name", SolrFieldBoost.HIGH_BOOST),
DESCRIPTOR_VALUE("descriptor_value"),
INTERFACE_SPEC("interface_spec", SolrFieldBoost.HIGH_BOOST),
OPERATION_NAME("operation_name"),
OPERATION_DESCRIPTION("operation_description"),
DESIGN_PATTERN("design_pattern", SolrFieldBoost.MEDIUM_BOOST),
PROGRAMMING_LANGUAGE("programming_language", SolrFieldBoost.HIGH_BOOST),
OTHER_PROGRAMMING_LANGUAGE("other_programming_language", SolrFieldBoost.HIGH_BOOST),
SOFTWARE_LICENSE("software_license", SolrFieldBoost.MEDIUM_BOOST),
REFERENCE("reference"),
ARTIFACT_NAME("artifact_name", SolrFieldBoost.MEDIUM_BOOST),
ARTIFACT_DESCRIPTION("artifact_description"),
ARTIFACT_TEXT("artifact_text", SolrFieldBoost.LOW_BOOST),
SOURCE_CODE_TYPE("source_code_type", SolrFieldBoost.MEDIUM_BOOST),
USER_INTERFACE_TYPE("user_interface_type", SolrFieldBoost.MEDIUM_BOOST),
TEST_TYPE("test_type", SolrFieldBoost.MEDIUM_BOOST),
TEST_METHOD_TYPE("test_method_type", SolrFieldBoost.MEDIUM_BOOST),
RELATED_ASSET_ID("related_asset_id", SolrFieldBoost.MEDIUM_BOOST),
RELATED_ASSET_NAME("related_asset_name", SolrFieldBoost.MEDIUM_BOOST),
RELATED_ASSET_VERSION("related_asset_version"),
RELATED_ASSET_TYPE("related_asset_type"),
;
private String name;
private float boost;
SolrField(String label) {
this(label, SolrFieldBoost.DEFAULT_BOOST);
}
SolrField(String label, float boost) {
this.setName(label);
this.setBoost(boost);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getBoost() {
return boost;
}
public void setBoost(float boost) {
this.boost = boost;
}
public static SolrField getFieldByName(String name) {
for (SolrField sf : SolrField.values()) {
if (sf.getName().equals(name)) {
return sf;
}
}
throw new IllegalArgumentException("Name not found: " + name);
}
}