use of org.karnak.backend.model.expression.ExprCondition in project karnak by OsiriX-Foundation.
the class Profile method applyAction.
public void applyAction(Attributes dcm, Attributes dcmCopy, HMAC hmac, ProfileItem profilePassedInSequence, ActionItem actionPassedInSequence, AttributeEditorContext context) {
for (int tag : dcm.tags()) {
VR vr = dcm.getVR(tag);
final ExprCondition exprCondition = new ExprCondition(dcmCopy);
ActionItem currentAction = null;
ProfileItem currentProfile = null;
for (ProfileItem profileEntity : profiles.stream().filter(p -> !(p instanceof CleanPixelData)).collect(Collectors.toList())) {
currentProfile = profileEntity;
if (profileEntity.getCondition() == null || profileEntity.getCodeName().equals(ProfileItemType.DEFACING.getClassAlias()) || profileEntity.getCodeName().equals(ProfileItemType.CLEAN_PIXEL_DATA.getClassAlias())) {
currentAction = profileEntity.getAction(dcm, dcmCopy, tag, hmac);
} else {
boolean conditionIsOk = (Boolean) ExpressionResult.get(profileEntity.getCondition(), exprCondition, Boolean.class);
if (conditionIsOk) {
currentAction = profileEntity.getAction(dcm, dcmCopy, tag, hmac);
}
}
if (currentAction != null) {
break;
}
if (profileEntity.equals(profilePassedInSequence)) {
currentAction = actionPassedInSequence;
break;
}
}
if (!(currentAction instanceof Remove) && !(currentAction instanceof ReplaceNull) && vr == VR.SQ) {
final ProfileItem finalCurrentProfile = currentProfile;
final ActionItem finalCurrentAction = currentAction;
Sequence seq = dcm.getSequence(tag);
if (seq != null) {
for (Attributes d : seq) {
applyAction(d, dcmCopy, hmac, finalCurrentProfile, finalCurrentAction, context);
}
}
} else {
if (currentAction != null) {
try {
currentAction.execute(dcm, tag, hmac);
} catch (final Exception e) {
LOGGER.error("Cannot execute the currentAction {} for tag: {}", currentAction, TagUtils.toString(tag), e);
}
}
}
}
}
use of org.karnak.backend.model.expression.ExprCondition in project karnak by OsiriX-Foundation.
the class TextFieldsBindSwitchingAlbum method buildBinder.
private Binder<KheopsAlbumsEntity> buildBinder() {
Binder<KheopsAlbumsEntity> b = new BeanValidationBinder<>(KheopsAlbumsEntity.class);
b.forField(textAuthorizationDestination).withValidator(StringUtils::isNotBlank, "Token destination is mandatory").withValidator(value -> {
if (!textUrlAPI.getValue().isBlank()) {
return validateToken(value, textUrlAPI.getValue(), SwitchingAlbum.MIN_SCOPE_DESTINATION);
}
return true;
}, "Token can't be validate, minimum permissions: [write]").bind(KheopsAlbumsEntity::getAuthorizationDestination, KheopsAlbumsEntity::setAuthorizationDestination);
b.forField(textAuthorizationSource).withValidator(StringUtils::isNotBlank, "Token source is mandatory").withValidator(value -> {
if (!textUrlAPI.getValue().isBlank()) {
return validateToken(value, textUrlAPI.getValue(), SwitchingAlbum.MIN_SCOPE_SOURCE);
}
return true;
}, "Token can't be validate, minimum permissions: [read, send]").bind(KheopsAlbumsEntity::getAuthorizationSource, KheopsAlbumsEntity::setAuthorizationSource);
b.forField(textUrlAPI).withValidator(StringUtils::isNotBlank, "Url API is mandatory").bind(KheopsAlbumsEntity::getUrlAPI, KheopsAlbumsEntity::setUrlAPI);
b.forField(textCondition).withValidator(value -> {
if (!textCondition.getValue().equals("")) {
expressionError = ExpressionResult.isValid(textCondition.getValue(), new ExprCondition(), Boolean.class);
textErrorConditionMsg.setText(expressionError.getMsg());
return expressionError.isValid();
}
textErrorConditionMsg.setText("");
return true;
}, "Condition is not valid").bind(KheopsAlbumsEntity::getCondition, KheopsAlbumsEntity::setCondition);
return b;
}
use of org.karnak.backend.model.expression.ExprCondition in project karnak by OsiriX-Foundation.
the class DestinationCondition method setBinder.
private void setBinder(Binder<DestinationEntity> binder) {
binder.forField(condition).withValidator(value -> {
if (!condition.getValue().equals("")) {
ExpressionError expressionError = ExpressionResult.isValid(condition.getValue(), new ExprCondition(), Boolean.class);
textErrorConditionMsg.setText(expressionError.getMsg());
return expressionError.isValid();
}
return true;
}, "Condition not valid").withValidationStatusHandler(status -> {
if (!status.isError()) {
textErrorConditionMsg.setText("");
}
}).bind(DestinationEntity::getCondition, DestinationEntity::setCondition);
}
use of org.karnak.backend.model.expression.ExprCondition in project karnak by OsiriX-Foundation.
the class Profile method applyDefacing.
public void applyDefacing(Attributes dcmCopy, AttributeEditorContext context) {
ProfileItem profileItemDefacing = profiles.stream().filter(p -> p instanceof Defacing).findFirst().orElse(null);
if (profileItemDefacing != null) {
if (isCT(dcmCopy) && isAxial(dcmCopy)) {
if (profileItemDefacing.getCondition() == null) {
context.getProperties().setProperty(Defacer.APPLY_DEFACING, "true");
} else {
ExprCondition exprCondition = new ExprCondition(dcmCopy);
boolean conditionIsOk = (Boolean) ExpressionResult.get(profileItemDefacing.getCondition(), exprCondition, Boolean.class);
if (conditionIsOk) {
context.getProperties().setProperty(Defacer.APPLY_DEFACING, "true");
}
}
}
}
}
use of org.karnak.backend.model.expression.ExprCondition in project karnak by OsiriX-Foundation.
the class Profile method evaluateConditionCleanPixelData.
/**
* Evaluate the condition on the profile Clean Pixel Data
*
* @param dcmCopy Context copy
* @return true if the condition match, false if there are some exclusions
*/
boolean evaluateConditionCleanPixelData(Attributes dcmCopy) {
boolean conditionCleanPixelData = true;
// Retrieve the profile item
ProfileItem profileItemCleanPixelData = profiles.stream().filter(CleanPixelData.class::isInstance).findFirst().orElse(null);
if (profileItemCleanPixelData != null && profileItemCleanPixelData.getCondition() != null) {
// Evaluate the condition
ExprCondition exprCondition = new ExprCondition(dcmCopy);
conditionCleanPixelData = (Boolean) ExpressionResult.get(profileItemCleanPixelData.getCondition(), exprCondition, Boolean.class);
}
return conditionCleanPixelData;
}
Aggregations