I am trying to upload file to Parse cloud.
final ParseFile parseFile = new ParseFile("somefile.png", data);
parseFile.saveInBackground(new SaveCallback() {
#Override
public void done(ParseException e) {
if (e == null){
ParseObject parseObject = new ParseObject("photo");
parseObject.setObjectId("someId");
parseObject.put("photo1", parseFile);
parseFile.saveInBackground(new SaveCallback() {
#Override
public void done(ParseException e) {
if (e==null){
Log.d(TAG, "Save done");
} else {
Log.d(TAG, "ex" + e.getMessage());
}
}
});
} else {
Log.d("USER", "file save ex" + e.getMessage());
}
}
});
This will run and show successfully and show "Save done" log. But when i go to Parse dashboard i don't see anything changing in data.
I tried to retrieve object:
ParseQuery<ParseObject> query = ParseQuery.getQuery("photo");
query.getInBackground("someId", new GetCallback<ParseObject>() {
#Override
public void done(ParseObject object, ParseException e) {
if (e == null){
Log.d("USER", "OK");
} else {
Log.d("USER", "ex" + e.getMessage());
}
}
});
But i get ParseException: no results found for query.
Looks like you are saving the parseFile twice and forgetting to save the parse object that you placed the file in.
change this
parseFile.saveInBackground(new SaveCallback() {
#Override
public void done(ParseException e) {
if (e==null){
Log.d(TAG, "Save done");
} else {
Log.d(TAG, "ex" + e.getMessage());
}
}
});
to this
parseObject.saveInBackground(new SaveCallback() {
#Override
public void done(ParseException e) {
if (e==null){
Log.d(TAG, "Save done");
} else {
Log.d(TAG, "ex" + e.getMessage());
}
}
});
I think that you would to do something like this:
// Create the ParseFile
ParseFile parseFile = new ParseFile("somefile.png", data);
file.saveInBackground();
ParseObject imgupload = new ParseObject("photo");
imgupload.put("ImageName", "somefile");
imgupload.put("photo1", parseFile);
imgupload.saveInBackground();
So, your query:
ParseQuery<ParseObject> query = ParseQuery.getQuery("photo");
query.whereEqualTo("ImageName", "somefile");
query.findInBackground(new FindCallback <ParseObject>() {
#Override
public void done(ParseObject object, ParseException e) {
if (e == null){
Log.d("USER", "OK");
} else {
Log.d("USER", "ex" + e.getMessage());
}
}
});
Related
I am using parse frame work in android, I am updating user object in that but I update that old data is replaced with new data here my code is . How to resolve it any one help me solve out it.
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("objectId", currentUser.getObjectId());
query.findInBackground(new FindCallback<ParseUser>() {
#Override
public void done(List<ParseUser> objects, ParseException e) {
currentUser.put("forbiddenWords", wordArray);
currentUser.saveInBackground(new SaveCallback() {
#Override
public void done(ParseException e) {
hideProgressDialog();
if (e == null) {
Snackbar.make(parentView, R.string.string_setting_chnaged, Snackbar.LENGTH_LONG).show();
} else {
e.printStackTrace();
}
}
});
}
});
I guess you wanna update some value of your current user. Try this code
ParseUser user = ParseUser.getCurrentUser();
user.put("forbiddenWords", wordArray);
user.saveInBackground(new SaveCallback() {
#Override
public void done(ParseException e) {
hideProgressDialog();
if (e == null) {
Snackbar.make(parentView, R.string.string_setting_chnaged, Snackbar.LENGTH_LONG).show();
} else {
e.printStackTrace();
}
}
});
i try to retrieve relation from an object. but i get an error (This query has an outstanding network connection. You have to wait until it's done.).
I tried everything, but i get this error.
public void Member() {
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(
"PrivateDialog");
try {
mFriendsRelation = query.get(relationid).getRelation("Member");
} catch (ParseException e1) {
e1.printStackTrace();
}
query.findInBackground(new FindCallback<ParseObject>() {
#Override
public void done(List<ParseObject> objects, ParseException e) {
mFriendsRelation.getQuery().findInBackground(new FindCallback<ParseUser>() {
#Override
public void done(List<ParseUser> friends, ParseException e) {
if (e == null) {
mFriends = friends;
if (member.getAdapter() == null) {
member.setAdapter(new MemberAdapter(member.getContext(), mFriends, R.layout.member_group_item));
member.setHasFixedSize(true);
member.setLayoutManager(new LinearLayoutManager(GroupDialogActivity.this));
member.setItemAnimator(new DefaultItemAnimator());
} else {
// refill the adapter!
Log.i("Refill", "todo");
}
} else {
Log.e("TAG", e.getMessage());
}
}
});
}
});
}
With the code I am using, the compiler doesn't make it past the first if statement and returns the message "The object was not found ... ". I am trying to download an image from parse.com and place it in an imageView. Attached is my code, the schema for parse class and my XML layout.
final ParseImageView mImage = (ParseImageView) findViewById(R.id.image);
ParseQuery<ParseObject> query = new ParseQuery<>("Appetizers");
query.addAscendingOrder("appetizer");
query.getInBackground("imageFiles", new GetCallback<ParseObject>() {
#Override
public void done(ParseObject object, com.parse.ParseException e) {
if (object == null) {
Log.d("test", "The object was not found...");
} else {
Log.d("test", "Retrieved the object.");
final ParseFile fileObject = (ParseFile) object.get("imageFiles");
fileObject.getDataInBackground(new GetDataCallback() {
public void done(byte[] data, ParseException e) {
if (e == null) {
Log.d("test", "We've got data in data.");
// use data for something
Bitmap bmp = BitmapFactory.decodeByteArray(data, 0,data.length);
mImage.setImageBitmap(bmp);
} else {
Log.d("test", "There was a problem downloading the data.");
}
}
});
}
}
});
try on this way.
i have change few changes in your existing code like...
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("Appetizers");
query.addAscendingOrder("appetizer");
query.findInBackground(new FindCallback<ParseObject>() {
#Override
public void done(List<ParseObject> objects, ParseException e) {
// TODO Auto-generated method stub
if (e == null) {
// success
for (ParseObject parseObject : objects) {
ParseFile fileObject = (ParseFile) parseObject.get("imageFiles");
Log.d("test", "get your image ... " + fileObject.getUrl());
}
} else {
// fail
Log.d("test", "error Message... " + e.getMessage());
}
}
});
In the sending class:
ParseObject po = mAppetizers.get(position); // get position
String ID = po.getObjectId().toString();
Intent intent = new Intent(Appetizer.this, AppetizerRecipe.class);
intent.putExtra("ID", ID);
startActivity(intent);
In the receiver's class:
final ParseImageView mImage = (ParseImageView) findViewById(R.id.image);
String ID = getIntent().getStringExtra("ID");
ParseQuery<ParseObject> getimage = new ParseQuery<>("Appetizers");
getimage.addAscendingOrder("appetizer");
getimage.whereEqualTo("ID", ID);
Log.d("AppetizerRecipe2", "object: " + ID);
getimage.getInBackground(ID, new GetCallback<ParseObject>() {
#Override
public void done(ParseObject object, ParseException e) {
if (e == null) {
Log.v("what is e?", "e = " + e);
// success
final ParseFile fileObject = (ParseFile)object.get("imageFiles");
fileObject.getDataInBackground(new GetDataCallback() {
public void done(byte[] data, ParseException e) {
if (e == null) {
Log.d("test", "We've got data in data.");
// use data for something
Log.d("test", "Get your image..." + fileObject.getUrl());
Picasso.with(getBaseContext()).load(fileObject.getUrl()).placeholder
(R.drawable.ic_launcher).into(mImage);
} else {
Log.d("test", "There was a problem downloading the data.");
}
}
});
} else {
// fail
Log.d("test", "Error Message..." + e.getMessage());
}
}
});
I have an object at parse.com in the class Grillen with data.
Now I want to make it such that if I click a button it adds to the row with the same name as selected in a spinner, and it updates the columns Betrag and Rechnung. I tried the following code but it doesn't work.
public void createRechnung(View v) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen")
// Retrieve the object by id
query.getInBackground(String.valueOf(mNameInput), new GetCallback<ParseObject>() {
public void done(ParseObject Grillen, ParseException e) {
if (e == null) {
Grillen.put("Betrag", mBetragInput);
Grillen.put("Rechnung", false);
Grillen.saveInBackground();
}
}
});
}
Use this code to check what's going wrong
ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen");
// Retrieve the object by id
query.getInBackground(String.valueOf(mNameInput), new GetCallback<ParseObject>() {
public void done(ParseObject Grillen, ParseException eg) {
if (eg == null) {
Grillen.put("Betrag", mBetragInput);
Grillen.put("Rechnung", false);
Grillen.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
//success, saved!
Log.d("MyApp", "Successfully saved!");
} else {
//fail to save!
e.printStackTrace();
}
}
});
}else {
//fail to get!!
eg.printStackTrace();
}
}
});
If you successfully save, then your exception is null, if it didn't you will know why via stacktrace. I suggest running this code and letting the execution flow of the app be based on whether or not the save was successful or not.
Read this: getInBackground(String, callback) You must pass the objectId of the object you are trying to get, rather than the name. Make sure you are getting by ObjectID and not name as it appears you are doing. ObjectId looks like a random string and should be found in your database by looking online on Parse
Do this instead:
ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen");
query.whereEqualTo("name", String.valueOf(mNameInput));
// Retrieve the object by id
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException eg) {
if (eg == null && objects.size() > 0) {
ParseObject Grillen = objects.get(0);
Grillen.put("Betrag", mBetragInput);
Grillen.put("Rechnung", false);
Grillen.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
//success, saved!
Log.d("MyApp", "Successfully saved!");
} else {
//fail to save!
e.printStackTrace();
}
}
});
}else {
//fail to get!!
eg.printStackTrace();
}
}
});
Note: I have no idea what the column name is for the 'name' attribute of Grillen objects, so you might need to change this to whatever you call the name column for that object.
Okay i have get the Spinner to work for the name but not the EditText
here is some part of the codes
public class RechnungActivity extends AppCompatActivity {
private EditText mBetragInput;
private Spinner mNameInput;
private String mName;
private String mBetrag;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rechnung);
ParseObject.registerSubclass(Grillen.class);
mBetragInput = (EditText) findViewById(R.id.Sonstiges);
mNameInput = (Spinner) findViewById(R.id.Name);
mName = mNameInput.getSelectedItem().toString();
mBetrag = mBetragInput.getText().toString();
}
public void createRechnung(View v) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Grillen");
query.whereEqualTo("name", mName);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> objects, ParseException eg) {
if (eg == null && objects.size() > 0) {
mBetrag = mBetragInput.getText().toString();
ParseObject Grillen = objects.get(0);
Grillen.put("Betrag", mBetrag);
Grillen.put("Rechnung", true);
Grillen.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
//success, saved!
Log.d("MyApp", "Successfully saved!");
} else {
//fail to save!
e.printStackTrace();
}
}
});
}else {
//fail to get!!
eg.printStackTrace();
}
}
});
}
I have a list of objectId where I am trying to retrieve another list in another class where the pointer value equals the objectId of the current parseObject.
I realised that I am comparing a string "objectId" to a pointer "threadPointer" so can someone help me with the query to retrieve a list of items from a class if the objectId equals the threadPointer _Pointer value
public void retrieveThreadListStoreInDB()
{
ParseQuery<ParseObject> query = ParseQuery.getQuery("Threads");
query.include("postedBy");
query.findInBackground(new FindCallback<ParseObject>() {
#Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
// Query is successful now lets load data from parse
ParseObject.pinAllInBackground((List<ParseObject>) list, new SaveCallback() {
#Override
public void done(ParseException e) {
if (e == null) {
if (!isFinishing()) {
// TODO : Notify to refresh data
}
} else {
Log.d("DEBUG", "ERROR PINNING DATA WITH EXCEPTION : " + e);
}
}
});
}
}
});
}
public void retrievePostsListStoreInDB()
{
ParseQuery<ParseObject> query = ParseQuery.getQuery("Posts");
query.include("postedBy");
query.include("threadPointer");
query.findInBackground(new FindCallback<ParseObject>() {
#Override
public void done(final List<ParseObject> list, ParseException e) {
if (e == null) {
// Query is successful now lets load data from parse
ParseObject.pinAllInBackground((List<ParseObject>) list, new SaveCallback() {
#Override
public void done(ParseException e) {
if (e == null) {
if (!isFinishing()) {
// TODO : Notify to refresh data
Log.d("DEBUG: ","Finished retrieval");
Log.d("DEBUG", list.toString());
ParseObject object = (ParseObject)list.get(1).get("threadPointer");
Log.d("DEBUG_THREAD_POINTER", object.getObjectId());
}
} else {
Log.d("DEBUG", "ERROR PINNING DATA WITH EXCEPTION : " + e);
}
}
});
}
}
});
}
This is where I am retrieving the ThreadList from local db
public void retrieveThreadList(){
List<ParseObject> parseObjectList = new ArrayList<ParseObject>();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Threads");
query.orderByDescending("updatedAt");
query.fromLocalDatastore();
// Data retrieval was successfull
try {
parseObjectList= query.find();
} catch (ParseException e) {
e.printStackTrace();
}
for (ParseObject parseObject : parseObjectList) {
String title = (String) parseObject.get("threadTitle");
ParseUser parseUser = (ParseUser) parseObject.get("postedBy");
String profilePictureUrl="local";
try {
profilePictureUrl = ((ParseFile) parseUser.get("profilePicture")).getUrl();
}catch (Exception exception)
{
Log.d("DEBUG_FB","profilePicture not retrieved");
}
String threadObjectId = parseObject.getObjectId();
Log.d("DEBUG_FB_THREAD_ID",threadObjectId);
ParseQuery parseQueryToRetrievePosts = ParseQuery.getQuery("Posts");
parseQueryToRetrievePosts.fromLocalDatastore();
//----****** NEED HELP HERE ******----
parseQueryToRetrievePosts.whereEqualTo("threadPointer",parseObject.getObjectId());
try {
List<ParseObject> postsList = parseQueryToRetrievePosts.find();
Log.d("DEBUG_FB_POSTS_LIST",postsList.toString());
} catch (ParseException e) {
e.printStackTrace();
}
/* To retrieve data over the network --- THIS WORKS WELL BUT I DONT WANT A NETWORK CALL
ParseRelation <ParseObject> posts = parseObject.getRelation("postMessage");
ParseQuery postsQuery = posts.getQuery();
List<ParseObject> postsList = new ArrayList();
try {
postsList=postsQuery.find();
for (ParseObject parseObject1: postsList)
{
String postMessage = (String)parseObject1.get("postMessage");
Log.d("DEBUG_FB_MSG", postMessage);
}
Log.d("DEBUG_FB_POSTS", postsList.toString());
}catch (Exception e)
{
}
*/
threadModelStore threadObject = new threadModelStore(title,profilePictureUrl);
Log.d("DEBUG_FB", profilePictureUrl);
Log.d("DEBUG_FB", title);
threadItemList.add(threadObject);
}
Sir my scenario is I have these classes
THREADS(Class) which has POSTS(RELATION TO _POSTS) class I want to retrieve the related posts of a particular thread. I was unable to pin
relations to local data store please let me know if there is a way to
do so ? -- (UNSOLVED)
So what I want to do is to compare the thread pointer in the POSTS
class and retrieve the related posts. For this I needed to compare a
string object id to pointer field _ThreadPointer in POSTS Class
Suggest a possible solution -- SOLVED BY ( VED ).
ParseObject threadPointer=ParseObject.createWithoutData("Pointer_class_Name", "pointer_object_id");
ParseQuery<ParseObject> query=ParseQuery.getQuery("className");
query.whereEqualTo("_Pointer", threadPointer);
query.include("_Pointer");
query.findInBackground(new FindCallback<ParseObject>() {
#Override
public void done(List<ParseObject> listCommunity, ParseException e) {
// TODO Auto-generated method stub
Log.d(TAG, "done");
if(e==null){
// access your data
}else{
// Error in retrieving data
}