/*
 * Created on 27-Oct-2009
 *
 * TODO 
 */
package uk.ac.roe.wfau;

import javax.servlet.http.HttpSession;

/**
 * @author mar
 *
 */
public class VDFSSession {
    static final int UKIDSSTESTERCLASS=0;
    static final int UKIDSSCLASS=1;
    static final int WORLDCLASS=2;
    static final int PRERELEASECLASS=3;
    static final int NONSURVEYCLASS=4;
    static final int VISTATESTERCLASS=5;

    public static String getProgID(HttpSession sess) {
        if (sess.getAttribute("programmeID") != null) {
        return ((String) sess.getAttribute("programmeID")).trim();
        }
        else {
            return "-999";
        }
    }
    
    
    public static Object getAttribute(HttpSession sess, int archiveID, String attName) {
        switch (archiveID) {
        case VDFSSchema.VSAARCHIVEID:
            return sess.getAttribute("vsa"+attName);
        case VDFSSchema.OSAARCHIVEID:
        	return sess.getAttribute("osa"+attName);
        case VDFSSchema.GESARCHIVEID:
        	return sess.getAttribute("ges"+attName);
        default:
        	return sess.getAttribute(attName);     
        }
    }
    public static String getProgID(HttpSession sess, int archiveID) {
        switch (archiveID) {
        case VDFSSchema.VSAARCHIVEID:
            return VSASession.getProgID(sess);
        case VDFSSchema.OSAARCHIVEID:
            return OSASession.getProgID(sess);
        case VDFSSchema.GESARCHIVEID:
            return GESSession.getProgID(sess);
        default:
            return WSASession.getProgID(sess);     
        }
    }
    
    public static String getCommunity(HttpSession sess, int archiveID) {
        switch (archiveID) {
        case VDFSSchema.VSAARCHIVEID:
            return VSASession.getCommunity(sess);
        case VDFSSchema.OSAARCHIVEID:
            return OSASession.getCommunity(sess);
        case VDFSSchema.GESARCHIVEID:
            return GESSession.getCommunity(sess);
        default:
            return WSASession.getCommunity(sess);      
        }
    }
    public static String getUser(HttpSession sess, int archiveID, boolean generic) {
        switch (archiveID) {
        case VDFSSchema.VSAARCHIVEID:
            return VSASession.getUser(sess,generic);
        case VDFSSchema.GESARCHIVEID:
            return GESSession.getUser(sess,generic);
        case VDFSSchema.OSAARCHIVEID:
            return OSASession.getUser(sess,generic);
        default:
            return WSASession.getUser(sess);      
        }
    }
    
    public static String getUser(HttpSession sess, int archiveID) {
     return getUser(sess,archiveID,false);
    }
    
    
    public static String getCommunity(HttpSession sess) {
        if (sess.getAttribute("community") != null) {
            String community = ((String) sess.getAttribute("community")).toLowerCase().trim();
            if (community != null) {
                return community;
            } else {
                return "world";
            }
        } else {
            return "world";
        }
    }
 
    public static boolean getLoginBoolean(HttpSession sess,String archive) {
        if (archive.equalsIgnoreCase(VDFSSchema.VSAARCHIVE) ) {
            return VSASession.getLoginBoolean(sess);
        }
        else if (archive.equalsIgnoreCase(VDFSSchema.GESARCHIVE)){
        	return GESSession.getLoginBoolean(sess);
        }
        else if (archive.equalsIgnoreCase(VDFSSchema.OSAARCHIVE)){
        	return OSASession.getLoginBoolean(sess);
        }
        else {
            return WSASession.getLoginBoolean(sess);
        }
    }      
    
    public static String getDBUser(HttpSession sess, String archive){
        switch(VDFSSchema.getArchiveID(archive)) {
        	case VDFSSchema.WSAARCHIVEID:
        	    return WSASession.getDBUser(sess);
        	case VDFSSchema.GESARCHIVEID:
        	    return GESSession.getDBUser(sess);
        	case VDFSSchema.VSAARCHIVEID:
        	    return VSASession.getDBUser(sess);
        	case VDFSSchema.OSAARCHIVEID:
        	    return OSASession.getDBUser(sess);
        	case VDFSSchema.SSAARCHIVEID:
        	    return "ssaro";
        	default:
        	    return WSASession.getDBUser(sess);
        }
        /* 
        if (archive.equalsIgnoreCase(VDFSSchema.VSAARCHIVE)) {
            return VSASession.getDBUser(sess);
        }
        else {
            return WSASession.getDBUser(sess);
        }
        */
    }
    
    
    public static int getSessionClass(HttpSession sess, String archive){
        if (archive.equalsIgnoreCase(VDFSSchema.VSAARCHIVE)) {
            return VSASession.getSessionClass(sess);
        }
        else {
            return WSASession.getSessionClass(sess);
        }
    }
    
    public static String getDefaultDatabase(HttpSession sess,String archive) {
        if (archive.equalsIgnoreCase(VDFSSchema.VSAARCHIVE)) {
            return null;
        }
        else {
            return null;
        }
    }
            
    public static String [] getServers(String community, String archive, String [] WSASERVERS,String [] WSACUSERVERS,String [] VSASERVERS,String [] VSACUSERVERS, String [] WSANSSERVERS) {
        if (!community.equalsIgnoreCase(WSASchema.NONSURVEYCOMMUNITY)) {
        return getServers(community,archive,WSASERVERS,WSACUSERVERS,VSASERVERS,VSACUSERVERS);
        }
        else {
            return getServers(community,archive,WSANSSERVERS,WSACUSERVERS,VSASERVERS,VSACUSERVERS);
        }
    }

    public static String [] getServers(String community, String archive, String [] WSASERVERS,String [] WSACUSERVERS,String [] VSASERVERS,String [] VSACUSERVERS) {
        if (archive != null && archive.equalsIgnoreCase("vsa")) {
            if (!community.equalsIgnoreCase(VSASchema.PRERELEASECOMMUNITY)) {
                return VSASERVERS;
            }
            else {
                return VSACUSERVERS;
            }
        }
        else {
            if (!community.equalsIgnoreCase(WSASchema.PRERELEASECOMMUNITY)) {
                return WSASERVERS;
            }
            else {
                return WSACUSERVERS;
            }
        }
    }
    public static String [] getServers(HttpSession sess, String archive, String [] WSASERVERS,String [] WSACUSERVERS,String [] VSASERVERS,String [] VSACUSERVERS) {
      return getServers(WSASession.getCommunity(sess),archive,WSASERVERS,WSACUSERVERS,VSASERVERS,VSACUSERVERS);
    }
    
}
