Как избежать слишком большого количества нулевых сравнений - PullRequest
0 голосов
/ 23 июня 2011

Я работаю с JENA framework, чтобы собрать информацию о публичных контрактах и ​​опубликовать ее как RDF, и я не могу преодолеть следующую проблему:
При создании новой модели RDF я создаю новый Resource для каждого контракта, а затем назначаю набор свойств (которые я выбрал), используя метод addProperty(Property, RDFNode) или addProperty(Property, String) JENA. Проблема в том, что в некоторых контрактах отсутствуют некоторые свойства, поэтому я получаю NullPointerException.
Использование

if(contract.getProperty() != null)
{
   resource.addProperty(VOCABULARY.property, contract.getProperty());
}

для каждого отдельного свойства, вероятно, не лучший способ, так как второй параметр метода addProperty() сильно отличается (это может быть непосредственно contract.getProperty(), но иногда также model.createLiteral(contract.getProperty()) или model.createTypedLiteral(contract.getProperty(), XSDDataType.XSDInt) и т. Д.), Я не могу создать свой собственный метод myAddProperty() где я проверю null и позвоню Джене addProperty().
Что бы вы предложили как лучшее решение, чтобы пропустить все нулевые свойства?
Большое спасибо за любые предложения.

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Измените нулевую проверку на отдельный метод:

private void addProperty(final Resource resource, final String key, final String value) {
    if (value != null) {
        resource.addProperty(key, value);
    }
}

Затем вы можете использовать этот метод следующим образом:

addProperty(resource, VOCABULARY.property, contract.getProperty());
0 голосов
/ 23 июня 2011

Я не очень знаком с этими фреймворками, но, может быть, вы можете создать подкласс Resource и сделать что-то подобное?:

@overrides
public void addProperty(String key, String value)
{
   if (value != null) super.addProperty(key,value);
}
...