public LinkedList getCentersFromPublicAdvisories()
		throws MalformedURLException, IOException, ParseException
	{
		if(log.isDebugEnabled())
			log.debug("Get list of forecast advisories from " + stormFileName);
		String advisoryArchiveContent = null;
		advisoryArchiveContent = new WebPage(urlPrefix + stormFileName).getContents();
		
		LinkedList<String> advisories = new LinkedList<String>();
		StringTokenizer st = new StringTokenizer(advisoryArchiveContent, "\n");
		while(st.hasMoreTokens()){
			String line = st.nextToken();
			if(line.matches("^.*/archive/[0-9][0-9][0-9][0-9]/pub/.*$")){
				if(log.isDebugEnabled())
					log.debug("line:" + line);
				
				String advisoryFile = line.replaceAll("^.*<a href=\"", "");
				advisoryFile = advisoryFile.replaceAll("[?].*$", "");
				String host = urlPrefix.replaceAll("http://", "").replaceAll("/.*$", "");
				String advisoryURL = "http://" + host + advisoryFile;
				if(log.isDebugEnabled())
					log.debug("advisory URL:" + advisoryURL);
				advisories.add(advisoryURL);
			}
		}
		
		if(log.isDebugEnabled())
			log.debug("Get centers from advisories...");
		centers = new LinkedList<HurricaneCenter>();
		Iterator iter = advisories.iterator();
		while(iter.hasNext()){
			String advisoryURL = (String)iter.next();
			HurricaneCenter center = new HurricaneForecastAdvisory(advisoryURL).getHurricaneCenter();
			if(log.isDebugEnabled())
				log.debug("\tCenter from public advisory:" + center);
			if(center != null)
				centers.add(center);
		}
		
		return centers;
	}