001package com.box.sdkgen.schemas.skillcard; 002 003import com.box.sdkgen.internal.OneOfFour; 004import com.box.sdkgen.schemas.keywordskillcard.KeywordSkillCard; 005import com.box.sdkgen.schemas.statusskillcard.StatusSkillCard; 006import com.box.sdkgen.schemas.timelineskillcard.TimelineSkillCard; 007import com.box.sdkgen.schemas.transcriptskillcard.TranscriptSkillCard; 008import com.box.sdkgen.serialization.json.EnumWrapper; 009import com.box.sdkgen.serialization.json.JsonManager; 010import com.fasterxml.jackson.core.JsonParser; 011import com.fasterxml.jackson.databind.DeserializationContext; 012import com.fasterxml.jackson.databind.JsonDeserializer; 013import com.fasterxml.jackson.databind.JsonMappingException; 014import com.fasterxml.jackson.databind.JsonNode; 015import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 016import com.fasterxml.jackson.databind.annotation.JsonSerialize; 017import java.io.IOException; 018import java.time.OffsetDateTime; 019 020@JsonDeserialize(using = SkillCard.SkillCardDeserializer.class) 021@JsonSerialize(using = OneOfFour.OneOfFourSerializer.class) 022public class SkillCard 023 extends OneOfFour<KeywordSkillCard, TimelineSkillCard, TranscriptSkillCard, StatusSkillCard> { 024 025 protected final OffsetDateTime createdAt; 026 027 protected final String type; 028 029 protected final String skillCardType; 030 031 public SkillCard(KeywordSkillCard keywordSkillCard) { 032 super(keywordSkillCard, null, null, null); 033 this.createdAt = keywordSkillCard.getCreatedAt(); 034 this.type = EnumWrapper.convertToString(keywordSkillCard.getType()); 035 this.skillCardType = EnumWrapper.convertToString(keywordSkillCard.getSkillCardType()); 036 } 037 038 public SkillCard(TimelineSkillCard timelineSkillCard) { 039 super(null, timelineSkillCard, null, null); 040 this.createdAt = timelineSkillCard.getCreatedAt(); 041 this.type = EnumWrapper.convertToString(timelineSkillCard.getType()); 042 this.skillCardType = EnumWrapper.convertToString(timelineSkillCard.getSkillCardType()); 043 } 044 045 public SkillCard(TranscriptSkillCard transcriptSkillCard) { 046 super(null, null, transcriptSkillCard, null); 047 this.createdAt = transcriptSkillCard.getCreatedAt(); 048 this.type = EnumWrapper.convertToString(transcriptSkillCard.getType()); 049 this.skillCardType = EnumWrapper.convertToString(transcriptSkillCard.getSkillCardType()); 050 } 051 052 public SkillCard(StatusSkillCard statusSkillCard) { 053 super(null, null, null, statusSkillCard); 054 this.createdAt = statusSkillCard.getCreatedAt(); 055 this.type = EnumWrapper.convertToString(statusSkillCard.getType()); 056 this.skillCardType = EnumWrapper.convertToString(statusSkillCard.getSkillCardType()); 057 } 058 059 public boolean isKeywordSkillCard() { 060 return value0 != null; 061 } 062 063 public KeywordSkillCard getKeywordSkillCard() { 064 return value0; 065 } 066 067 public boolean isTimelineSkillCard() { 068 return value1 != null; 069 } 070 071 public TimelineSkillCard getTimelineSkillCard() { 072 return value1; 073 } 074 075 public boolean isTranscriptSkillCard() { 076 return value2 != null; 077 } 078 079 public TranscriptSkillCard getTranscriptSkillCard() { 080 return value2; 081 } 082 083 public boolean isStatusSkillCard() { 084 return value3 != null; 085 } 086 087 public StatusSkillCard getStatusSkillCard() { 088 return value3; 089 } 090 091 public OffsetDateTime getCreatedAt() { 092 return createdAt; 093 } 094 095 public String getType() { 096 return type; 097 } 098 099 public String getSkillCardType() { 100 return skillCardType; 101 } 102 103 static class SkillCardDeserializer extends JsonDeserializer<SkillCard> { 104 105 public SkillCardDeserializer() { 106 super(); 107 } 108 109 @Override 110 public SkillCard deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { 111 JsonNode node = JsonManager.jsonToSerializedData(jp); 112 JsonNode discriminant0 = node.get("skill_card_type"); 113 if (!(discriminant0 == null)) { 114 switch (discriminant0.asText()) { 115 case "keyword": 116 return new SkillCard(JsonManager.deserialize(node, KeywordSkillCard.class)); 117 case "timeline": 118 return new SkillCard(JsonManager.deserialize(node, TimelineSkillCard.class)); 119 case "transcript": 120 return new SkillCard(JsonManager.deserialize(node, TranscriptSkillCard.class)); 121 case "status": 122 return new SkillCard(JsonManager.deserialize(node, StatusSkillCard.class)); 123 } 124 } 125 throw new JsonMappingException(jp, "Unable to deserialize SkillCard"); 126 } 127 } 128}