/** * Checks in table params if desired implementing class is given. Otherwise by default returns instance of {@link * org.apache.lens.cube.metadata.timeline.EndsAndHolesPartitionTimeline}. * * @param client * @param storageTable * @param updatePeriod * @param partitionColumn * @return */ public static PartitionTimeline get(CubeMetastoreClient client, String storageTable, UpdatePeriod updatePeriod, String partitionColumn) { try { String storageClassName = client.getTable(storageTable).getParameters().get( MetastoreUtil.getPartitionTimelineStorageClassKey( updatePeriod, partitionColumn)); Class<? extends PartitionTimeline> clz = (Class<? extends PartitionTimeline>) Class.forName(storageClassName); Constructor<? extends PartitionTimeline> constructor = clz.getConstructor( String.class, UpdatePeriod.class, String.class); return constructor.newInstance( storageTable, updatePeriod, partitionColumn); } catch (Exception e) { return new EndsAndHolesPartitionTimeline(storageTable, updatePeriod, partitionColumn); } } }
/** * Checks in table params if desired implementing class is given. Otherwise by default returns instance of {@link * org.apache.lens.cube.metadata.timeline.EndsAndHolesPartitionTimeline}. * * @param client * @param storageTable * @param updatePeriod * @param partitionColumn * @return */ public static PartitionTimeline get(CubeMetastoreClient client, String storageTable, UpdatePeriod updatePeriod, String partitionColumn) { try { String storageClassName = client.getTable(storageTable).getParameters().get( MetastoreUtil.getPartitionTimelineStorageClassKey( updatePeriod, partitionColumn)); Class<? extends PartitionTimeline> clz = (Class<? extends PartitionTimeline>) Class.forName(storageClassName); Constructor<? extends PartitionTimeline> constructor = clz.getConstructor( String.class, UpdatePeriod.class, String.class); return constructor.newInstance( storageTable, updatePeriod, partitionColumn); } catch (Exception e) { return new EndsAndHolesPartitionTimeline(storageTable, updatePeriod, partitionColumn); } } }
assertTimeline(client, fact.getName(), storageName, MINUTELY, p, EndsAndHolesPartitionTimeline.class); for (UpdatePeriod up : Arrays.asList(DAILY, HOURLY)) { EndsAndHolesPartitionTimeline timeline = new EndsAndHolesPartitionTimeline(storageTableName, up, p); timeline.setFirst(TimePartition.of(up, times.get(p).get(up).first())); timeline.setLatest(TimePartition.of(up, times.get(p).get(up).last()));