use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.
the class UserBackupApi method get.
@Get
public GenericResponse get(GetRequest request) throws UnexpectedServerException {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
BlobAccessor blobAccessor = DataAccessorFactory.getBlobAccessorBackup();
Date backupDate = new Date();
DateFormat yearFormat = new SimpleDateFormat("yyyy");
DateFormat dayFormat = new SimpleDateFormat("dd");
DateFormat hourFormat = new SimpleDateFormat("HH");
DateFormat csvDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
yearFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
dayFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
hourFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
csvDateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata"));
StringBuilder backup = new StringBuilder();
StringBuilder csv = new StringBuilder(CSV_HEADER + LINE_SEPARATOR);
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new GsonLongDateAdapter()).create();
int batchSize = 1000;
String cursor = null;
int count = 0;
while (true) {
DataListCursorTuple<User> userListCursorTupe = dataAccessor.getUserList(cursor, batchSize);
List<User> userList = userListCursorTupe.getDataList();
for (User user : userList) {
backup.append(gson.toJson(user) + LINE_SEPARATOR);
if (request.generateCsv())
csv.append("'" + user.getId().toString()).append(CSV_SEPARATOR).append(user.getFacebookId() == null ? "" : "'" + user.getFacebookId()).append(CSV_SEPARATOR).append(user.getEmail() == null ? "" : user.getEmail()).append(CSV_SEPARATOR).append(csvDateFormat.format(user.getSignUpDate())).append(LINE_SEPARATOR);
}
count = count + userList.size();
if (userList.size() < batchSize)
break;
else
cursor = userListCursorTupe.getCursor();
}
String year = yearFormat.format(backupDate);
String day = dayFormat.format(backupDate);
String hour = hourFormat.format(backupDate);
String fileName = "datastore.user/" + year + "-mm-" + day + "/" + "user-" + year + "-mm-" + day + "-" + hour + ":xx-IST";
BlobEntry userBackupEntry = blobAccessor.newBlob(fileName, backup.toString().getBytes(Charset.forName("UTF-8")), "text/plain");
blobAccessor.createOrUpdateBlob(userBackupEntry);
if (request.generateCsv()) {
BlobEntry userCsvEntry = blobAccessor.newBlob("datastore/user.csv", csv.toString().getBytes(Charset.forName("UTF-8")), "text/csv");
blobAccessor.createOrUpdateBlob(userCsvEntry);
}
logger.log(Level.INFO, "Backed up " + count + " User Entities.");
return new GenericResponse();
}
use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.
the class BatchProcessApi method get.
@Get
public GenericResponse get(GenericRequest request) throws UnexpectedServerException {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
List<BatchProcess> batchProcessList = dataAccessor.getIncompleteBatchProcessList();
for (BatchProcess batchProcess : batchProcessList) if (BatchProcessDataUtil.exec(batchProcess.getId()))
// Only one execution per iteration as next BatchProcess' state might change by the time it is picked up.
break;
return new GenericResponse();
}
use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.
the class AuthorProcessApi method get.
@Get
public GenericResponse get(GenericRequest request) {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
// Fetching AppProperty
String appPropertyId = "Api.AuthorProcess.ValidateData";
AppProperty appProperty = dataAccessor.getAppProperty(appPropertyId);
if (appProperty == null) {
appProperty = dataAccessor.newAppProperty(appPropertyId);
appProperty.setValue(new Date(0));
}
// Fetching list of author ids.
AuthorFilter authorFilter = new AuthorFilter();
authorFilter.setMinLastUpdate((Date) appProperty.getValue(), false);
List<Long> authorIdList = dataAccessor.getAuthorIdList(authorFilter, null, 10000).getDataList();
// Creating one task per author id.
List<Task> taskList = new ArrayList<>(authorIdList.size());
for (Long authorId : authorIdList) {
Task task = TaskQueueFactory.newTask().setUrl("/author/process").addParam("authorId", authorId.toString()).addParam("validateData", "true");
taskList.add(task);
}
TaskQueueFactory.getAuthorOfflineTaskQueue().addAll(taskList);
logger.log(Level.INFO, "Added " + taskList.size() + " tasks.");
// Updating AppProperty.
if (authorIdList.size() > 0) {
appProperty.setValue(dataAccessor.getAuthor(authorIdList.get(authorIdList.size() - 1)).getLastUpdated());
appProperty = dataAccessor.createOrUpdateAppProperty(appProperty);
}
return new GenericResponse();
}
use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.
the class BlogPostApi method get.
@Get
public Response get(GetRequest request) {
DataAccessor dataAccessor = DataAccessorFactory.getDataAccessor();
BlogPost blogPost = dataAccessor.getBlogPost(request.blogPostId);
BlogPostData blogPostData = BlogPostDataUtil.createBlogPostData(blogPost);
return new Response(blogPostData);
}
use of com.pratilipi.api.annotation.Get in project pratilipi by Pratilipi.
the class BlogPostListApi method get.
@Get
public Response get(GetRequest request) throws InsufficientAccessException {
BlogPostFilter blogPostFilter = new BlogPostFilter();
blogPostFilter.setBlogId(request.blogId);
blogPostFilter.setLanguage(request.language);
blogPostFilter.setState(request.state);
DataListCursorTuple<BlogPostData> blogPostDataListCursorTuple = BlogPostDataUtil.getBlogPostDataList(blogPostFilter, request.cursor, 0, request.resultCount == null ? 10 : request.resultCount);
return new Response(blogPostDataListCursorTuple.getDataList(), blogPostDataListCursorTuple.getCursor());
}
Aggregations