com.tozny.mobiledemo.SessionDAO.java Source code

Java tutorial

Introduction

Here is the source code for com.tozny.mobiledemo.SessionDAO.java

Source

/*
 * SessionDAO.java
 *
 * Copyright (C) 2016, Tozny, LLC.
 * All Rights Reserved.
 *
 * Released under the Apache license. See the file "LICENSE"
 * for more information.
 */

package com.tozny.mobiledemo;

import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableMap;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

import javax.annotation.Nullable;

/**
 * Interface to simple in-memory database.
 */
public class SessionDAO {

    private ImmutableMap<String, Session> sessionMap;

    public SessionDAO() {
        sessionMap = ImmutableMap.of();
    }

    public void insertSession(String userId, Session session) {
        sessionMap = new ImmutableMap.Builder<String, Session>().putAll(sessionMap).put(userId, session).build();
    }

    @Nullable
    public Session findByUserId(String userId) {
        return sessionMap.get(userId);
    }

    @Nullable
    public String findUserIdBySessionToken(String sessionToken) {
        for (Map.Entry<String, Session> entry : sessionMap.entrySet()) {
            if (entry.getValue().getSessionToken().equals(sessionToken)) {
                return entry.getKey();
            }
        }
        return null;
    }

    public void deleteSession(String sessionToken) {
        Collection<Map.Entry<String, Session>> sessions = Collections2.filter(sessionMap.entrySet(),
                new Predicate<Map.Entry<String, Session>>() {
                    public boolean apply(Map.Entry<String, Session> entry) {
                        return !entry.getValue().getSessionToken().equals(sessionToken);
                    }
                });
        sessionMap = ImmutableMap.copyOf(sessions);
    }

}