public XFact getXFactTable(String tableName) throws LensException { return getXFactTable(getFactTable(tableName)); }
@Override public XFact getFactTable(LensSessionHandle sessionid, String fact) throws LensException { try (SessionContext ignored = new SessionContext(sessionid)){ return getClient(sessionid).getXFactTable(fact); } }
try(BufferedWriter bw = new BufferedWriter(new FileWriter(getClass() .getResource("/schema/facts").getPath()+"/"+cubeFactTable.getName()+".xml"))) { bw.write(ToXMLString.toString(client.getXFactTable(cubeFactTable)));
public XFact getXFactTable(FactTable ft) throws LensException { XFact fact; if (ft.isVirtualFact()) { CubeVirtualFactTable cvft = (CubeVirtualFactTable) ft; XVirtualFactTable factTable = JAXBUtils.virtualFactTableFromVirtualCubeFactTable(cvft); factTable.setSourceFactName(cvft.getSourceCubeFactTable().getName()); fact = factTable; } else { CubeFactTable cft = (CubeFactTable) ft; XFactTable factTable = JAXBUtils.factTableFromCubeFactTable(cft); Map<String, Map<UpdatePeriod, String>> storageMap = cft.getStoragePrefixUpdatePeriodMap(); for (String storageName : cft.getStorages()) { Set<UpdatePeriod> updatePeriods = cft.getUpdatePeriods().get(storageName); // This map tells if there are different tables for different update period. Map<UpdatePeriod, String> updatePeriodToTableMap = storageMap.get(storageName); Set<String> tableNames = new HashSet<>(); for (UpdatePeriod updatePeriod : updatePeriods) { tableNames.add(updatePeriodToTableMap.get(updatePeriod)); } if (tableNames.size() <= 1) { XStorageTableElement tblElement = JAXBUtils.getXStorageTableFromHiveTable( getHiveTable(MetastoreUtil.getFactOrDimtableStorageTableName(cft.getName(), storageName))); tblElement.setStorageName(storageName); for (UpdatePeriod p : updatePeriods) { tblElement.getUpdatePeriods().getUpdatePeriod().add(XUpdatePeriod.valueOf(p.name())); } factTable.getStorageTables().getStorageTable().add(tblElement); } else { // Multiple storage tables.