use of com.google.api.ads.admanager.axis.v202111.TimeSeries in project googleads-java-lib by googleads.
the class GetTrafficData method runExample.
/**
* Runs the example.
*
* @param adManagerServices the services factory.
* @param session the session.
* @param advertiserId the ID of the advertiser (company) to forecast for. Setting an advertiser
* will cause the forecast to apply the appropriate unified blocking rules.
* @throws ApiException if the API request failed with one or more service errors.
* @throws RemoteException if the API request failed due to other errors.
*/
public static void runExample(AdManagerServices adManagerServices, AdManagerSession session) throws RemoteException {
// Get the ForecastService.
ForecastServiceInterface forecastService = adManagerServices.get(session, ForecastServiceInterface.class);
// Get the NetworkService.
NetworkServiceInterface networkService = adManagerServices.get(session, NetworkServiceInterface.class);
// Get the root ad unit ID used to target the whole site.
String rootAdUnitId = networkService.getCurrentNetwork().getEffectiveRootAdUnitId();
// Create inventory targeting.
InventoryTargeting inventoryTargeting = new InventoryTargeting();
// Create ad unit targeting for the root ad unit.
AdUnitTargeting adUnitTargeting = new AdUnitTargeting();
adUnitTargeting.setAdUnitId(rootAdUnitId);
adUnitTargeting.setIncludeDescendants(true);
inventoryTargeting.setTargetedAdUnits(new AdUnitTargeting[] { adUnitTargeting });
// Create targeting.
Targeting targeting = new Targeting();
targeting.setInventoryTargeting(inventoryTargeting);
// Create the date range. Include the previous and next 7 days.
Interval interval = new Interval(Instant.now().plus(Duration.standardDays(-7)), Instant.now().plus(Duration.standardDays(7)));
DateRange dateRange = new DateRange();
dateRange.setStartDate(DateTimes.toDateTime(interval.getStart()).getDate());
dateRange.setEndDate(DateTimes.toDateTime(interval.getEnd()).getDate());
// Request the traffic data.
TrafficDataRequest trafficDataRequest = new TrafficDataRequest();
trafficDataRequest.setRequestedDateRange(dateRange);
trafficDataRequest.setTargeting(targeting);
TrafficDataResponse trafficData = forecastService.getTrafficData(trafficDataRequest);
// Read the historical traffic data.
TimeSeries historicalTimeSeries = trafficData.getHistoricalTimeSeries();
if (historicalTimeSeries != null) {
Date historicalStartDate = historicalTimeSeries.getTimeSeriesDateRange().getStartDate();
DateTime historicalStart = new DateTime(historicalStartDate.getYear(), historicalStartDate.getMonth(), historicalStartDate.getDay(), 0, 0, 0);
for (int i = 0; i < historicalTimeSeries.getValues().length; i++) {
System.out.printf("%s: %d historical ad opportunities%n", historicalStart.plus(Duration.standardDays(i)).toString(DateTimeFormat.longDate()), historicalTimeSeries.getValues()[i]);
}
}
// Read the forecasted traffic data.
TimeSeries forecastedTimeSeries = trafficData.getForecastedTimeSeries();
if (forecastedTimeSeries != null) {
Date forecastedStartDate = forecastedTimeSeries.getTimeSeriesDateRange().getStartDate();
DateTime forecastedStart = new DateTime(forecastedStartDate.getYear(), forecastedStartDate.getMonth(), forecastedStartDate.getDay(), 0, 0, 0);
for (int i = 0; i < forecastedTimeSeries.getValues().length; i++) {
System.out.printf("%s: %d forecasted ad opportunities%n", forecastedStart.plus(Duration.standardDays(i)).toString(DateTimeFormat.longDate()), forecastedTimeSeries.getValues()[i]);
}
}
}
use of com.google.api.ads.admanager.axis.v202111.TimeSeries in project spf4j by zolyfarkas.
the class TSDBTailerTest method main.
public static void main(final String[] parameters) throws IOException {
final MutableHolder<Integer> counter = new MutableHolder<>(0);
TimeSeriesDatabase tsdb = new TimeSeriesDatabase(new File(parameters[0]));
tsdb.tail(10, 0, new TSDataHandler() {
private int count = 0;
@Override
public void newTable(final String tableName, final String[] columnNames) {
LOG.info("New Table: {} columns: {}", tableName, columnNames);
}
@Override
public void newData(final String tableName, final TimeSeries data) {
LOG.debug("Table {} - {}", tableName, data);
counter.setValue(counter.getValue() + data.getTimeStamps().length);
}
@Override
public boolean finish() {
return count++ > 400;
}
});
System.exit(counter.getValue());
}
use of com.google.api.ads.admanager.axis.v202111.TimeSeries in project spf4j by zolyfarkas.
the class TimeSeriesDatabaseTest method testWriteTSDB.
/**
* Test of close method, of class TimeSeriesDatabase.
*/
@Test
public void testWriteTSDB() throws Exception {
if (new File(FILE_NAME).delete()) {
LOG.debug("existing tsdb {} file deleted", FILE_NAME);
}
try (TimeSeriesDatabase instance = new TimeSeriesDatabase(new File(FILE_NAME), new byte[] {})) {
instance.addTSTable("gr1", new byte[] {}, 5, new String[] { "a", "b" }, new byte[][] {});
instance.write(System.currentTimeMillis(), "gr1", new long[] { 0, 1 });
Thread.sleep(5);
instance.write(System.currentTimeMillis(), "gr1", new long[] { 1, 2 });
Thread.sleep(5);
instance.write(System.currentTimeMillis(), "gr1", new long[] { 3, 4 });
Thread.sleep(5);
instance.addTSTable("gr2", new byte[] {}, 5, new String[] { "a", "b" }, new byte[][] {});
instance.write(System.currentTimeMillis(), "gr2", new long[] { 7, 8 });
instance.flush();
instance.addTSTable("gr3", new byte[] {}, 5, new String[] { "a", "b" }, new byte[][] {});
instance.write(System.currentTimeMillis(), "gr3", new long[] { 7, 8 });
Thread.sleep(5);
instance.write(System.currentTimeMillis(), "gr3", new long[] { 9, 10 });
instance.flush();
LOG.debug("TSTables = {}", instance.getTSTables());
TimeSeries readAll = instance.readAll("gr1");
Assert.assertEquals(2, readAll.getValues()[1][1]);
LOG.debug("TimeSeries = {}", readAll);
readAll = instance.readAll("gr2");
Assert.assertEquals(7, readAll.getValues()[0][0]);
LOG.debug("TimeSeries = {}", readAll);
readAll = instance.readAll("gr3");
Assert.assertEquals(10, readAll.getValues()[1][1]);
LOG.debug("TimeSeries = {}", readAll);
}
TimeSeriesDatabase instanceRead = new TimeSeriesDatabase(new File(FILE_NAME), null);
Collection<TSTable> tsTables = instanceRead.getTSTables();
LOG.debug("Tables = {}", tsTables);
Assert.assertEquals(3, tsTables.size());
instanceRead.writeCsvTable("gr1", File.createTempFile("test", ".csv"));
instanceRead.writeCsvTables(Arrays.asList("gr1", "gr2", "gr3"), File.createTempFile("testAll", ".csv"));
}
use of com.google.api.ads.admanager.axis.v202111.TimeSeries in project spf4j by zolyfarkas.
the class TimeSeriesDatabase method createJFreeCharts.
public List<JFreeChart> createJFreeCharts(final String tableName, final long startTime, final long endTime) throws IOException {
TSTable info = this.getTSTable(tableName);
TimeSeries data = this.read(tableName, startTime, endTime);
return createJFreeCharts(data, info);
}
use of com.google.api.ads.admanager.axis.v202111.TimeSeries in project spf4j by zolyfarkas.
the class TimeSeriesDatabase method read.
/**
* Read measurements from table.
*
* @param tableName
* @param startTime start time including
* @param endTime end time including
* @return
* @throws IOException
*/
private TimeSeries read(final long startTime, final long endTime, final long startAtFragment, final long endAtFragment, final boolean skipFirst) throws IOException {
synchronized (path) {
TLongArrayList timeStamps = new TLongArrayList();
List<long[]> data = new ArrayList<>();
if (startAtFragment > 0) {
FileLock lock = ch.lock(0, Long.MAX_VALUE, true);
try {
DataFragment frag;
long nextFragmentLocation = startAtFragment;
boolean last = false;
boolean psFirst = skipFirst;
do {
if (nextFragmentLocation == endAtFragment) {
last = true;
}
file.seek(nextFragmentLocation);
frag = new DataFragment(file);
if (psFirst) {
psFirst = false;
} else {
long fragStartTime = frag.getStartTimeMillis();
if (fragStartTime >= startTime) {
TIntArrayList fragTimestamps = frag.getTimestamps();
int nr = 0;
for (int i = 0; i < fragTimestamps.size(); i++) {
long ts = fragStartTime + fragTimestamps.get(i);
if (ts <= endTime) {
timeStamps.add(ts);
nr++;
} else {
break;
}
}
int i = 0;
for (long[] d : frag.getData()) {
if (i < nr) {
data.add(d);
} else {
break;
}
nr++;
}
if (fragTimestamps.size() > nr) {
break;
}
}
}
nextFragmentLocation = frag.getNextDataFragment();
} while (nextFragmentLocation > 0 && !last);
} catch (IOException | RuntimeException e) {
try {
lock.release();
throw e;
} catch (IOException ex) {
ex.addSuppressed(e);
throw ex;
}
}
lock.release();
}
return new TimeSeries(timeStamps.toArray(), data.toArray(new long[data.size()][]));
}
}
Aggregations