1 20 21 22 package org.snmp4j.agent.mo; 23 24 import org.snmp4j.agent.*; 25 import org.snmp4j.smi.*; 26 import java.util.Map ; 27 import org.snmp4j.agent.mo.snmp.tc.TextualConvention; 28 import java.util.HashMap ; 29 import org.snmp4j.agent.mo.snmp.SNMPv2TC; 30 import java.util.*; 31 32 41 public class DefaultMOFactory implements MOFactory { 42 43 private Map textualConventions = new HashMap (); 44 45 private static MOFactory instance; 46 47 protected DefaultMOFactory() { 48 } 49 50 57 public static MOFactory getInstance() { 58 if (instance == null) { 59 instance = new DefaultMOFactory(); 60 addSNMPv2TCs(instance); 61 } 62 return instance; 63 } 64 65 70 public static void setInstance(MOFactory factory) { 71 instance = factory; 72 } 73 74 80 public static void addSNMPv2TCs(MOFactory factory) { 81 Collection tcs = new SNMPv2TC().getTextualConventions(); 82 for (Iterator it = tcs.iterator(); it.hasNext(); ) { 83 TextualConvention tc = (TextualConvention) it.next(); 84 factory.addTextualConvention(tc); 85 } 86 } 87 88 protected Map getTextualConventions() { 89 return textualConventions; 90 } 91 92 99 public synchronized void addTextualConvention(TextualConvention tc) { 100 Map tcMap = (Map ) textualConventions.get(tc.getModuleName()); 101 if (tcMap == null) { 102 tcMap = new HashMap (10); 103 textualConventions.put(tc.getModuleName(), tcMap); 104 } 105 tcMap.put(tc.getName(), tc); 106 } 107 108 public synchronized void removeTextualConvention(TextualConvention tc) { 109 Map tcMap = (Map ) textualConventions.get(tc.getModuleName()); 110 if (tcMap != null) { 111 tcMap.remove(tc.getName()); 112 if (tcMap.isEmpty()) { 113 textualConventions.remove(tc.getModuleName()); 114 } 115 } 116 } 117 118 public synchronized TextualConvention 119 getTextualConvention(String moduleName, String name) { 120 Map tcMap = (Map ) textualConventions.get(moduleName); 121 if (tcMap != null) { 122 return (TextualConvention) tcMap.get(name); 123 } 124 return null; 125 } 126 127 public MOColumn createColumn(int columnID, int syntax, MOAccess access) { 128 return new MOMutableColumn(columnID, syntax, access); 129 } 130 131 public MOColumn createColumn(int columnID, int syntax, MOAccess access, 132 Variable defaultValue, boolean mutableInService) { 133 return new MOMutableColumn(columnID, syntax, access, 134 defaultValue, mutableInService); 135 } 136 137 public MOTableRelation createTableRelation(MOTable baseTable, 138 MOTable dependentTable) { 139 return new MOTableRelation(baseTable, dependentTable); 140 } 141 142 public MOTableRow createRow(OID index, Variable[] values) throws 143 UnsupportedOperationException { 144 return new DefaultMOMutableRow2PC(index, values); 145 } 146 147 public MOScalar createScalar(OID id, MOAccess access, Variable value) { 148 return new MOScalar(id, access, value); 149 } 150 151 public MOTable createTable(OID oid, MOTableIndex indexDef, MOColumn[] columns) { 152 return new DefaultMOTable(oid, indexDef, columns, 153 createTableModel(oid, indexDef, columns)); 154 } 155 156 public MOTable createTable(OID oid, MOTableIndex indexDef, MOColumn[] columns, 157 MOTableModel model) { 158 return new DefaultMOTable(oid, indexDef, columns, model); 159 } 160 161 public MOTableModel createTableModel(OID tableOID, 162 MOTableIndex indexDef, 163 MOColumn[] columns) { 164 return new DefaultMOMutableTableModel(); 165 } 166 167 public void freeRow(MOTableRow row) { 168 } 169 170 public MOTableIndex createIndex(MOTableSubIndex[] subIndexes, 171 boolean impliedLength) { 172 return new MOTableIndex(subIndexes, impliedLength); 173 } 174 175 public MOTableSubIndex createSubIndex(int smiSyntax) { 176 return new MOTableSubIndex(smiSyntax); 177 } 178 179 public MOTableSubIndex createSubIndex(OID oid, int smiSyntax) { 180 return new MOTableSubIndex(oid, smiSyntax); 181 } 182 183 public MOTableSubIndex createSubIndex(int smiSyntax, int minLength, 184 int maxLength) { 185 return new MOTableSubIndex(smiSyntax, minLength, maxLength); 186 } 187 188 public MOTableSubIndex createSubIndex(OID oid, int smiSyntax, int minLength, 189 int maxLength) { 190 return new MOTableSubIndex(oid, smiSyntax, minLength, maxLength); 191 } 192 193 public MOTableIndex createIndex(MOTableSubIndex[] subIndexes, 194 boolean impliedLength, 195 MOTableIndexValidator validator) { 196 return new MOTableIndex(subIndexes, impliedLength, validator); 197 } 198 199 public MOColumn createColumn(int columnID, int syntax, MOAccess access, 200 String tcModuleName, String textualConvention) { 201 TextualConvention tc = 202 getTextualConvention(tcModuleName, textualConvention); 203 if (tc != null) { 204 return tc.createColumn(columnID, syntax, access, null, true); 205 } 206 return createColumn(columnID, syntax, access); 207 } 208 209 public MOColumn createColumn(int columnID, int syntax, MOAccess access, 210 Variable defaultValue, boolean mutableInService, 211 String tcModuleName, String textualConvention) { 212 TextualConvention tc = 213 getTextualConvention(tcModuleName, textualConvention); 214 if (tc != null) { 215 return tc.createColumn(columnID, syntax, access, 216 defaultValue, mutableInService); 217 } 218 return createColumn(columnID, syntax, access, 219 defaultValue, mutableInService); 220 } 221 222 public MOScalar createScalar(OID id, MOAccess access, Variable value, 223 String tcModuleName, String textualConvention) { 224 TextualConvention tc = 225 getTextualConvention(tcModuleName, textualConvention); 226 if (tc != null) { 227 return tc.createScalar(id, access, value); 228 } 229 return createScalar(id, access, value); 230 } 231 232 public MOAccess createAccess(int moAccess) { 233 return MOAccessImpl.getInstance(moAccess); 234 } 235 236 } 237 | Popular Tags |