package alien4cloud.model.common;
import static alien4cloud.dao.model.FetchContext.SUMMARY;
import lombok.Getter;
import lombok.Setter;
import org.elasticsearch.annotation.ESObject;
import org.elasticsearch.annotation.Id;
import org.elasticsearch.annotation.query.FetchContext;
import com.fasterxml.jackson.annotation.JsonInclude;
/**
* A suggestion linked to a indexed element's property.
*/
@ESObject
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
public class SuggestionEntry extends AbstractSuggestionEntry {
/**
* elasticsearch index of suggestion, for example toscaelement
*/
@FetchContext(contexts = { SUMMARY }, include = { true })
private String esIndex;
/**
* elasticsearch type of suggestion, for example indexcapabilitytype
*/
@FetchContext(contexts = { SUMMARY }, include = { true })
private String esType;
/**
* id of the target's entity for suggestion (for example tosca.capabilities.OperatingSystem)
*/
@FetchContext(contexts = { SUMMARY }, include = { true })
private String targetElementId;
/**
* property of the target's entity that needs suggestion for its values ( for example type, distribution, architecture etc ...)
*/
@FetchContext(contexts = { SUMMARY }, include = { true })
private String targetProperty;
public static String generateId(String esIndex, String esType, String targetElementId, String targetProperty) {
return esIndex + ":" + esType + ":" + targetElementId + ":" + targetProperty;
}
@Id
public String getId() {
return generateId(esIndex, esType, targetElementId, targetProperty);
}
public void setId(String id) {
// Id is auto-generated
}
}