package cz.habarta.typescript.generator.emitter; import cz.habarta.typescript.generator.compiler.EnumKind; import java.util.*; public class TsModel { private final List<TsBeanModel> beans; private final List<TsEnumModel<?>> enums; private final List<TsAliasModel> typeAliases; private final List<TsHelper> helpers; public TsModel() { this (new ArrayList<TsBeanModel>(), new ArrayList<TsEnumModel<?>>(), new ArrayList<TsAliasModel>(), new ArrayList<TsHelper>()); } public TsModel(List<TsBeanModel> beans, List<TsEnumModel<?>> enums, List<TsAliasModel> typeAliases, List<TsHelper> helpers) { if (beans == null) throw new NullPointerException(); if (enums == null) throw new NullPointerException(); if (typeAliases == null) throw new NullPointerException(); this.beans = beans; this.enums = enums; this.typeAliases = typeAliases; this.helpers = helpers; } public List<TsBeanModel> getBeans() { return beans; } public TsBeanModel getBean(Class<?> origin) { if (origin != null) { for (TsBeanModel bean : beans) { if (Objects.equals(bean.getOrigin(), origin)) { return bean; } } } return null; } public TsModel setBeans(List<TsBeanModel> beans) { return new TsModel(beans, enums, typeAliases, helpers); } public List<TsEnumModel<?>> getEnums() { return enums; } @SuppressWarnings("unchecked") public <T> List<TsEnumModel<T>> getEnums(EnumKind<T> enumKind) { final List<TsEnumModel<T>> result = new ArrayList<>(); for (TsEnumModel<?> enumModel : enums) { if (enumModel.getKind() == enumKind) { result.add((TsEnumModel<T>) enumModel); } } return result; } public TsModel setEnums(List<TsEnumModel<?>> enums) { return new TsModel(beans, enums, typeAliases, helpers); } public List<TsAliasModel> getTypeAliases() { return typeAliases; } public TsAliasModel getTypeAlias(Class<?> origin) { if (origin != null) { for (TsAliasModel alias : typeAliases) { if (Objects.equals(alias.getOrigin(), origin)) { return alias; } } } return null; } public TsModel setTypeAliases(List<TsAliasModel> typeAliases) { return new TsModel(beans, enums, typeAliases, helpers); } public List<TsHelper> getHelpers() { return helpers; } }