1 13 14 package mondrian.olap; 15 16 import mondrian.resource.MondrianResource; 17 18 import org.apache.log4j.Logger; 19 20 28 public abstract class ConnectionBase implements Connection { 29 30 public static void memoryUsageNotification(Query query, String msg) { 31 query.setOutOfMemory(msg); 32 } 33 34 protected ConnectionBase() { 35 } 36 37 protected abstract Logger getLogger(); 38 39 40 public String getFullConnectString() { 41 String s = getConnectString(); 42 String catalogName = getCatalogName(); 43 if (catalogName != null) { 44 int len = s.length() + catalogName.length() + 32; 45 StringBuilder buf = new StringBuilder (len); 46 buf.append(s); 47 if (!s.endsWith(";")) { 48 buf.append(';'); 49 } 50 buf.append("Initial Catalog="); 51 buf.append(catalogName); 52 buf.append(';'); 53 s = buf.toString(); 54 } 55 return s; 56 } 57 58 public Query parseQuery(String s) { 59 return parseQuery(s, false); 60 } 61 62 public Query parseQuery(String s, boolean load) { 63 boolean debug = false; 64 if (getLogger().isDebugEnabled()) { 65 StringBuilder buf = new StringBuilder (256); 67 buf.append(Util.nl); 68 buf.append(s); 69 getLogger().debug(buf.toString()); 70 } 71 try { 72 Parser parser = new Parser(); 73 final FunTable funTable = getSchema().getFunTable(); 74 Query q = parser.parseInternal(this, s, debug, funTable, load); 75 return q; 76 } catch (Throwable e) { 77 throw MondrianResource.instance().FailedToParseQuery.ex(s, e); 78 } 79 } 80 81 public Exp parseExpression(String s) { 82 boolean debug = false; 83 if (getLogger().isDebugEnabled()) { 84 StringBuilder buf = new StringBuilder (256); 86 buf.append(Util.nl); 87 buf.append(s); 88 getLogger().debug(buf.toString()); 89 } 90 try { 91 Parser parser = new Parser(); 92 final FunTable funTable = getSchema().getFunTable(); 93 Exp q = parser.parseExpression(this, s, debug, funTable); 94 return q; 95 } catch (Throwable e) { 96 throw MondrianResource.instance().FailedToParseQuery.ex(s, e); 97 } 98 } 99 } 100 101 | Popular Tags |