package org.docear.plugin.services.recommendations.mode; import java.util.Collection; import org.docear.plugin.services.ServiceController; import org.docear.plugin.services.communications.CommunicationsController; import org.docear.plugin.services.recommendations.RecommendationEntry; import org.freeplane.core.util.TextUtils; import org.freeplane.features.attribute.AttributeRegistry; import org.freeplane.features.map.MapModel; public class DocearRecommendationsMapModel extends MapModel { public DocearRecommendationsMapModel(Collection<RecommendationEntry> recommendations) { new DocearRecommendationsMapModel(); parseRecommendations(recommendations); getRootNode().setFolded(false); } public DocearRecommendationsMapModel() { super(); // create empty attribute registry AttributeRegistry.getRegistry(this); } private void parseRecommendations(Collection<RecommendationEntry> recommendations) { if(recommendations == null) { if(ServiceController.getController().isRecommendationsAllowed()) { setRoot(DocearRecommendationsNodeModel.getNoRecommendationsNode(this, TextUtils.getText("recommendations.error.no_recommendations"))); } else { setRoot(DocearRecommendationsNodeModel.getNoServiceNode(this)); } return; } setRoot(DocearRecommendationsNodeModel.getRecommendationContainer(TextUtils.getText("recommendations.container.documents"),this)); if(recommendations.isEmpty()) { getRootNode().insert(DocearRecommendationsNodeModel.getNoRecommendationsNode(this, TextUtils.getText("recommendations.error.no_recommendations"))); } else { //shuffle on server side //Collections.shuffle((List<?>) recommendations); for(RecommendationEntry entry : recommendations) { getRootNode().insert(new DocearRecommendationsNodeModel(entry, this)); } } } public String getTitle() { String label = CommunicationsController.getController().getRegisteredUserName(); if(label != null && label.trim().length() > 0) { return TextUtils.format("recommendations.map.label.forUser", label); } return TextUtils.getText("recommendations.map.label.anonymous"); } }