/* 
 * TPCW_Util.java - Some random utility functions needed by the servlets.
 *
 ************************************************************************
 *
 * This is part of the the Java TPC-W distribution,
 * written by Harold Cain, Tim Heil, Milo Martin, Eric Weglarz, and Todd
 * Bezenek.  University of Wisconsin - Madison, Computer Sciences
 * Dept. and Dept. of Electrical and Computer Engineering, as a part of
 * Prof. Mikko Lipasti's Fall 1999 ECE 902 course.
 *
 * Copyright (C) 1999, 2000 by Harold Cain, Timothy Heil, Milo Martin, 
 *                             Eric Weglarz, Todd Bezenek.
 *
 * This source code is distributed "as is" in the hope that it will be
 * useful.  It comes with no warranty, and no author or distributor
 * accepts any responsibility for the consequences of its use.
 *
 * Everyone is granted permission to copy, modify and redistribute
 * this code under the following conditions:
 *
 * This code is distributed for non-commercial use only.
 * Please contact the maintainer for restrictions applying to 
 * commercial use of these tools.
 *
 * Permission is granted to anyone to make or distribute copies
 * of this code, either as received or modified, in any
 * medium, provided that all copyright notices, permission and
 * nonwarranty notices are preserved, and that the distributor
 * grants the recipient permission for further redistribution as
 * permitted by this document.
 *
 * Permission is granted to distribute this code in compiled
 * or executable form under the same conditions that apply for
 * source code, provided that either:
 *
 * A. it is accompanied by the corresponding machine-readable
 *    source code,
 * B. it is accompanied by a written offer, with no time limit,
 *    to give anyone a machine-readable copy of the corresponding
 *    source code in return for reimbursement of the cost of
 *    distribution.  This written offer must permit verbatim
 *    duplication by anyone, or
 * C. it is distributed by someone who received only the
 *    executable form, and is accompanied by a copy of the
 *    written offer of source code that they received concurrently.
 *
 * In other words, you are welcome to use, share and improve this codes.
 * You are forbidden to forbid anyone else to use, share and improve what
 * you give them.
 *
 ************************************************************************/
import java.util.*;

public class TPCW_Util {
    
    //public final String SESSION_ID="JIGSAW_SESSION_ID";
    //public static final String SESSION_ID="JServSessionIdroot";
    public static final String SESSION_ID="jsessionid=";

    //This must be equal to the number of items in the ITEM table
    public static final int NUM_ITEMS = 10000;
    
    // Modified by Luis Rodero-Merino to ensure it does not return a '0' identifier
    public static int getRandomI_ID(){
    	Random rand = new Random();
    	Double temp = new Double(Math.floor(rand.nextFloat() * NUM_ITEMS));
    	return temp.intValue() + 1;
    }

    public static int getRandom(int i) {  // Returns integer 1, 2, 3 ... i
	return ((int) (java.lang.Math.random() * i)+1);
    }

    //Not very random function. If called in swift sucession, it will
    //return the same string because the system time used to seed the
    //random number generator won't change. 
    public static String getRandomString(int min, int max){
	String newstring = new String();
	Random rand = new Random();
	int i;
	final char[] chars = {'a','b','c','d','e','f','g','h','i','j','k',
			      'l','m','n','o','p','q','r','s','t','u','v',
			      'w','x','y','z','A','B','C','D','E','F','G',
			      'H','I','J','K','L','M','N','O','P','Q','R',
			      'S','T','U','V','W','X','Y','Z','!','@','#',
			      '$','%','^','&','*','(',')','_','-','=','+',
			      '{','}','[',']','|',':',';',',','.','?','/',
			      '~',' '}; //79 characters
	int strlen = (int) Math.floor(rand.nextDouble()*(max-min+1));
	strlen += min;
	for(i = 0; i < strlen; i++){
	    char c = chars[(int) Math.floor(rand.nextDouble()*79)];
	    newstring = newstring.concat(String.valueOf(c));
	}
	return newstring;
    }
    
    // Defined in TPC-W Spec Clause 4.6.2.8
    private static final String [] digS = {
    	"BA","OG","AL","RI","RE","SE","AT","UL","IN","NG"
    };
  

    public static String DigSyl(long d, int n) {
		String s = "";
		
		if(n==0)
			return(DigSyl(d));
		
		for(;n>0;n--) {
		    int c = (int)(d % 10);
		    s = digS[c]+s;
		    d = d/10;
		}
		
		return s;
    }
    
    public static String DigSyl(long d) {
		String s = "";
		
		for (;d!=0;d=d/10) {
		    int c = (int)(d % 10);
		    s = digS[c]+s;      
		}
		
		return(s);
    }
}
