package im.actor.generator.scheme; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * Created by ex3ndr on 14.11.14. */ public class SchemeDefinition { private String version; private String javaPackage; private String scalaPackage; private List<SchemeSection> sections = new ArrayList<SchemeSection>(); private HashMap<String, SchemeType> aliases = new HashMap<String, SchemeType>(); public HashMap<String, SchemeType> getAliases() { return aliases; } public List<SchemeSection> getSections() { return sections; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getJavaPackage() { return javaPackage; } public void setJavaPackage(String javaPackage) { this.javaPackage = javaPackage; } public String getScalaPackage() { return scalaPackage; } public void setScalaPackage(String scalaPackage) { this.scalaPackage = scalaPackage; } public List<SchemeRpc> getAllRpc() { List<SchemeRpc> res = new ArrayList<SchemeRpc>(); for (SchemeSection section : sections) { res.addAll(section.getAllRpc()); } return res; } public SchemeTrait getTrait(String name) { for (SchemeTrait trait : getAllTraits()) { if (trait.getName().equals(name)) { return trait; } } throw new RuntimeException("Unable to find trait"); } public List<SchemeStruct> getTraitedStructs(String name) { List<SchemeStruct> res = new ArrayList<SchemeStruct>(); for (SchemeStruct s : getAllStructs()) { if (s.getTraitRef() != null && s.getTraitRef().getTrait().equals(name)) { res.add(s); } } return res; } public List<SchemeTrait> getAllTraits() { List<SchemeTrait> res = new ArrayList<SchemeTrait>(); for (SchemeSection section : sections) { res.addAll(section.getAllTraits()); } return res; } public List<SchemeStruct> getAllStructs() { List<SchemeStruct> res = new ArrayList<SchemeStruct>(); for (SchemeSection section : sections) { res.addAll(section.getAllStructs()); } return res; } public List<SchemeUpdate> getAllUpdates() { ArrayList<SchemeUpdate> res = new ArrayList<SchemeUpdate>(); for (SchemeSection section : sections) { res.addAll(section.getAllUpdates()); } return res; } public List<SchemeUpdateBox> getAllUpdateBoxes() { ArrayList<SchemeUpdateBox> res = new ArrayList<SchemeUpdateBox>(); for (SchemeSection section : sections) { res.addAll(section.getAllUpdateBoxes()); } return res; } public List<SchemeEnum> getAllEnums() { ArrayList<SchemeEnum> res = new ArrayList<SchemeEnum>(); for (SchemeSection section : sections) { res.addAll(section.getAllEnums()); } return res; } public List<SchemeBaseResponse> getAllResponses() { ArrayList<SchemeBaseResponse> res = new ArrayList<SchemeBaseResponse>(); for (SchemeSection section : sections) { res.addAll(section.getAllResponses()); } return res; } }