package output.print; import citation.data.Citation; public class TextPrinter implements CitationPrinter { private int citation_hash; public int numPagesToPrint(Citation cite) { return 1;//how many should we return for a string print? } public String PrintPreview(Citation cite) { if(citation_hash==0||citation_hash!=cite.hashCode()) { build_temp_Citation_storage(cite); Citation_Hash(cite); } return (String) temp_Citation_formated_output_storage; } public boolean Print(Citation cite) { if(citation_hash==0||citation_hash!=cite.hashCode()) { build_temp_Citation_storage(cite); Citation_Hash(cite); System.out.println(temp_Citation_formated_output_storage); return false; } System.out.println(temp_Citation_formated_output_storage); return true; } public boolean connectToPrinter(String PrinterLocation) { return true; } private void Citation_Hash(Citation cite) { citation_hash=cite.hashCode(); } private void build_temp_Citation_storage(Citation cite)//Gets built once for, used to query pages, print, or return print previews as needed. { temp_Citation_formated_output_storage= cite.toPrettyString(); } private Object temp_Citation_formated_output_storage;//store temp as something, probably postcipt or image, regenerate if Citation_Hash of the citation changes(meaning the citation changes). }