public EditResult UpdateFeatures(string datasourceName, string datasetName, List<Feature> targetFeatures)
{
EditResult editResult = new EditResult();
if (string.IsNullOrEmpty(datasourceName))
{
editResult.Succeed = false;
editResult.Message = string.Format(Resources.ParamIsNotNull, "datasourceName");
return editResult;
}
if (string.IsNullOrEmpty(datasetName))
{
editResult.Succeed = false;
editResult.Message = string.Format(Resources.ParamIsNotNull, "datasetName");
return editResult;
}
if (targetFeatures == null || targetFeatures.Count <= 0)
{
editResult.Succeed = false;
editResult.Message = string.Format(Resources.ParamIsNotNull, "targetFeatures");
return editResult;
}
else
{
int featureCount = targetFeatures.Count;
for (int i = 0; i < featureCount; i++)
{
if (targetFeatures[i].Id <= 0)
{
editResult.Succeed = false;
editResult.Message = string.Format(Resources.ParamIsInvalid, "Feature.Id");
return editResult;
}
else if (targetFeatures[i].Geometry != null)
{
targetFeatures[i].Geometry.Id = targetFeatures[i].Id;
}
if (targetFeatures[i].FieldNames == null)
{
targetFeatures[i].FieldNames = new string[] { };
}
if (targetFeatures[i].FieldValues == null)
{
targetFeatures[i].FieldValues = new string[] { };
}
}
}
string uri = string.Format("{0}/data/datasources/{1}/datasets/{2}/features.json?_method=PUT", this._serviceUrl,
datasourceName, datasetName);
string postData = JsonConvert.SerializeObject(targetFeatures);
string requestResultJson = string.Empty;
try
{
requestResultJson = SynchHttpRequest.GetRequestString(uri, postData);
editResult = JsonConvert.DeserializeObject<EditResult>(requestResultJson);
}
catch (ServiceException e)
{
editResult.Succeed = false;
editResult.Message = e.Message;
return editResult;
}
return editResult;
}