1 23 24 package org.continuent.sequoia.common.sql.metadata; 25 26 import java.util.HashMap ; 27 import java.util.Iterator ; 28 29 import org.continuent.sequoia.common.log.Trace; 30 31 40 public final class MetadataContainer extends HashMap 41 { 42 private static final long serialVersionUID = 564436668119294938L; 43 44 private final String line = System 45 .getProperty("line.separator"); 46 private String url; 47 48 53 public MetadataContainer(String url) 54 { 55 this.url = url; 56 } 57 58 66 public boolean isCompatible(MetadataContainer container, Trace logger) 67 { 68 if (keySet() == null) 69 return container.keySet() == null; 70 Iterator keys = keySet().iterator(); 71 boolean isCompatible = true; 72 String key; 73 Object value1; 74 Object value2; 75 String log; 76 while (keys.hasNext()) 77 { 78 key = (String ) keys.next(); 79 value1 = get(key); 80 value2 = container.get(key); 81 if (!value1.equals(value2)) 82 { 83 isCompatible = false; 84 log = "Metadata key [" + key + "] is not compatible. (Backends are: [" 85 + url + "] and [" + container.getUrl() + "] ; Values are:[" 86 + value1 + "] and [" + value2 + "])"; 87 if (logger != null) 88 logger.warn(log); 89 else 90 System.err.println(log); 91 } 92 } 93 return isCompatible; 94 } 95 96 99 public String toString() 100 { 101 if (keySet() == null) 102 return "no metadata"; 103 StringBuffer buffer = new StringBuffer (); 104 Iterator keys = keySet().iterator(); 105 String element; 106 while (keys.hasNext()) 107 { 108 element = (String ) keys.next(); 109 buffer.append(element + " : " + this.get(element) + line); 110 } 111 return buffer.toString(); 112 } 113 114 119 public String getUrl() 120 { 121 return url; 122 } 123 124 133 public static String getContainerKey(String methodName, 134 Class [] parametersType, Object [] arguments) 135 { 136 if (parametersType == null) 137 { return methodName; 139 } 140 else 141 { StringBuffer key = new StringBuffer (methodName); 143 key.append('('); 144 for (int i = 0; i < parametersType.length; i++) 145 { 146 Class c = parametersType[i]; 147 if (c != null) 148 key.append(c.getName()); 149 else 150 key.append("null"); 151 key.append('='); 152 Object arg = arguments[i]; 153 if (arg != null) 154 key.append(arg.toString()); 155 else 156 key.append("null"); 157 key.append(','); 158 } 159 key.setCharAt(key.length() - 1, ')'); 161 return key.toString(); 162 } 163 } 164 } | Popular Tags |