@Override public boolean equals(Object other) { return Optional.ofNullable(other) .filter(o -> (o instanceof TermType)) .map(o -> (TermType) o) .filter(o -> colType == o.getColType()) .filter(o -> optionalLangTagConstant .map(tag1 -> o.getLanguageTagConstant() .map(tag1::equals) .orElse(false)) .orElseGet(() -> !o.getLanguageTagConstant().isPresent())) .filter(o -> optionalLangTagTerm .map(tag1 -> o.getLanguageTagTerm() .map(tag1::equals) .orElse(false)) .orElseGet(() -> !o.getLanguageTagTerm().isPresent())) .isPresent(); }
private String getLangColumnForSELECT(Term ht, AliasIndex index, Optional<TermType> optionalTermType) { if (ht instanceof Variable) { return index.getLangColumn((Variable) ht) .map(QualifiedAttributeID::getSQLRendering) .orElse(sqladapter.getNullForLang()); } else { return optionalTermType .filter(t -> t.getColType() == LANG_STRING) .map(t -> t.getLanguageTagConstant() .map(tag -> "'" + tag.getFullString() + "'") .orElseGet(() -> t.getLanguageTagTerm() .map(tag -> getSQLString(tag, index, false)) .orElseThrow(() -> new IllegalStateException( "Inconsistent term type: the language tag must be defined for any LANG_STRING")))) .orElse(sqladapter.getNullForLang()); } }
LanguageTag langTag = optionalLangTagConstant.get(); Optional<LanguageTag> newOptionalLangTag = otherTermType.getLanguageTagConstant() .flatMap(langTag::getCommonDenominator);
private String getLangColumnForSELECT(Term ht, String signatureVarName, QueryAliasIndex index, Set<String> sqlVariableNames, Optional<TermType> optionalTermType) { /** * Creates a variable name that fits to the restrictions of the SQL dialect. */ String langVariableName = sqladapter.nameTopVariable(signatureVarName, LANG_SUFFIX, sqlVariableNames); sqlVariableNames.add(langVariableName); final String lang; if (ht instanceof Variable) { lang = getLangFromVariable((Variable) ht, index); } else { lang = optionalTermType .filter(t -> t.getColType() == LITERAL_LANG) .map(t -> t.getLanguageTagConstant() .map(tag -> "'" + tag.getFullString() + "'") .orElseGet(() -> t.getLanguageTagTerm() .map(tag -> getSQLString(tag, index, false)) .orElseThrow(() -> new IllegalStateException( "Inconsistent term type: the language tag must be defined " + "for any LITERAL_LANG")))) .orElse("NULL"); } return String.format(LANG_STR, lang, langVariableName); }