package CookieCutter.g1;

import java.text.NumberFormat;
import java.util.*;

public class Util {
	private static final String kErrorArrayTooSmall =
		"Cookie array is too small.";
	
	private static NumberFormat mNF;	
	
	static {
		mNF = NumberFormat.getInstance();
		mNF.setMinimumFractionDigits(2);
		mNF.setMaximumFractionDigits(2);
		mNF.setMinimumIntegerDigits(1);
	}
	
	// enfore uninstantiability
	private Util() {		
	}
	
	public static NumberFormat nf() {
		return mNF;
	}
	
	public static void fillCookiesArray(Cookie[] iSource, Cookie[] iTarget) {
		int index = 0;
				
		//for (Iterator i = iSource.iterator(); i.hasNext(); ) {
		for (int i = 0; i < iSource.length; i++) {		
			//Cookie c = (Cookie) i.next();
			Cookie c = iSource[i];
			
			if (c instanceof CookieGroup) {
				List subCookies = ((CookieGroup) c).getSubCookies();
				for (Iterator j = subCookies.iterator(); j.hasNext(); ) {
					if (index >= iTarget.length) {
						throw new IllegalArgumentException(kErrorArrayTooSmall + "source=" + iSource.length + ", target=" + iTarget.length);
					}
					
					iTarget[index++] = (Cookie) j.next();
				}
			} else {
				if (index >= iTarget.length) {
					throw new IllegalArgumentException(kErrorArrayTooSmall);
				}

				iTarget[index++] = c;
			}
		}
	}
}
