/** Get the number of hashtag occurrences in the given time bucket. */ protected long getTagTimeCount(String hashtag, BucketType timeBucketType, DateTime dateTime) throws IOException, InterruptedException { Optional<LongOp> optCount = dataCubeIo.get( new ReadBuilder(dataCube) .at(tagsDimension, hashtag) .at(timeDimension, timeBucketType, dateTime)); return unpackOrZero(optCount); }
/** Get the number of times that retweeterUser retweeted a tweet by sourceUser. */ public long getRetweetsOfBy(String sourceUser, String retweeterUser) throws IOException, InterruptedException { Optional<LongOp> optCount = dataCubeIo.get( new ReadBuilder(dataCube) .at(retweetedFromDimension, sourceUser) .at(userDimension, retweeterUser)); return unpackOrZero(optCount); }
/** Get the number of tweets sent by the given user on the given day. */ public long getUserDayCount(String userName, DateTime day) throws InterruptedException, IOException { Optional<LongOp> optCount = dataCubeIo.get( new ReadBuilder(dataCube) .at(userDimension, userName) .at(timeDimension, HourDayMonthBucketer.days, day)); return unpackOrZero(optCount); }
/** * Do all the increments necessary to add a tweet to the datacube. May not immediately flush to * the DB. */ public void countTweet(Tweet tweet) throws IOException, InterruptedException, AsyncException { WriteBuilder writeBuilder = new WriteBuilder(dataCube) .at(timeDimension, tweet.time) .at(userDimension, tweet.username) .at(retweetedFromDimension, tweet.retweetedFrom.or("")) .at(tagsDimension, tweet.hashTags); Batch<LongOp> cubeUpdates = dataCube.getWrites(writeBuilder, new LongOp(1)); dataCubeIo.writeAsync(cubeUpdates); }
/** Write all batched/cached changes to the backing database. */ public void flush() throws InterruptedException { dataCubeIo.flush(); }
/** Get the number of tweets that included the given hashtag. */ public long getTagCount(String hashtag) throws IOException, InterruptedException { Optional<LongOp> optCount = dataCubeIo.get(new ReadBuilder(dataCube).at(tagsDimension, hashtag)); return unpackOrZero(optCount); }
/** Get the total number of tweets sent by the given user. */ public long getUserCount(String userName) throws InterruptedException, IOException { Optional<LongOp> optCount = dataCubeIo.get(new ReadBuilder(dataCube).at(userDimension, userName)); return unpackOrZero(optCount); }
/** Get the total number of tweets. */ public long getCount() throws InterruptedException, IOException { return dataCubeIo.get(new ReadBuilder(dataCube)).or(new LongOp(0)).getLong(); }