1 30 package com.genimen.djeneric.tools.modeler.util; 31 32 import com.genimen.djeneric.language.Messages; 33 import com.genimen.djeneric.repository.DjDomain; 34 import com.genimen.djeneric.repository.DjDomainValue; 35 import com.genimen.djeneric.repository.DjExtent; 36 import com.genimen.djeneric.repository.DjPersistenceManager; 37 import com.genimen.djeneric.repository.DjProperty; 38 import com.genimen.djeneric.repository.DjRelation; 39 import com.genimen.djeneric.util.DjString; 40 41 public class ModelDescriber 42 { 43 private String _description = null; 44 45 public ModelDescriber() 46 { 47 } 48 49 public void describe(DjPersistenceManager mgr) 50 { 51 DjExtent[] extents = mgr.getExtentsSorted(); 52 StringBuffer sb = new StringBuffer (); 53 54 describeDomains(mgr.getDomains(), sb); 55 56 for (int i = 0; i < extents.length; i++) 57 { 58 describeExtent(extents[i], sb); 59 } 60 _description = sb.toString().trim(); 61 } 62 63 public String getDescription() 64 { 65 return _description; 66 } 67 68 protected void describeExtent(DjExtent extent, StringBuffer sb) 69 { 70 String title = Messages.getString("ModelDescriber.Extent", extent.getName()); 71 DjExtent se = extent.getSuper(); 72 while (se != null) 73 { 74 title += "->" + se.getName(); 75 se = se.getSuper(); 76 } 77 78 sb.append("\n" + title + "\n" + DjString.appendToLength("-", "-", title.length()) + "\n"); 79 80 DjProperty[] props = extent.getPropertiesSorted(); 81 for (int i = 0; i < props.length; i++) 82 { 83 sb.append(" "); 84 sb.append(DjString.appendToLength(props[i].getName(), " ", 30)); 85 sb.append(DjString.appendToLength(props[i].isRequired() ? Messages.getString("global.Req") : "", " ", 6)); 86 sb.append(DjString.appendToLength(props[i].getTypeName(), " ", 20)); 87 sb.append(DjString.appendToLength(props[i].getDescription(), " ", 20)); 88 sb.append("\n"); 89 } 90 91 DjRelation[] rels = extent.getDetailRelations(); 92 for (int i = 0; i < rels.length; i++) 93 { 94 if (i == 0) sb.append("\n"); 95 96 sb.append(" "); 97 if (rels[i].isDetailsContained()) sb.append(Messages.getString("ModelDescriber.RelationDescrContains", rels[i] 98 .getMasterExtent().getName(), rels[i].getDetailExtent().getNamePlural(), rels[i].getName())); 99 else sb.append(Messages.getString("ModelDescriber.RelationDescrReferences", rels[i].getMasterExtent().getName(), 100 rels[i].getDetailExtent().getNamePlural(), rels[i].getName())); 101 sb.append("\n"); 102 } 103 sb.append("\n"); 104 } 105 106 protected void describeDomains(DjDomain[] domains, StringBuffer sb) 107 { 108 String title = Messages.getString("ModelDescriber.Domains"); 109 sb.append(title + "\n" + DjString.appendToLength("-", "-", title.length()) + "\n"); 110 for (int i = 0; i < domains.length; i++) 111 { 112 sb.append(DjString.appendToLength(domains[i].getName(), " ", 40)); 113 sb.append(DjString.appendToLength(domains[i].getNativeType(), " ", 20)); 114 115 String lenSpec = String.valueOf(domains[i].getLength()); 116 117 if (domains[i].getTypeCode() == DjDomain.BIGDECIMAL_TYPE) 118 { 119 lenSpec += "," + (domains[i].getDecimals() != 0 ? String.valueOf(domains[i].getDecimals()) : "0"); 120 } 121 122 sb.append(DjString.appendToLength(lenSpec, " ", 7)); 123 sb.append(DjString.appendToLength(domains[i].getFormatMask(), " ", 10)); 124 sb.append("\n"); 125 126 DjDomainValue[] values = domains[i].getValidValues(); 127 for (int j = 0; j < values.length; j++) 128 { 129 String high = ""; 130 String value = ""; 131 if (values[j].getValue() != null) value = values[j].getValue().toString(); 132 if (values[j].getHigh() != null) high = values[j].getHigh().toString(); 133 134 sb.append(" " + DjString.appendToLength(value, " ", 18)); 135 sb.append(DjString.appendToLength(high, " ", 20)); 136 sb.append(values[j].getDescription()); 137 sb.append("\n"); 138 } 139 140 } 141 } 142 } | Popular Tags |