/**
* Copyright 2012 cubiculus.com
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.coroptis.cubiculus.rest.mappers;
import java.util.ArrayList;
import com.coroptis.cubiculus.rest.model.AjLegoBox;
import com.coroptis.cubiculus.rest.model.AjPageable;
import com.sdicons.json.mapper.JSONMapper;
import com.sdicons.json.mapper.MapperException;
import com.sdicons.json.mapper.helper.SimpleMapperHelper;
import com.sdicons.json.mapper.helper.impl.ObjectMapper;
import com.sdicons.json.model.JSONArray;
import com.sdicons.json.model.JSONObject;
import com.sdicons.json.model.JSONValue;
public class JsonMapperAjPageable implements SimpleMapperHelper {
@Override
public Class getHelpedClass() {
return AjPageable.class;
}
@Override
public Object toJava(JSONValue aValue, Class aRequestedClass) throws MapperException {
if (aValue.isObject()) {
final JSONObject jsonObject = (JSONObject) aValue;
final AjPageable out = new AjPageable();
out.setAsc(Helper.getBooleanRequired(jsonObject, "asc",
"AjPageable property asc was not found in json data"));
out.setBase(Helper.getIntRequired(jsonObject, "base",
"AjPageable property base was not found in json data"));
out.setCurrentPageNo(Helper.getIntRequired(jsonObject, "currentPageNo",
"AjPageable property currentPageNo was not found in json data"));
out.setOrderBy(Helper.getStringRequired(jsonObject, "orderBy",
"AjPageable property orderBy was not found in json data"));
out.setRowCount(Helper.getIntRequired(jsonObject, "rowCount",
"AjPageable property rowCount was not found in json data"));
out.setRowPerPage(Helper.getIntRequired(jsonObject, "rowPerPage",
"AjPageable property rowPerPage was not found in json data"));
JSONValue list = jsonObject.get("currentPage");
if (list == null) {
throw new MapperException(
"AjPageable property currentPage was not found in json data");
} else {
out.setCurrentPage(new ArrayList<AjLegoBox>());
JSONArray array = (JSONArray) list;
for (JSONValue jsonValue : array.getValue()) {
out.getCurrentPage().add(
(AjLegoBox) JSONMapper.toJava(jsonValue, AjLegoBox.class));
}
}
return out;
}
throw new MapperException("AjPropertyValue cannot map: " + aValue.getClass().getName());
}
@Override
public JSONValue toJSON(Object aPojo) throws MapperException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.toJSON(aPojo);
}
}