All Downloads are FREE. Search and download functionalities are using the official Maven repository.

info.kwarc.sally4.mhw.base.impl.MathHubWorkerAssigner Maven / Gradle / Ivy

The newest version!
package info.kwarc.sally4.mhw.base.impl;

import info.kwarc.sally4.lmh.impl.LMHImpl;
import info.kwarc.sally4.lmh.impl.LMHMultiUserStore;
import info.kwarc.sally4.mhw.base.IMathHubUser;
import info.kwarc.sally4.mhw.base.IMathHubWorker;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

import org.apache.felix.ipojo.annotations.Bind;

public class MathHubWorkerAssigner {
	HashSet lmhStores;
	HashMap workerAssignments;
	
	public MathHubWorkerAssigner() {
		lmhStores = new HashSet();
		workerAssignments = new HashMap();
	}
	
	@Bind(aggregate=true, optional=true)
	public void addLMHStore(LMHMultiUserStore multiUserStore) {
		lmhStores.add(multiUserStore);
	}

	// TODO: MathHubWorkers depending on the LMHMultiUserStore should be released
	@Bind(aggregate=true, optional=true)
	public void removeLMHStore(LMHMultiUserStore multiUserStore) {
		lmhStores.remove(multiUserStore);
	}
	
	public List getWorkerSuggestions(final IMathHubUser user) {
		List suggestions = new ArrayList();
		for (final LMHMultiUserStore store : lmhStores) {
			suggestions.add(new MathHubWorkerSuggestion() {
				
				@Override
				public IMathHubWorker doAssignWorker() {
					LMHImpl inst = store.initUser(user.getUserId(), user.getPrivateKey());
					MathHubWorker worker = new MathHubWorker(user, inst);
					workerAssignments.put(user.getUserId(), worker);
					return worker;
				}
				
				@Override
				public String getDescription() {
					return "Worker for user "+user.getUserName();
				}
			});
		}
		return suggestions;
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy