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

org.nico.cat.mvc.container.NomvcContainer Maven / Gradle / Ivy

There is a newer version: 1.1.3
Show newest version
package org.nico.cat.mvc.container;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.nico.cat.mvc.container.entity.CinemaEntity;
import org.nico.cat.mvc.container.entity.LobbyEntity;
import org.nico.cat.mvc.parameter.RequestMethod;
import org.nico.cat.mvc.util.PathValidMatchUtils;


public class NomvcContainer {
	
private static NomvcContainer instance;
	
	private NomvcContainer(){
		cinemaMap = new ConcurrentHashMap, CinemaEntity>();
		lobbyMap = new ConcurrentHashMap>();
	}
	
	public static NomvcContainer getInstance(){
		try {    
            if(instance != null){
            }else{  
                Thread.sleep(300);  
                synchronized (NomvcContainer.class) {  
                    if(instance == null){
                        instance = new NomvcContainer();  
                    }  
                }  
            }   
        } catch (InterruptedException e) {   
            e.printStackTrace();  
        }  
        return instance; 
	}
	
	private Map, CinemaEntity> cinemaMap;
	
	private Map> lobbyMap;
	
	public void putCinema(Class clazz, CinemaEntity cinemaEntity){
		cinemaMap.put(clazz, cinemaEntity);
	}
	
	public void putLobby(final String mapping, final LobbyEntity lobbyEntity){
		RequestMethod requestMethod = lobbyEntity.getLobby().requestMethod();
		if(lobbyMap.containsKey(requestMethod)) {
			lobbyMap.get(requestMethod).put(mapping, lobbyEntity);
		}else {
			lobbyMap.put(requestMethod, new ConcurrentHashMap(){
				private static final long serialVersionUID = 1L;
				{
					put(mapping, lobbyEntity);
				}
			});
		}
	}
	
	public boolean containsLobbyEntity(String mapping, RequestMethod method){
		return getLobbyEntity(mapping, method) != null;
	}
	
	public boolean containsCinemaEntity(Class clazz){
		return cinemaMap.containsKey(clazz);
	}
	
	public LobbyEntity getLobbyEntity(String mapping, RequestMethod method){
		Map routers = null;
		for(int i = 0; i< 2; i++) {
			if(i == 0) {
				routers = lobbyMap.get(method);
			}else {
				if(method.equals(RequestMethod.DEFAULT)) {
					break;
				}
				routers = lobbyMap.get(RequestMethod.DEFAULT);
			}
			if(routers != null && ! routers.isEmpty()) {
				for(String key: routers.keySet()){
					if(PathValidMatchUtils.pathValidMatcher(key, mapping)){
						return routers.get(key);
					}
				}
			}
		}
		return null;
	}
	
	public CinemaEntity getCinemaEntity(Class clazz){
		return cinemaMap.get(clazz);
	}
	
	
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy