1 package gnu.text; 2 import java.text.Format ; 3 import java.text.FieldPosition ; 4 import java.io.Writer ; 5 6 public class CompoundFormat extends ReportFormat 7 { 8 protected int length; 9 protected Format [] formats; 10 11 public CompoundFormat(Format [] formats, int length) 12 { 13 this.formats = formats; 14 this.length = length; 15 } 16 17 public CompoundFormat(Format [] formats) 18 { 19 this.formats = formats; 20 this.length = formats.length; 21 } 22 23 public int format(Object [] args, int start, Writer dst, FieldPosition fpos) 24 throws java.io.IOException 25 { 26 for (int i = 0; i < length; i++) 27 { 28 Format fmt = formats[i]; 29 if (fmt instanceof ReportFormat) 30 { 31 start = ((ReportFormat) fmt).format(args, start, dst, fpos); 32 if (start < 0) 33 return start; 34 } 35 else if (start >= args.length) 36 dst.write("#<missing format argument>"); 37 else 38 { 39 StringBuffer sbuf = new StringBuffer (); 40 fmt.format(args[start], sbuf, fpos); 41 dst.write(sbuf.toString()); 42 start++; 43 } 44 } 45 return start; 46 } 47 48 public final int format(Object [] args, int start, 49 StringBuffer sbuf, FieldPosition fpos) 50 { 51 for (int i = 0; i < length; i++) 52 { 53 Format fmt = formats[i]; 54 if (fmt instanceof ReportFormat) 55 { 56 start = ((ReportFormat) fmt).format(args, start, sbuf, fpos); 57 if (start < 0) 58 return start; 59 } 60 else 61 { 62 fmt.format(args[start], sbuf, fpos); 63 start++; 64 } 65 } 66 return start; 67 } 68 69 public Object parseObject(String text, java.text.ParsePosition status) 70 { 71 throw new Error ("CompoundFormat.parseObject - not implemented"); 72 } 73 74 public String toString() 75 { 76 StringBuffer sbuf = new StringBuffer (); 77 sbuf.append("CompoundFormat["); 78 for (int i = 0; i < length; i++) 79 { 80 if (i > 0) 81 sbuf.append(", "); 82 sbuf.append(formats[i]); 83 } 84 sbuf.append("]"); 85 return sbuf.toString(); 86 } 87 88 } 89 | Popular Tags |