/** * Loads an schedule item from a datasource * * @param dataSource the datasource object where to look up the schedule item * @param rowKey the rowkey of the schedule item to retrieve * @return */ public static ScheduleItem load(DataSource dataSource, Schedule schedule, String rowKey) { Table table = dataSource.getTable(ScheduleItem.tableName); Get get = ScheduleItem.fillGetObject(table.createGetObject(rowKey)); Result result = table.get(get); ScheduleItem r = ScheduleItem.fromResultObject(schedule, result); return r; }
/** * time stamps this schedule item in the underlying storage by udpating the content of the column * 'bigs:alive' with the current date only if the existing uuid is the same of this process. * * @param dataSource the datasource object where this schedule item is stored * @return true if the update was successful, false otherwise (if the existing uuid is different, * meaning that somebody else is working on this schedule item) */ public Boolean markAlive(DataSource dataSource) { Table table = dataSource.getTable(ScheduleItem.tableName); Put put = table.createPutObject(this.getRowkey()); this.lastUpdate = new Date(Core.getTime()); put = this.fillPutObject(put); put = Data.fillInHostMetadata(put); Boolean r = table.checkAndPut(this.getRowkey(), "bigs", "uuid", Core.myUUID.getBytes(), put); return r; }
@Override public void run(String[] args) throws Exception { String tableName = args[0]; File destinationDir = new File("."); if (args.length == 2) destinationDir = new File(args[1]); DataSource dataSource = BIGS.globalProperties.getPreparedDataSource(); Table table = dataSource.getTable(tableName); ResultScanner scanner = table.getScan(table.createScanObject()); Result r = null; while ((r = scanner.next()) != null) { File destFile = new File(destinationDir, r.getRowKey()); Log.info("downloading to file " + destFile.getName()); DataItem dataItem = DataItem.fromResult(r); FileOutputStream fstream = new FileOutputStream(destFile); fstream.write(dataItem.asFileContent()); fstream.close(); } }
/** * saves this schedule item in the underlying datasource * * @param dataSource the datasource */ public void save() { DataSource dataSource = BIGS.globalProperties.getPreparedDataSource(); Table table = dataSource.getTable(ScheduleItem.tableName); table.put(Data.fillInHostMetadata(this.fillPutObject(table.createPutObject(this.getRowkey())))); }