public AbstractCubeTable getQueriedTable(String alias) { if (cube != null && cube.getName().equalsIgnoreCase(qb.getTabNameForAlias((alias)))) { return (AbstractCubeTable) cube; } for (Dimension dim : dimensions) { if (dim.getName().equalsIgnoreCase(qb.getTabNameForAlias(alias))) { return dim; } } return null; }
private boolean addJoinChain(String alias, boolean isOptional) throws LensException { boolean retVal = false; String aliasLowerCaseStr = alias.toLowerCase(); JoinChain joinchain = null; if (getCube() != null) { JoinChain chainByName = getCube().getChainByName(aliasLowerCaseStr); if (chainByName != null) { joinchain = chainByName; retVal = true; } } if (!retVal) { for (Dimension table : dimensions) { JoinChain chainByName = table.getChainByName(aliasLowerCaseStr); if (chainByName != null) { joinchain = chainByName; retVal = true; break; } } } if (retVal) { joinchains.put(aliasLowerCaseStr, new JoinChain(joinchain)); String destTable = joinchain.getDestTable(); boolean added = addQueriedTable(alias, destTable, isOptional, true); if (!added) { log.info("Queried tables do not exist. Missing tables:{}", destTable); throw new LensException(LensCubeErrorCode.NEITHER_CUBE_NOR_DIMENSION.getLensErrorInfo()); } log.info("Added join chain for {}", destTable); return true; } return retVal; }
String getQBFromString(CandidateFact fact, Map<Dimension, CandidateDim> dimsToQuery) throws LensException { String fromString; if (getJoinAST() == null) { if (cube != null) { if (dimensions.size() > 0) { throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAILABLE.getLensErrorInfo()); } fromString = fact.getStorageString(getAliasForTableName(cube.getName())); } else { if (dimensions.size() != 1) { throw new LensException(LensCubeErrorCode.NO_JOIN_CONDITION_AVAILABLE.getLensErrorInfo()); } Dimension dim = dimensions.iterator().next(); fromString = dimsToQuery.get(dim).getStorageString(getAliasForTableName(dim.getName())); } } else { StringBuilder builder = new StringBuilder(); getQLString(qb.getQbJoinTree(), builder, fact, dimsToQuery); fromString = builder.toString(); } return fromString; }