Skip to content

Instantly share code, notes, and snippets.

@mgcm
Created January 3, 2017 13:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mgcm/dd9115eb76db16422c040c8e605558a7 to your computer and use it in GitHub Desktop.
Save mgcm/dd9115eb76db16422c040c8e605558a7 to your computer and use it in GitHub Desktop.
Translation Helper Utility
package com.unhcr.unhcr.utils;
import android.app.Activity;
import android.support.v4.app.Fragment;
import com.parse.FindCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.unhcr.unhcr.background.HelpBackground;
import com.unhcr.unhcr.background.OrganizationBackground;
import com.unhcr.unhcr.background.NotesBackground;
import com.unhcr.unhcr.helper.Manager;
import com.unhcr.unhcr.models.Help;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
//
// Translation.java
// Salam
//
// Created by Fábio Carvalho
// Copyright © 2016 Tetrapi. All rights reserved.
//
class Translation {
private Activity activity;
private Manager manager;
Translation(Activity activity) {
this.activity = activity;
this.manager = new Manager(activity);
}
void getHelpTranslation(final Fragment fragment, final List<ParseObject> objects) {
ArrayList<String> queryClasses = new ArrayList<>();
queryClasses.add("HelpItem");
queryClasses.add("HelpCategory");
ParseQuery<ParseObject> query = new ParseQuery<>("Translation");
query.whereContainedIn("sourceObjectClass", queryClasses);
query.whereMatches("language", manager.getLanguage());
query.setLimit(1000);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(final List<ParseObject> list, final ParseException e) { new HelpBackground(fragment, objects, convertToHashMap(list)).execute(); }
});
}
void getNotesTranslation(final Help help, final List<ParseObject> objects) {
ArrayList<String> queryObjects = new ArrayList<>();
for (ParseObject object : objects) queryObjects.add(object.getObjectId());
ParseQuery<ParseObject> query = new ParseQuery<>("Translation");
query.whereContainedIn("sourceObjectId", queryObjects);
query.whereMatches("sourceObjectClass", "HelpNote") ;
query.whereMatches("language", manager.getLanguage());
query.setLimit(1000);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(final List<ParseObject> list, final ParseException e) { new NotesBackground(activity, objects, convertToHashMap(list)).execute(); } });
}
void getOrganizationsTranslation(final Fragment fragment, final List<ParseObject> objects) {
ArrayList<String> queryClasses = new ArrayList<>();
queryClasses.add("Organization");
queryClasses.add("HelpCategory");
ParseQuery<ParseObject> query = new ParseQuery<>("Translation");
query.whereContainedIn("sourceObjectClass", queryClasses);
query.whereMatches("language", manager.getLanguage());
query.setLimit(1000);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(final List<ParseObject> list, final ParseException e) { new OrganizationBackground(fragment, objects, convertToHashMap(list)).execute(); } });
}
private HashMap<String, HashMap<String, ParseObject>> convertToHashMap(List<ParseObject> list) {
HashMap<String, HashMap<String, ParseObject>> translations = new HashMap<>();
for (ParseObject translation : list) {
HashMap<String, ParseObject> objectValue = translations.get(translation.getString("sourceObjectId"));
if (objectValue != null) objectValue.put(translation.getString("sourceObjectProperty"), translation);
else objectValue = new HashMap<>(); objectValue.put(translation.getString("sourceObjectProperty"), translation);
translations.put(translation.getString("sourceObjectId"), objectValue);
} return translations;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment