package com.socialize.entity;
import com.socialize.api.action.ShareType;
import com.socialize.log.SocializeLogger;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class PropagationInfoResponseFactory extends JSONFactory<PropagationInfoResponse> {
private SocializeLogger logger;
@Override
public Object instantiateObject(JSONObject object) {
return new PropagationInfoResponse();
}
@Override
protected void fromJSON(JSONObject from, PropagationInfoResponse to) throws JSONException {
JSONArray names = from.names();
if(names != null) {
int length = names.length();
for (int i = 0; i < length; i++) {
String name = names.get(i).toString().trim();
// Make sure the name is a valid network
try {
ShareType network = ShareType.valueOf(name.toUpperCase());
JSONObject jsonObject = getJSONObject(from, name);
if(jsonObject != null) {
DefaultPropagationInfo set = new DefaultPropagationInfo();
set.setAppUrl(getString(jsonObject, "application_url"));
set.setEntityUrl(getString(jsonObject, "entity_url"));
to.addUrlSet(network, set);
}
}
catch (Exception ignore) {
if(logger != null) {
logger.error("Invalid share type [" +
name +
"]");
}
}
}
}
}
@Override
protected void toJSON(PropagationInfoResponse from, JSONObject to) throws JSONException {
// not implemented
}
public void setLogger(SocializeLogger logger) {
this.logger = logger;
}
}