package oracle.demo.oow.bd.to; import java.io.IOException; import org.codehaus.jackson.node.ObjectNode; import org.codehaus.jackson.JsonProcessingException; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.node.JsonNodeFactory; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import oracle.demo.oow.bd.constant.JsonConstant; import oracle.demo.oow.bd.util.StringUtil; import org.codehaus.jackson.node.ArrayNode; public class CastTO extends BaseTO implements Comparable<CastTO> { private int id = -1; private String name = null; private int order; private String character; private List<CastMovieTO> castMovieList = new ArrayList<CastMovieTO>(); /** For SerDe purpose JSON object is used to write data into json text and * from json text to CastTO **/ private ObjectNode castNode = null; public CastTO() { super(); } public CastTO(String castJsonTxt) { super(); try { castNode = super.parseJson(castJsonTxt); } catch (JsonProcessingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } this.setCastJson(castNode); } public CastTO(ObjectNode castNode) { super(); this.setCastJson(castNode); } public void setCastJson(ObjectNode castNode) { this.castNode = castNode; CastMovieTO castMovieTO = null; ObjectNode castMovieNode = null; String castName = castNode.get(JsonConstant.NAME).getTextValue(); int castId = castNode.get(JsonConstant.ID).getIntValue(); try { Iterator iter = castNode.get(JsonConstant.MOVIES).iterator(); //Get all the Actors from the array while(iter.hasNext()) { castMovieNode = (ObjectNode)iter.next(); castMovieTO = new CastMovieTO(castMovieNode); //Add actorTO to the actorList this.addCastMovieTO(castMovieTO); } //EOF for } catch (Exception e) { //if Movie tag do not exist then order & character should not exist this.order = castNode.get(JsonConstant.ORDER).getIntValue(); this.character = castNode.get(JsonConstant.CHARACTER).getTextValue(); } this.setId(castId); this.setName(castName); /* System.out.println(this.getOrder() + " " + this.getId() + " " + this.getName() + " " + this.getCharacter() + " " + this.getProfilePath()); */ } //setCastJson public void setId(int id) { this.id = id; } public int getId() { return id; } public void setName(String name) { this.name = name; } public String getName() { return name; } public ObjectNode geCastJson() { this.castNode = super.getObjectNode(); ObjectNode castMovieNode = null; ArrayNode movieArray = super.getArrayNode(); castNode.put(JsonConstant.ID, this.getId()); castNode.put(JsonConstant.NAME, this.getName()); if (StringUtil.isNotEmpty(this.character) && this.order > 0) { castNode.put(JsonConstant.ORDER, this.getOrder()); castNode.put(JsonConstant.CHARACTER, this.getCharacter()); } else { for (CastMovieTO castMovieTO : this.getCastMovieList()) { castMovieNode = super.getObjectNode(); castMovieNode.put(JsonConstant.ID, castMovieTO.getId()); castMovieNode.put(JsonConstant.CHARACTER, castMovieTO.getCharacter()); castMovieNode.put(JsonConstant.ORDER, castMovieTO.getOrder()); movieArray.add(castMovieNode); } //EOF for //set cast to this object castNode.put(JsonConstant.MOVIES, movieArray); } return castNode; } public String getJsonTxt() { return this.geCastJson().toString(); } public void setCastMovieList(List<CastMovieTO> castMovieList) { this.castMovieList = castMovieList; } public List<CastMovieTO> getCastMovieList() { return this.castMovieList; } public void addCastMovieTO(CastMovieTO castMovieTO) { this.castMovieList.add(castMovieTO); } public void setCharacter(String character) { this.character = character; } public String getCharacter() { return character; } public void setOrder(int order) { this.order = order; } public int getOrder() { return order; } public int compareTo(CastTO castTO) { int order = 0; int thisOrder = 0; if (castTO.getOrder() > 0 && this.getOrder() > 0) { order = castTO.getOrder(); thisOrder = this.getOrder(); } //assending order return (thisOrder - order); } //compareTo public void setCastMovieTO(CastMovieTO castMovieTO) { this.castMovieList = new ArrayList<CastMovieTO>(); this.castMovieList.add(castMovieTO); } public static void main(String[] args) { //String castJsonTxt ="{\"id\":54768,\"name\":\"Turo Pajala\",\"character\":\"Taisto Olavi Kasurinen\",\"order\":0,\"profile_path\":null}"; CastTO castTO = new CastTO(); CastMovieTO castMovieTO = new CastMovieTO(); castTO.setId(12); castTO.setName("Me and I"); castMovieTO.setCharacter("Lead"); castMovieTO.setId(1001); castMovieTO.setOrder(1); castTO.addCastMovieTO(castMovieTO); //ADD ONE MORE MOVIE castMovieTO = new CastMovieTO(); castMovieTO.setCharacter("Second movie"); castMovieTO.setId(100123); castMovieTO.setOrder(-1); castTO.addCastMovieTO(castMovieTO); String jsonTxt = castTO.getJsonTxt(); System.out.println(jsonTxt); } //main @Override public String toJsonString() { // TODO Implement this method return getJsonTxt(); } }