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

prerna.reactor.utils.UnlockEngineReactor Maven / Gradle / Ivy

The newest version!
package prerna.reactor.utils;

import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.locks.ReentrantLock;

import prerna.reactor.AbstractReactor;
import prerna.sablecc2.om.PixelDataType;
import prerna.sablecc2.om.ReactorKeysEnum;
import prerna.sablecc2.om.nounmeta.NounMetadata;
import prerna.util.EngineSyncUtility;

public class UnlockEngineReactor extends AbstractReactor {

	public UnlockEngineReactor() {
		this.keysToGet = new String[] { ReactorKeysEnum.ENGINE.getKey() };
	}
	
	@Override
	public NounMetadata execute() {
		organizeKeys();
		String engineId = this.keyValue.get(this.keysToGet[0]);
		
		boolean retBool = false;
		// this method checks if you are an admin
		ConcurrentMap locks = EngineSyncUtility.getAllLocks(this.insight.getUser());
		if(engineId == null) {
			// unlock any current locks in use
			for(String key : locks.keySet()) {
				ReentrantLock thisLock = locks.get(key);
				if(thisLock != null) {
					thisLock.unlock();
				}
			}
			locks.clear();
			retBool = true;
		} else {
			ReentrantLock lock = locks.remove(engineId);
			if(lock != null) {
				lock.unlock();
				retBool = true;
			}
			retBool = false;
		}
		
		return new NounMetadata(retBool, PixelDataType.BOOLEAN);
	}
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy