/* * Copyright (C) 2015 Stichting Akvo (Akvo Foundation) * * This file is part of Akvo FLOW. * * Akvo FLOW is free software: you can redistribute it and modify it under the terms of * the GNU Affero General Public License (AGPL) as published by the Free Software Foundation, * either version 3 of the License or any later version. * * Akvo FLOW is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Affero General Public License included below for more details. * * The full license text can also be seen at <http://www.gnu.org/licenses/agpl.html>. */ package org.akvo.gae.remoteapi; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import com.google.appengine.api.datastore.DatastoreService; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.FetchOptions; import com.google.appengine.api.datastore.Query; import com.google.appengine.api.datastore.Query.Filter; import com.google.appengine.api.datastore.Query.FilterOperator; import com.google.appengine.api.datastore.Query.FilterPredicate; public class InstanceStats implements Process { @SuppressWarnings("unused") @Override public void execute(DatastoreService ds, String[] args) throws Exception { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX"); Date jan1 = df.parse("2014-01-01T23:59:59+00:00"); Date dec31 = df.parse("2014-12-31T23:59:59+00:00"); String instance = args[0]; int chunkSize = 10000; Filter asOfJan = new FilterPredicate("createdDateTime", FilterOperator.LESS_THAN_OR_EQUAL, jan1); Filter asOfDec = new FilterPredicate("createdDateTime", FilterOperator.LESS_THAN_OR_EQUAL, dec31); Query janFI = new Query("SurveyInstance").setFilter(asOfJan).setKeysOnly(); Query decFI = new Query("SurveyInstance").setFilter(asOfDec).setKeysOnly(); long janFICount = 0; long decFICount = 0; for (Entity fi : ds.prepare(janFI).asIterable(FetchOptions.Builder.withChunkSize(chunkSize))) { janFICount++; } for (Entity fi : ds.prepare(decFI).asIterable(FetchOptions.Builder.withChunkSize(chunkSize))) { decFICount++; } Query janDP = new Query("SurveyedLocale").setFilter(asOfJan).setKeysOnly(); Query decDP = new Query("SurveyedLocale").setFilter(asOfDec).setKeysOnly(); long janDPCount = 0; long decDPCount = 0; for (Entity dp : ds.prepare(janDP).asIterable(FetchOptions.Builder.withChunkSize(chunkSize))) { janDPCount++; } for (Entity dp : ds.prepare(decDP).asIterable(FetchOptions.Builder.withChunkSize(chunkSize))) { decDPCount++; } String out = String.format("%s,%s,%s,%s,%s", instance, janFICount, decFICount, janDPCount, decDPCount); System.out.println(out); } }