use of com.pratilipi.data.type.BlobEntry in project pratilipi by Pratilipi.
the class AuthorBackupApi method get.
@Get
public GenericResponse get(GetRequest request) throws UnexpectedServerException {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
BlobAccessor blobAccessor = DataAccessorFactory.getBlobAccessorBackup();
Date backupDate = new Date();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateFormat csvDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
DateFormat dateTimeFormat = new SimpleDateFormat("yyyy-MM-dd-HH:mm-z");
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
csvDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
dateTimeFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
StringBuilder backup = new StringBuilder();
StringBuilder csv = new StringBuilder(CSV_HEADER + LINE_SEPARATOR);
int count = 0;
AuthorFilter authorFilter = new AuthorFilter();
String cursor = null;
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new GsonIstDateAdapter()).create();
while (true) {
DataListCursorTuple<Author> authorListCursorTupe = dataAccessor.getAuthorList(authorFilter, cursor, 1000);
List<Author> authorList = authorListCursorTupe.getDataList();
for (Author author : authorList) {
backup.append(gson.toJson(author) + LINE_SEPARATOR);
if (request.generateCsv != null && request.generateCsv)
csv.append("'" + author.getId()).append(CSV_SEPARATOR).append(author.getUserId() == null ? "" : "'" + author.getUserId()).append(CSV_SEPARATOR).append(author.getFirstName() == null ? "" : author.getFirstName()).append(CSV_SEPARATOR).append(author.getLastName() == null ? "" : author.getLastName()).append(CSV_SEPARATOR).append(author.getPenName() == null ? "" : author.getPenName()).append(CSV_SEPARATOR).append(author.getFirstNameEn() == null ? "" : author.getFirstNameEn()).append(CSV_SEPARATOR).append(author.getLastNameEn() == null ? "" : author.getLastNameEn()).append(CSV_SEPARATOR).append(author.getPenNameEn() == null ? "" : author.getPenNameEn()).append(CSV_SEPARATOR).append(author.getLanguage()).append(CSV_SEPARATOR).append(author.getSummary() != null && author.getSummary().trim().length() != 0).append(CSV_SEPARATOR).append(author.getContentPublished()).append(CSV_SEPARATOR).append(csvDateFormat.format(author.getRegistrationDate())).append(LINE_SEPARATOR);
}
count = count + authorList.size();
if (authorList.size() < 1000)
break;
else
cursor = authorListCursorTupe.getCursor();
}
String fileName = "datastore.author/" + dateFormat.format(backupDate) + "/" + "author-" + dateTimeFormat.format(backupDate);
BlobEntry authorBackupEntry = blobAccessor.newBlob(fileName, backup.toString().getBytes(Charset.forName("UTF-8")), "text/plain");
blobAccessor.createOrUpdateBlob(authorBackupEntry);
if (request.generateCsv != null && request.generateCsv) {
BlobEntry authorCsvEntry = blobAccessor.newBlob("datastore/author.csv", csv.toString().getBytes(Charset.forName("UTF-8")), "text/csv");
blobAccessor.createOrUpdateBlob(authorCsvEntry);
}
logger.log(Level.INFO, "Backed up " + count + " Author Entities.");
return new GenericResponse();
}
use of com.pratilipi.data.type.BlobEntry in project pratilipi by Pratilipi.
the class AuthorCoverApi method post.
@Post
public GenericResponse post(PostRequest request) throws InsufficientAccessException, UnexpectedServerException {
BlobEntry blobEntry = DataAccessorFactory.getBlobAccessor().newBlob(request.getName());
blobEntry.setData(request.getData());
blobEntry.setMimeType(request.getMimeType());
blobEntry.setMetaName(request.getName());
String coverImageUrl = AuthorDataUtil.saveAuthorCoverImage(request.authorId, blobEntry);
return new Response(coverImageUrl);
}
use of com.pratilipi.data.type.BlobEntry in project pratilipi by Pratilipi.
the class RtdbAccessorFirebaseImpl method _getUserPreferences.
private Map<Long, UserPreferenceRtdb> _getUserPreferences(Map<String, String> paramsMap) throws UnexpectedServerException {
try {
BlobEntry blobEntry = HttpUtil.doGet(_getUserPreferenceDbUrl(), headersMap, paramsMap);
String jsonStr = new String(blobEntry.getData(), "UTF-8");
JsonObject json = new Gson().fromJson(jsonStr, JsonElement.class).getAsJsonObject();
Map<Long, UserPreferenceRtdb> userPreferenceMap = new HashMap<>();
for (Entry<String, JsonElement> entry : json.entrySet()) userPreferenceMap.put(Long.parseLong(entry.getKey()), _getUserPreferenceRtdb(entry.getValue().getAsJsonObject()));
return userPreferenceMap;
} catch (UnsupportedEncodingException e) {
logger.log(Level.SEVERE, e.getMessage());
throw new UnexpectedServerException();
}
}
use of com.pratilipi.data.type.BlobEntry in project pratilipi by Pratilipi.
the class RtdbAccessorFirebaseImpl method getUserPreference.
// PREFERENCE Table
@Override
public UserPreferenceRtdb getUserPreference(Long userId) throws UnexpectedServerException {
try {
BlobEntry blobEntry = HttpUtil.doGet(_getUserPreferenceDbUrl(userId), headersMap, null);
String jsonStr = new String(blobEntry.getData(), "UTF-8");
return _getUserPreferenceRtdb(jsonStr);
} catch (UnsupportedEncodingException e) {
logger.log(Level.SEVERE, "Failed to parse response from Firebase.", e);
throw new UnexpectedServerException();
}
}
use of com.pratilipi.data.type.BlobEntry in project pratilipi by Pratilipi.
the class DataStoreBackupUtil method csvAuthor.
public static void csvAuthor() throws UnexpectedServerException {
String CSV_HEADER = "AuthorId,UserId," + "FirstName,LastName,PenName,FirstNameEN,LastNameEN,PenNameEN," + "Language,HasSummary,ContentsPublished,FollowCount,RegistrationDate";
String CSV_SEPARATOR = ",";
String LINE_SEPARATOR = "\n";
BlobAccessor blobAccessor = DataAccessorFactory.getBlobAccessorBackup();
DateFormat csvDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
csvDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
StringBuilder csv = new StringBuilder(CSV_HEADER + LINE_SEPARATOR);
int count = 0;
QueryResultIterator<AuthorEntity> itr = ObjectifyService.ofy().cache(false).load().type(AuthorEntity.class).chunk(1000).iterator();
while (itr.hasNext()) {
Author author = itr.next();
csv.append("'" + author.getId()).append(CSV_SEPARATOR).append(author.getUserId() == null ? "" : "'" + author.getUserId()).append(CSV_SEPARATOR).append(author.getFirstName() == null ? "" : author.getFirstName()).append(CSV_SEPARATOR).append(author.getLastName() == null ? "" : author.getLastName()).append(CSV_SEPARATOR).append(author.getPenName() == null ? "" : author.getPenName()).append(CSV_SEPARATOR).append(author.getFirstNameEn() == null ? "" : author.getFirstNameEn()).append(CSV_SEPARATOR).append(author.getLastNameEn() == null ? "" : author.getLastNameEn()).append(CSV_SEPARATOR).append(author.getPenNameEn() == null ? "" : author.getPenNameEn()).append(CSV_SEPARATOR).append(author.getLanguage()).append(CSV_SEPARATOR).append(author.getSummary() != null && author.getSummary().trim().length() != 0).append(CSV_SEPARATOR).append(author.getContentPublished()).append(CSV_SEPARATOR).append(author.getFollowCount()).append(CSV_SEPARATOR).append(csvDateFormat.format(author.getRegistrationDate())).append(LINE_SEPARATOR);
count++;
if (count % 1000 == 0)
System.out.println(count + " ...");
}
System.out.println(count + " ...");
BlobEntry authorCsvEntry = blobAccessor.newBlob("datastore/author.csv", csv.toString().getBytes(Charset.forName("UTF-8")), "text/csv");
blobAccessor.createOrUpdateBlob(authorCsvEntry);
}
Aggregations