import com.liferay.portal.kernel.util.ParamUtil; //導入方法依賴的package包/類
protected Measurement updateMeasurement(ActionRequest actionRequest) throws Exception {
long measurementId = ParamUtil.getLong(actionRequest, "measurementId");
ServiceContext serviceContext = ServiceContextFactory.getInstance(Measurement.class.getName(), actionRequest);
PortletPreferences portletPreferences = actionRequest.getPreferences();
String jsonSchema = portletPreferences.getValue("jsonSchema", "{}");
com.liferay.portal.kernel.json.JSONObject jsonSchemaObj = JSONFactoryUtil.createJSONObject(jsonSchema);
Iterator keys = null;
if (jsonSchemaObj != null) {
com.liferay.portal.kernel.json.JSONObject itemsObj = jsonSchemaObj.getJSONObject("items");
if (itemsObj != null) {
com.liferay.portal.kernel.json.JSONObject propertiesObj = itemsObj.getJSONObject("properties");
keys = propertiesObj.keys();
}
}
String data = null;
String id = null;
String name = null;
Date timestamp = null;
String unit = null;
String value = null;
DateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd'T'HH:mm:ss");
if (keys != null) {
com.liferay.portal.kernel.json.JSONObject dataObj = JSONFactoryUtil.createJSONObject();
while (keys.hasNext()) {
String key = keys.next();
// TODO: json fields must be prefixed with json-namespace
String val = actionRequest.getParameter(key);
dataObj.put(key, val);
}
data = dataObj.toJSONString();
} else {
data = ParamUtil.getString(actionRequest, DataManagerField.DATA);
id = ParamUtil.getString(actionRequest, DataManagerField.ID);
name = ParamUtil.getString(actionRequest, DataManagerField.NAME);
timestamp = ParamUtil.getDate(actionRequest, DataManagerField.TIMESTAMP, dateFormat);
unit = ParamUtil.getString(actionRequest, DataManagerField.UNIT);
value = ParamUtil.getString(actionRequest, DataManagerField.VALUE);
}
// TODO: validate data against configured JSON-schema
Measurement measurement = null;
if (measurementId <= 0) {
// Add measurement
measurement = _measurementService.addMeasurement(data, id, name, timestamp, unit, value, serviceContext);
} else {
// Update measurement
measurement = _measurementService.updateMeasurement(measurementId, data, id, name, timestamp, unit, value,
serviceContext);
}
return measurement;
}