@Override @Transactional public void createOrUpdateRecommender(Recommender aRecommender) { if (aRecommender.getId() == null) { entityManager.persist(aRecommender); } else { entityManager.merge(aRecommender); } }
@Override public void validate(IValidatable<String> aValidatable) { String newName = aValidatable.getValue(); Recommender currentRecommender = recommender.getObject(); Optional<Recommender> recommenderWithNewName = recommendationService .getRecommender(project.getObject(), newName); // Either there should be no recommender with the new name already existing or it should // be the recommender we are currently editing (i.e. the name has not changed) if ( recommenderWithNewName.isPresent() && !Objects.equals(recommenderWithNewName.get().getId(), currentRecommender.getId()) ) { aValidatable.error(new ValidationError( "Another recommender with the same name exists. Please try a different name")); } } }
@Override protected void onModelChanged() { super.onModelChanged(); // When field become invalid, Wicket stops re-rendering them. Thus we tell all of them that // their model has changes such that they clear their validation status. visitChildren(new ModelChangedVisitor(recommenderModel)); // Since toolChoice uses a lambda model, it needs to be notified explicitly. toolChoice.modelChanged(); // For new recommenders, default to auto-generation of name, for existing recommenders, // do not auto-generate name unless asked to Recommender recommender = recommenderModel.getObject(); if ( recommender.getId() == null || Objects.equals(recommender.getName(), generateName(recommender)) ) { autoGenerateNameCheckBox.setModelObject(true); autoUpdateName(null, nameField, recommenderModel.getObject()); } else { autoGenerateNameCheckBox.setModelObject(false); } }
public void removePredictions(Recommender aRecommender) { // Remove incoming predictions if (incomingPredictions != null) { incomingPredictions.removePredictions(aRecommender.getId()); } // Remove active predictions if (activePredictions != null) { activePredictions.removePredictions(aRecommender.getId()); } // Remove trainedModel contexts.remove(aRecommender); // Remove from activeRecommenders map. // We have to do this, otherwise training and prediction continues for the // recommender when a new task is triggered. MultiValuedMap<AnnotationLayer, Recommender> newActiveRecommenders = new HashSetValuedHashMap<>(); MapIterator<AnnotationLayer, Recommender> it = activeRecommenders.mapIterator(); while (it.hasNext()) { AnnotationLayer layer = it.next(); Recommender rec = it.getValue(); if (!rec.equals(aRecommender)) { newActiveRecommenders.put(layer, rec); } } setActiveRecommenders(newActiveRecommenders); } }
String name = aRecommender.getName(); AnnotationSuggestion ao = new AnnotationSuggestion(id, aRecommender.getId(), name, aRecommender.getLayer().getId(), featurename, aDocument.getName(), firstToken.getBegin(), lastToken.getEnd(), annotationFS.getCoveredText(), label, "[{}]({}) for user [{}] on document " + "[{}]({}) in project [{}]({}) generated {} predictions.", aRecommender.getName(), aRecommender.getId(), aUser.getUsername(), aDocument.getName(), aDocument.getId(), aRecommender.getProject().getName(), aRecommender.getProject().getId(), predictionCount);
recommender = recommendationService.getRecommender(r.getId());
List<LoggedEvent> tempLoggedEvents = eventRepo.listLoggedEvents( model.getObject().getProject(), model.getObject().getUser().getUsername(), eventType, maxPointsToPlot, recommender.getId());
recommender = recommendationService.getRecommender(r.getId());
recommender = recommendationService.getRecommender(r.getId()); log.info("Context for recommender [{}]({}) for user [{}] on document " + "[{}]({}) in project [{}]({}) is not ready yet - skipping recommender", recommender.getName(), recommender.getId(), user.getUsername(), document.getName(), document.getId(), project.getName(), project.getId()); log.error("Error applying recommender [{}]({}) for user [{}] to document " + "[{}]({}) in project [{}]({}) - skipping recommender", recommender.getName(), recommender.getId(), user.getUsername(), document.getName(), document.getId(), project.getName(), project.getId(), e);
@Override public String getDetails(RecommenderEvaluationResultEvent aEvent) { try { Details details = new Details(); details.recommenderId = aEvent.getRecommender().getId(); details.score = aEvent.getScore(); details.active = aEvent.isActive(); details.duration = aEvent.getDuration(); details.threshold = aEvent.getRecommender().getThreshold(); details.layer = aEvent.getRecommender().getLayer().getName(); details.feature = aEvent.getRecommender().getFeature().getName(); details.tool = aEvent.getRecommender().getTool(); return JSONUtil.toJsonString(details); } catch (IOException e) { log.error("Unable to log event [{}]", aEvent, e); return "<ERROR>"; } }